<?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>111417</bug_id>
          
          <creation_ts>2013-03-05 03:05:31 -0800</creation_ts>
          <short_desc>[V8] Add machinery for generating specialized bindings for the main world</short_desc>
          <delta_ts>2013-03-20 00:35:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>112443</dependson>
          <blocked>110874</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Marja Hölttä">marja</reporter>
          <assigned_to name="Marja Hölttä">marja</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dcarney</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jochen</cc>
    
    <cc>jsbell</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>847508</commentid>
    <comment_count>0</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-05 03:05:31 -0800</bug_when>
    <thetext>- Use the &quot;context type&quot; parameter added in bug 110875 to generate specialized &quot;main world&quot; versions of selected getters / setters / methods.
- The specialized versions will do a faster conversion instead of toV8Fast, because we don&apos;t need to &quot;are we in the main world or in an isolated world or a worker&quot; check.
- Add placeholders for deciding which specializations to create in CodeGeneratorV8.pm; leave it empty for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847561</commentid>
    <comment_count>1</comment_count>
      <attachid>191467</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-05 04:40:21 -0800</bug_when>
    <thetext>Created attachment 191467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847969</commentid>
    <comment_count>2</comment_count>
      <attachid>191467</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-05 13:02:30 -0800</bug_when>
    <thetext>Comment on attachment 191467
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:73
&gt; +my %specializedMainWorldBindings;
&gt; +# At the moment the hash map is empty. To fill it, add lines like this:
&gt; +# @{$specializedMainWorldBindings{&quot;Class&quot;}} = ({&quot;attributeName&quot; =&gt; 1}, {&quot;methodName&quot; =&gt; 1});

Why not have this be an IDL attribute?  [V8SpecializeForMainWorld] ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848280</commentid>
    <comment_count>3</comment_count>
      <attachid>191467</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-05 17:12:57 -0800</bug_when>
    <thetext>Comment on attachment 191467
Patch

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

I&apos;d recommend you split the patch into pieces. As a first step, how about just changing getters? When you&apos;re confident it works, you can enable it on setters and callbacks as well.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:73
&gt;&gt; +# @{$specializedMainWorldBindings{&quot;Class&quot;}} = ({&quot;attributeName&quot; =&gt; 1}, {&quot;methodName&quot; =&gt; 1});
&gt; 
&gt; Why not have this be an IDL attribute?  [V8SpecializeForMainWorld] ?

In my understanding, this hash map is just a temporary hack to proceed the work incrementally. In the near future, you&apos;ll be generating two object templates for all interfaces, right?

If so, please add a comment like &quot;FIXME: This is just a temporary hack to implement two ObjectTemplates for all interfaces. Once the work is completed, this should be removed.&quot;

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:596
&gt; +template&lt;class HolderContainer, class Wrappable&gt;
&gt; +inline v8::Handle&lt;v8::Value&gt; toV8InMainWorld(${nativeType}* impl, const HolderContainer&amp; container, Wrappable* wrappable)

toV8InMainWorld =&gt; toV8FastForMainWorld

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:600
&gt; +    v8::Handle&lt;v8::Object&gt; wrapper = DOMDataStore::getWrapperInMainWorld(impl);

Nit: getWrapperForMainWorld

(Nit: Sorry, last time I recommended worldTypeInMainWorld, but it looks like xxxForMainWorld is a naming convention in V8 binding.)

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:909
&gt; +    my $isMainWorldSpecialization = shift;

This could be $forMainWorldSuffix, so that you can pass &quot;ForMainWorld&quot; or &quot;&quot; (or omit the argument). Then call sites will become more readable.

The same comment for other parts of the patch.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:918
&gt; +    my $functionSuffix = &quot;&quot;;
&gt; +    if ($isMainWorldSpecialization) {
&gt; +        $functionSuffix = &quot;InMainWorld&quot;;
&gt; +    }

Then you can remove this.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:951
&gt; +    my $toV8FastFunc = &quot;toV8Fast&quot;;
&gt; +    my $functionSuffix = &quot;&quot;;
&gt; +    if ($isMainWorldSpecialization) {
&gt; +        $toV8FastFunc = &quot;toV8InMainWorld&quot;;
&gt; +        $functionSuffix = &quot;InMainWorld&quot;;
&gt; +    }

Once you rename toV8InMainWorld to toV8FastForMainWorld, you can remove $toV8FastFunc.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2832
&gt; +        GenerateNormalAttrGetter($attribute, $interface, 0);

This can be GenerateNormalAttrGetter($attribute, $interface).

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2838
&gt; +                GenerateNormalAttrGetter($attribute, $interface, 1);

This can be GenerateNormalAttrGetter($attribute, $interface, &quot;ForMainWorld&quot;).

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3065
&gt; +            # FIXME: how to deal with overloaded functions?
&gt; +            # Don&apos;t put any nonstandard functions into this table:

This is non-trivial. Let&apos;s care about callbacks in a follow-up patch. You can enable the feature on only getters, as a starting point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848485</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-05 22:50:40 -0800</bug_when>
    <thetext>&gt; &gt; Why not have this be an IDL attribute?  [V8SpecializeForMainWorld] ?
&gt; 
&gt; In my understanding, this hash map is just a temporary hack to proceed the work incrementally. In the near future, you&apos;ll be generating two object templates for all interfaces, right?
&gt; 
&gt; If so, please add a comment like &quot;FIXME: This is just a temporary hack to implement two ObjectTemplates for all interfaces. Once the work is completed, this should be removed.&quot;

Why not use an IDL attribute, even temporarily?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848494</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-05 23:04:42 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; &gt; Why not have this be an IDL attribute?  [V8SpecializeForMainWorld] ?
&gt; &gt; 
&gt; &gt; In my understanding, this hash map is just a temporary hack to proceed the work incrementally. In the near future, you&apos;ll be generating two object templates for all interfaces, right?
&gt; 
&gt; Why not use an IDL attribute, even temporarily?

Sounds reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850119</commentid>
    <comment_count>6</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-07 08:32:37 -0800</bug_when>
    <thetext>I&apos;m splitting this up, the first part is bug 111724.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855228</commentid>
    <comment_count>7</comment_count>
      <attachid>193131</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-14 08:58:32 -0700</bug_when>
    <thetext>Created attachment 193131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855231</commentid>
    <comment_count>8</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-14 09:02:38 -0700</bug_when>
    <thetext>The new patch generates bindings for getters and setters (not for callbacks).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855235</commentid>
    <comment_count>9</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-03-14 09:04:51 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; The new patch generates bindings for getters and setters (not for callbacks).

but since you didn&apos;t modify any idl, it&apos;s not actually doing that yet, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855246</commentid>
    <comment_count>10</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-14 09:19:28 -0700</bug_when>
    <thetext>It does. The code generator .pm just dummily generates custom versions for *everything* (except per-context attrs, didn&apos;t figure out how to do that).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855361</commentid>
    <comment_count>11</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-03-14 11:33:11 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; It does. The code generator .pm just dummily generates custom versions for *everything* (except per-context attrs, didn&apos;t figure out how to do that).

In that case, we should see some speed up on the perf tests, right?

Can you run the tests and post results?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855697</commentid>
    <comment_count>12</comment_count>
      <attachid>193131</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-14 22:28:26 -0700</bug_when>
    <thetext>Comment on attachment 193131
Patch

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

Looks great.

&gt; Source/WebCore/ChangeLog:10
&gt; +        The new specialized bindings will be faster, because they don&apos;t need to
&gt; +        do the &quot;main world, isolated world or a worker&quot; check, but can right
&gt; +        away assume that we&apos;re in the main world.

As jochen pointed out, you can measure the performance impact by using PerformanceTests/Bindings/first-child.html, which would be the most sensitive micro-benchmark to your change. Please paste the results here.

(Actually I won&apos;t be much surprised if you cannot observe any performance improvement. When I tried the optimization last time, I couldn&apos;t observe any perf win.)

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2799
&gt; +        if (!$attrExt-&gt;{&quot;V8EnabledPerContext&quot;}) {

Why do you want to exclude attributes with [V8EnabledPerContext]? (Either way you can fix it in a separate patch.)

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2809
&gt; +            if (!$attrExt-&gt;{&quot;V8EnabledPerContext&quot;}) {

Ditto.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3062
&gt; -    if (!${enable_function}())
&gt; +   if (!${enable_function}())

Nit: Drop this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855866</commentid>
    <comment_count>13</comment_count>
      <attachid>193274</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-15 03:44:08 -0700</bug_when>
    <thetext>Created attachment 193274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855867</commentid>
    <comment_count>14</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-15 03:45:19 -0700</bug_when>
    <thetext>Some changes I made to the previous version:
- Also generate toV8ForMainworld, not only toV8FastForMainWorld.
- Added ASSERTS in toV8(Fast)*ForMainWorld, to assert that we indeed are in the main world.

I ran the Bindings/* performance tests twice, and check which tests show a similar kind of improvement on both runs. Results:

Better:
/Bindings/document-implementation:Runs: ~ 12% better
/Bindings/gc-tree:Time ~ 5% better
/Bindings/insert-before:Runs ~ 3% better
/Bindings/node-list-access:Runs ~ 3% better
/Bindings/undefined-first-child:Runs ~ 3% better

No measurable change:
/Bindings/append-child:Runs
/Bindings/create-element:Runs
/Bindings/event-target-wrapper:Runs
/Bindings/first-child:Runs
/Bindings/gc-forest:Time
/Bindings/gc-mini-tree:Time
/Bindings/get-attribute:Runs
/Bindings/get-element-by-id:Runs
/Bindings/id-getter:Runs
/Bindings/id-setter:Runs
/Bindings/scroll-top:Runs
/Bindings/set-attribute:Runs
/Bindings/typed-array-construct-from-array:Runs
/Bindings/typed-array-construct-from-same-type:Runs
/Bindings/typed-array-construct-from-typed:Runs
/Bindings/undefined-get-element-by-id:Runs
/Bindings/undefined-id-getter:Runs

Worse:
/Bindings/get-elements-by-tag-name:Runs ~ 3% worse &lt;&lt; flake?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855869</commentid>
    <comment_count>15</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-15 03:50:07 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Better:
&gt; /Bindings/document-implementation:Runs: ~ 12% better
&gt; /Bindings/gc-tree:Time ~ 5% better
&gt; /Bindings/insert-before:Runs ~ 3% better
&gt; /Bindings/node-list-access:Runs ~ 3% better
&gt; /Bindings/undefined-first-child:Runs ~ 3% better

Looks great, but I&apos;m a bit suspicious of the accuracy. For example, undefined-first-child just returns v8::Undefined() when imp-&gt;firstChild() is 0. So I think that the performance won&apos;t be affected by your change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855870</commentid>
    <comment_count>16</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-15 03:51:52 -0700</bug_when>
    <thetext>Either way there is no reason that the patch regresses performance, I&apos;m very happy to land it. We&apos;re just interested in performance improvement of the patch:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855873</commentid>
    <comment_count>17</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-15 03:59:02 -0700</bug_when>
    <thetext>Yep, the ~3 % changes are probably just noise. The ~ 12 % I can somewhat believe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855875</commentid>
    <comment_count>18</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-15 04:02:48 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Yep, the ~3 % changes are probably just noise. The ~ 12 % I can somewhat believe.

Hmm, still I wonder why you got 12% speed-up in document-implementation.html whereas you didn&apos;t get speed-up in first-child.html. I think they are essentially the same in that they return a ScriptWrapperable to V8. (You don&apos;t need to investigate the issue though.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855881</commentid>
    <comment_count>19</comment_count>
      <attachid>193274</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 04:16:49 -0700</bug_when>
    <thetext>Comment on attachment 193274
Patch

Clearing flags on attachment: 193274

Committed r145896: &lt;http://trac.webkit.org/changeset/145896&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855882</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 04:16:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855962</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 07:01:49 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 112443</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857722</commentid>
    <comment_count>22</comment_count>
      <attachid>193690</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-18 16:49:38 -0700</bug_when>
    <thetext>Created attachment 193690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857728</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-18 16:53:11 -0700</bug_when>
    <thetext>Attachment 193690 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorV8.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8Float64Array.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8Float64Array.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestException.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestException.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestInterface.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestNode.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestNode.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestOverloadedConstructors.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestOverloadedConstructors.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestTypedefs.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/V8/V8TestTypedefs.h&apos;, u&apos;Source/WebCore/bindings/v8/DOMDataStore.h&apos;, u&apos;Source/WebCore/bindings/v8/V8DOMConfiguration.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8DOMConfiguration.h&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8EventTargetCustom.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8MicroDataItemValueCustom.cpp&apos;, u&apos;Source/WebCore/bindings/v8/custom/V8WorkerContextCustom.cpp&apos;]&quot; exit_code: 1
Source/WebCore/bindings/v8/V8DOMConfiguration.h:83:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 1 in 38 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>857729</commentid>
    <comment_count>24</comment_count>
      <attachid>193690</attachid>
    <who name="">jochen</who>
    <bug_when>2013-03-18 16:54:04 -0700</bug_when>
    <thetext>Comment on attachment 193690
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857730</commentid>
    <comment_count>25</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-18 16:54:20 -0700</bug_when>
    <thetext>I reverted this because it made the data segment of the executable (in this case, chrome, though the same thing is visible in DumpRenderTree) grow by ~ 140 K.

In the new version, I don&apos;t create a new attribute array for storing the &quot;forMainWorld&quot; function pointers, but modify the existing attribute array to contain it. So now the data segment size increase only by ~ 40 K.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857738</commentid>
    <comment_count>26</comment_count>
      <attachid>193694</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-18 16:57:33 -0700</bug_when>
    <thetext>Created attachment 193694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857743</commentid>
    <comment_count>27</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-18 17:02:05 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; I reverted this because it made the data segment of the executable (in this case, chrome, though the same thing is visible in DumpRenderTree) grow by ~ 140 K.
&gt; 
&gt; In the new version, I don&apos;t create a new attribute array for storing the &quot;forMainWorld&quot; function pointers, but modify the existing attribute array to contain it. So now the data segment size increase only by ~ 40 K.

Good idea! Can the 40 K increase roughly be explained by the attrGetter/attrSetter duplication? (I&apos;d just like to confirm that we&apos;re not doing something ridiculous.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857757</commentid>
    <comment_count>28</comment_count>
      <attachid>193694</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-18 17:11:51 -0700</bug_when>
    <thetext>Comment on attachment 193694
Patch

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

&gt; Source/WebCore/bindings/v8/DOMDataStore.h:90
&gt; +        if (mainWorldWrapperIsStoredInObject(object) &amp;&amp; isMainWorldObject(object)) {
&gt; +            if (LIKELY(!DOMWrapperWorld::isolatedWorldsExist()))

Why is this check needed? If I&apos;m not missing something, the point of this patch is removing this check.

(With this check, I don&apos;t understand why you observed performance improvement...)

&gt; Source/WebCore/bindings/v8/V8DOMConfiguration.h:61
&gt;      template&lt;class ObjectOrTemplate&gt;
&gt;      static inline void configureAttribute(v8::Handle&lt;ObjectOrTemplate&gt; instance, v8::Handle&lt;ObjectOrTemplate&gt; prototype, const BatchedAttribute&amp; attribute, v8::Isolate*)

Nit: Shall we add a FIXME that says this method should be deprecated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857787</commentid>
    <comment_count>29</comment_count>
      <attachid>193694</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-18 17:29:34 -0700</bug_when>
    <thetext>Comment on attachment 193694
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/DOMDataStore.h:90
&gt;&gt; +            if (LIKELY(!DOMWrapperWorld::isolatedWorldsExist()))
&gt; 
&gt; Why is this check needed? If I&apos;m not missing something, the point of this patch is removing this check.
&gt; 
&gt; (With this check, I don&apos;t understand why you observed performance improvement...)

Ah yes. Thanks for pointing that out.

Also, below, we call mainWorldStore() instead of resolving the current world (like in the version above).

Probably this was still a perf boost because in the perf tests, isolated worlds didn&apos;t exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857791</commentid>
    <comment_count>30</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-18 17:31:13 -0700</bug_when>
    <thetext>Kentaro:

The data segment size increase was because the previous version added this extra array for the ForMainWorld function pointers. The new version doesn&apos;t.

But, I don&apos;t think we want this version either; this is increasing the total executable size by 1 M. :/

So we&apos;d probably want to select which functions we specialize with an IDL attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857793</commentid>
    <comment_count>31</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-18 17:33:23 -0700</bug_when>
    <thetext>Oh, and to answer your previous question:

The per-context functions are left out of this patch, because plumbing the world type to be available in the installPerContextProperties functions is non-trivial. (I would need to add it to &quot;wrap&quot; and lots of other binding funcs.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857802</commentid>
    <comment_count>32</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-18 17:41:24 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; Kentaro:
&gt; 
&gt; The data segment size increase was because the previous version added this extra array for the ForMainWorld function pointers. The new version doesn&apos;t.
&gt; 
&gt; But, I don&apos;t think we want this version either; this is increasing the total executable size by 1 M. :/
&gt; 
&gt; So we&apos;d probably want to select which functions we specialize with an IDL attribute.

Hmm, probably.

Assuming that each getter/setter requires 200 B and there are 3000 getters/setters (I didn&apos;t count it, I just estimated by the fact that there are 600 IDL files), we cannot avoid consuming 200 B * 3000 = 600 KB, approximately 1 MB, which wouldn&apos;t be acceptable.

In the selective duplication approach, are you going to add two templates for all interfaces but generate two getters/setters/methods only for getters/setters/methods that have [PerWorldAccess] ? Or do you have another idea in mind ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857804</commentid>
    <comment_count>33</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-18 17:44:56 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; Oh, and to answer your previous question:
&gt; 
&gt; The per-context functions are left out of this patch, because plumbing the world type to be available in the installPerContextProperties functions is non-trivial. (I would need to add it to &quot;wrap&quot; and lots of other binding funcs.)

Makes sense to me. Thanks.

If you take an approach where some interfaces have two templates and others have one template (which is technically possible), I&apos;m afraid that the code base will become very messy and buggy.

My question is what would be a good balancing point between clean code base and an increase in the executable file size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857809</commentid>
    <comment_count>34</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-18 17:46:25 -0700</bug_when>
    <thetext>After the patch in bug 111724 landed, we already have 2 different templates for main and non-main worlds. So I&apos;d just selectively customize some of them and leave the others as they are now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857814</commentid>
    <comment_count>35</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-18 17:48:52 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; After the patch in bug 111724 landed, we already have 2 different templates for main and non-main worlds. So I&apos;d just selectively customize some of them and leave the others as they are now.

OK, we (already) have two templates for all interfaces. So in this patch, we can just try to generate two getters/settters for DOM attributes that have [PerWorldDOMAccess] ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857818</commentid>
    <comment_count>36</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-18 17:52:28 -0700</bug_when>
    <thetext>Exactly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857819</commentid>
    <comment_count>37</comment_count>
      <attachid>193694</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-18 17:54:58 -0700</bug_when>
    <thetext>Comment on attachment 193694
Patch

Attachment 193694 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17184376

New failing tests:
storage/websql/sql-data-types.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857822</commentid>
    <comment_count>38</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-18 17:56:53 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; Exactly.

Sounds good to me. I hope it will be an easy work for you (I guess you will just need to add a check about [V8PerWorldDOMAccess]).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858450</commentid>
    <comment_count>39</comment_count>
      <attachid>193857</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-19 10:43:43 -0700</bug_when>
    <thetext>Created attachment 193857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858462</commentid>
    <comment_count>40</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-19 10:51:37 -0700</bug_when>
    <thetext>The latest patch adds a IDL attribute (V8PerWorldBindings) and specializes some getters / setters based on that. For starters, I specialized all the attributes of Node and Element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858478</commentid>
    <comment_count>41</comment_count>
      <attachid>193857</attachid>
    <who name="">jochen</who>
    <bug_when>2013-03-19 10:59:49 -0700</bug_when>
    <thetext>Comment on attachment 193857
Patch

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

ok

can you post perf results with that patch?

&gt; Source/WebCore/ChangeLog:12
&gt; +        This patch generates main world bindings for getters and setters of Node

can you mention the name of the IDL attribute you introduced?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858534</commentid>
    <comment_count>42</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-19 11:39:30 -0700</bug_when>
    <thetext>This patch is really cool.  Thanks for working on this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858557</commentid>
    <comment_count>43</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-19 11:53:00 -0700</bug_when>
    <thetext>Some perf tests results. Same setup than last time (run twice, locally, only include tests which show consistent results). Some of them are noise nevertheless.

Better:
create-element 15%
gc-forest 10%
gc-mini-tree 10%
set-attribute 10%
typed-array-construct-from-same-type 5%

No change:
append-child
document-implementation
event-target-wrapper
first-child
gc-tree
get-attribute
get-element-by-id
get-elements-bytag-name
id-getter
id-setter
insert-before
scroll-top
typed-array-construct-from-array
typed-array-construct-from-typed
typed-array-set-from-typed
undefined-first-child
undefined-get-element-by-id
undefine-id-getter

Worse:
-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858562</commentid>
    <comment_count>44</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-19 11:55:53 -0700</bug_when>
    <thetext>If you run the Dromeo/dom-* tests, I would expect you&apos;d see a win for dom-traverse.html (and perhaps others).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858564</commentid>
    <comment_count>45</comment_count>
      <attachid>193889</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-19 11:57:43 -0700</bug_when>
    <thetext>Created attachment 193889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858571</commentid>
    <comment_count>46</comment_count>
      <attachid>193889</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-19 12:01:58 -0700</bug_when>
    <thetext>Comment on attachment 193889
Patch

Rejecting attachment 193889 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;--bot-id=gce-cq-04&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 193889, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
e Source/WebCore/bindings/v8/custom/V8EventTargetCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8MicroDataItemValueCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8WorkerContextCustom.cpp
patching file Source/WebCore/dom/Element.idl
patching file Source/WebCore/dom/Node.idl

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://webkit-commit-queue.appspot.com/results/17247092</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858686</commentid>
    <comment_count>47</comment_count>
      <attachid>193911</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-19 13:30:56 -0700</bug_when>
    <thetext>Created attachment 193911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858693</commentid>
    <comment_count>48</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-19 13:37:38 -0700</bug_when>
    <thetext>(Forgot to add that the expected executable size increase because of this change is around 100 K.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858726</commentid>
    <comment_count>49</comment_count>
      <attachid>193911</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-19 14:19:28 -0700</bug_when>
    <thetext>Comment on attachment 193911
Patch

Clearing flags on attachment: 193911

Committed r146259: &lt;http://trac.webkit.org/changeset/146259&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858727</commentid>
    <comment_count>50</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-19 14:19:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858925</commentid>
    <comment_count>51</comment_count>
      <attachid>193911</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-19 18:02:06 -0700</bug_when>
    <thetext>Comment on attachment 193911
Patch

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

Cool!

&gt; Source/WebCore/bindings/v8/DOMDataStore.h:89
&gt; +        if (mainWorldWrapperIsStoredInObject(object) &amp;&amp; isMainWorldObject(object))

This branch is resolved statically and removed by a compiler, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859123</commentid>
    <comment_count>52</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-03-20 00:35:35 -0700</bug_when>
    <thetext>&gt; This branch is resolved statically and removed by a compiler, right?


yes, but it&apos;s wrong. the isMainWorldObject(object) part should be removed, since it limits this optimization to nodes.

Also, isMainWorldObject is incorrectly named. It should be isMainThreadObject, since that&apos;s what it&apos;s trying to check</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191467</attachid>
            <date>2013-03-05 04:40:21 -0800</date>
            <delta_ts>2013-03-14 08:58:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111417-20130305133627.patch</filename>
            <type>text/plain</type>
            <size>31126</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYwOGJmOWE2NDRiYzk4
OTIxYjc5M2UxY2Q2OTQ0N2YyYjVjZWIwNy4uNTQ1ODgwYjYxZjM4ZmNjNjM5ZmNmYWFmNTFjYzQ3
NjAwYzk0OTgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAzLTA1ICBNYXJq
YSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEFkZCBtYWNo
aW5lcnkgZm9yIGdlbmVyYXRpbmcgc3BlY2lhbGl6ZWQgYmluZGluZ3MgZm9yIHRoZSBtYWluIHdv
cmxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE0
MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUg
bmV3IHNwZWNpYWxpemVkIGJpbmRpbmdzIHdpbGwgYmUgZmFzdGVyLCBiZWNhdXNlIHRoZXkgZG9u
J3QgbmVlZCB0bworICAgICAgICBkbyB0aGUgIm1haW4gd29ybGQsIGlzb2xhdGVkIHdvcmxkIG9y
IGEgd29ya2VyIiBjaGVjaywgYnV0IGNhbiByaWdodAorICAgICAgICBhd2F5IGFzc3VtZSB0aGF0
IHdlJ3JlIGluIHRoZSBtYWluIHdvcmxkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEp
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAg
ICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJD
YWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgorICAgICAgICAo
R2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVOb3Jt
YWxBdHRyU2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rpb25DYWxsYmFjayk6CisgICAg
ICAgIChHZW5lcmF0ZUZ1bmN0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNr
KToKKyAgICAgICAgKEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEpOgorICAgICAgICAoR2Vu
ZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50
YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uKToKKyAgICAg
ICAgKEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJD
b3JlOjpET01EYXRhU3RvcmU6OmdldFdyYXBwZXJJbk1haW5Xb3JsZCk6CisgICAgICAgIChET01E
YXRhU3RvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTUNvbmZpZ3VyYXRpb246OmFkZFRvVGVtcGxhdGUpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0
aW9uLmg6CisgICAgICAgIChWOERPTUNvbmZpZ3VyYXRpb24pOgorCiAyMDEzLTAzLTA1ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogQWRkIHRoZSBnZXRTdHJlYW1CeUlkIG1ldGhvZCBvbiBSVENQZWVyQ29ubmVjdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQppbmRleCAxOWZiOTY2MzQzZTA2NTRhNjQxODgwODk4MmRmOWEwMzJlNTEzMmQ5Li5hNzMyYjhj
ZjExMTliNGQ4MDQ5MmMyNTllMGNmZWYyZGE2YmViZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNjQsNiArNjQsMTUg
QEAgbXkgJGhlYWRlclRlbXBsYXRlID0gPDwgIkVPRiI7CiAqLwogRU9GCiAKKworIyBCaW5kaW5n
cyBmb3Igd2hpY2ggd2UgZ2VuZXJhdGUgZGlmZmVyZW50IGNvZGUgZm9yIG1haW4gd29ybGQgdGhh
biBvdGhlcgorIyB3b3JsZHMuCisKK215ICVzcGVjaWFsaXplZE1haW5Xb3JsZEJpbmRpbmdzOwor
IyBBdCB0aGUgbW9tZW50IHRoZSBoYXNoIG1hcCBpcyBlbXB0eS4gVG8gZmlsbCBpdCwgYWRkIGxp
bmVzIGxpa2UgdGhpczoKKyMgQHskc3BlY2lhbGl6ZWRNYWluV29ybGRCaW5kaW5nc3siQ2xhc3Mi
fX0gPSAoeyJhdHRyaWJ1dGVOYW1lIiA9PiAxfSwgeyJtZXRob2ROYW1lIiA9PiAxfSk7CisKKwog
IyBEZWZhdWx0IGNvbnN0cnVjdG9yCiBzdWIgbmV3CiB7CkBAIC01NzksNiArNTg4LDI4IEBAIGlu
bGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoJHtuYXRpdmVUeXBlfSogaW1wbCwg
Y29uc3QgSG9sZGVyQ29udGFpbmVyCiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhv
bGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKIH0KIEVORAorCisgICAgICAgIGlmIChl
eGlzdHMgJHNwZWNpYWxpemVkTWFpbldvcmxkQmluZGluZ3N7JGludGVyZmFjZU5hbWV9KSB7Cisg
ICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CisKK3RlbXBsYXRlPGNsYXNz
IEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4SW5NYWluV29ybGQoJHtuYXRpdmVUeXBlfSogaW1wbCwgY29uc3QgSG9sZGVy
Q29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIGlmIChV
TkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xh
dGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3Jl
OjpnZXRXcmFwcGVySW5NYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuICRyZXR1cm5pbmdXcmFwcGVyOworICAgIHJldHVybiB3cmFwKGlt
cGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4SW5NYWluV29ybGQoUGFzc1JlZlB0cjwgJHtuYXRpdmVU
eXBlfSA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUq
IHdyYXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEluTWFpbldvcmxkKGltcGwuZ2V0KCksIGNv
bnRhaW5lciwgd3JhcHBhYmxlKTsKK30KK0VORAorICAgICAgICB9CiAgICAgfQogCiAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwpAQCAtODc1LDIyICs5MDYsMjcgQEAgc3ViIEdlbmVy
YXRlTm9ybWFsQXR0ckdldHRlckNhbGxiYWNrCiB7CiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0
OwogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKyAgICBteSAkaXNNYWluV29ybGRTcGVjaWFs
aXphdGlvbiA9IHNoaWZ0OwogCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5u
YW1lOwogICAgIG15ICR2OEludGVyZmFjZU5hbWUgPSAiVjgkaW50ZXJmYWNlTmFtZSI7CiAgICAg
bXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsK
ICAgICBteSAkYXR0ck5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgbXkg
JGZ1bmN0aW9uU3VmZml4ID0gIiI7CisgICAgaWYgKCRpc01haW5Xb3JsZFNwZWNpYWxpemF0aW9u
KSB7CisgICAgICAgICRmdW5jdGlvblN1ZmZpeCA9ICJJbk1haW5Xb3JsZCI7CisgICAgfQogCiAg
ICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0
aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKICAgICBwdXNoKEBpbXBsQ29udGVu
dEludGVybmFscywgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgInN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gJHthdHRyTmFtZX1BdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pXG4iKTsKKyAg
ICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgInN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gJHthdHRyTmFtZX1BdHRyR2V0dGVyQ2FsbGJhY2ske2Z1bmN0aW9uU3VmZml4fSh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbylcbiIpOwog
ICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAie1xuIik7CiAgICAgcHVzaChAaW1wbENv
bnRlbnRJbnRlcm5hbHMsIEdlbmVyYXRlRmVhdHVyZU9ic2VydmF0aW9uKCRhdHRyRXh0LT57IlY4
TWVhc3VyZUFzIn0pKTsKICAgICBpZiAoSGFzQ3VzdG9tR2V0dGVyKCRhdHRyRXh0KSkgewogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gJHt2OEludGVyZmFj
ZU5hbWV9Ojoke2F0dHJOYW1lfUF0dHJHZXR0ZXJDdXN0b20obmFtZSwgaW5mbyk7XG4iKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1
cm4gJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlcihuYW1l
LCBpbmZvKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICBy
ZXR1cm4gJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlciR7
ZnVuY3Rpb25TdWZmaXh9KG5hbWUsIGluZm8pO1xuIik7CiAgICAgfQogICAgIHB1c2goQGltcGxD
b250ZW50SW50ZXJuYWxzLCAifVxuXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFs
cywgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7CkBAIC05MDAsMTIgKzkzNiwxOSBAQCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVy
CiB7CiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlm
dDsKKyAgICBteSAkaXNNYWluV29ybGRTcGVjaWFsaXphdGlvbiA9IHNoaWZ0OwogCiAgICAgbXkg
JGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwogICAgIG15ICR2OEludGVyZmFjZU5h
bWUgPSAiVjgkaW50ZXJmYWNlTmFtZSI7CiAgICAgbXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKICAgICBteSAkYXR0ck5hbWUgPSAkYXR0cmli
dXRlLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgbXkgJGF0dHJUeXBlID0gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlOworICAgIG15ICR0b1Y4RmFzdEZ1bmMgPSAidG9WOEZhc3QiOworICAgIG15
ICRmdW5jdGlvblN1ZmZpeCA9ICIiOworICAgIGlmICgkaXNNYWluV29ybGRTcGVjaWFsaXphdGlv
bikgeworICAgICAgICAkdG9WOEZhc3RGdW5jID0gInRvVjhJbk1haW5Xb3JsZCI7CisgICAgICAg
ICRmdW5jdGlvblN1ZmZpeCA9ICJJbk1haW5Xb3JsZCI7CisgICAgfQogCiAgICAgaWYgKEhhc0N1
c3RvbUdldHRlcigkYXR0ckV4dCkpIHsKICAgICAgICAgcmV0dXJuOwpAQCAtOTE5LDcgKzk2Miw3
IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIKICAgICBteSAkY29uZGl0aW9uYWxTdHJp
bmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRl
LT5zaWduYXR1cmUpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiI2lmICR7Y29u
ZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICBwdXNoKEBp
bXBsQ29udGVudEludGVybmFscywgPDxFTkQpOwotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiAke2F0dHJOYW1lfUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7
YXR0ck5hbWV9QXR0ckdldHRlciR7ZnVuY3Rpb25TdWZmaXh9KHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogRU5ECiAgICAgaWYgKCRz
dmdOYXRpdmVUeXBlKSB7CkBAIC0xMDg1LDcgKzExMjgsNyBAQCBFTkQKICAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIlY4JGF0dHJUeXBlLmgiKTsKICAgICAgICAgbXkgJHN2Z05hdGl2ZVR5cGUg
PSAkY29kZUdlbmVyYXRvci0+R2V0U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRhdHRyVHlwZSk7CiAg
ICAgICAgICMgQ29udmVydCBmcm9tIGFic3RyYWN0IFNWR1Byb3BlcnR5IHRvIHJlYWwgdHlwZSwg
c28gdGhlIHJpZ2h0IHRvSlMoKSBtZXRob2QgY2FuIGJlIGludm9rZWQuCi0gICAgICAgIHB1c2go
QGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIHJldHVybiB0b1Y4RmFzdChzdGF0aWNfY2FzdDwk
c3ZnTmF0aXZlVHlwZSo+KCRyZXN1bHQpLCBpbmZvLCBpbXApO1xuIik7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIHJldHVybiAkdG9WOEZhc3RGdW5jKHN0YXRpY19j
YXN0PCRzdmdOYXRpdmVUeXBlKj4oJHJlc3VsdCksIGluZm8sIGltcCk7XG4iKTsKICAgICB9IGVs
c2lmICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGF0dHJUeXBlKSBh
bmQgbm90ICRpbnRlcmZhY2VOYW1lID1+IC9MaXN0JC8pIHsKICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIlY4JGF0dHJUeXBlLmgiKTsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNWR1By
b3BlcnR5VGVhck9mZi5oIik7CkBAIC0xMTIzLDcgKzExNjYsNyBAQCBFTkQKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAkd3JhcHBlZFZhbHVlID0gIldURjo6Z2V0UHRyKCR7dGVh
ck9mZlR5cGV9OjpjcmVhdGUoJHJlc3VsdCkpIjsKICAgICAgICAgfQotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gdG9WOEZhc3QoJHdyYXBwZWRWYWx1ZSwg
aW5mbywgaW1wKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAg
ICByZXR1cm4gJHRvVjhGYXN0RnVuYygkd3JhcHBlZFZhbHVlLCBpbmZvLCBpbXApO1xuIik7CiAg
ICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJNZXNzYWdlUG9ydEFy
cmF5IikgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiTWVzc2FnZVBvcnQuaCIpOwogICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjhNZXNzYWdlUG9ydC5oIik7CkBAIC0xMTM1LDcgKzEx
NzgsNyBAQCBFTkQKICAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRzQ29weSgqcG9ydHMpOwogICAg
IHY4OjpMb2NhbDx2ODo6QXJyYXk+IHBvcnRBcnJheSA9IHY4OjpBcnJheTo6TmV3KHBvcnRzQ29w
eS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9ydHNDb3B5LnNpemUoKTsg
KytpKQotICAgICAgICBwb3J0QXJyYXktPlNldCh2OEludGVnZXIoaSwgaW5mby5HZXRJc29sYXRl
KCkpLCB0b1Y4RmFzdChwb3J0c0NvcHlbaV0uZ2V0KCksIGluZm8sIGltcCkpOworICAgICAgICBw
b3J0QXJyYXktPlNldCh2OEludGVnZXIoaSwgaW5mby5HZXRJc29sYXRlKCkpLCAkdG9WOEZhc3RG
dW5jKHBvcnRzQ29weVtpXS5nZXQoKSwgaW5mbywgaW1wKSk7CiAgICAgcmV0dXJuIHBvcnRBcnJh
eTsKIEVORAogICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIiAmJiAkYXR0ckV4dC0+eyJDYWNoZWRBdHRyaWJ1dGUifSkgewpA
QCAtMTE0Nyw3ICsxMTkwLDcgQEAgRU5ECiAgICAgcmV0dXJuIHZhbHVlOwogRU5ECiAgICAgfSBl
bHNlIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgcmV0dXJuICIg
LiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkcmVzdWx0LCAiaW5mby5I
b2xkZXIoKSIsICJpbmZvLkdldElzb2xhdGUoKSIsICJpbmZvIiwgImltcCIsICJSZXR1cm5VbnNh
ZmVIYW5kbGUiKS4iO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAi
ICAgIHJldHVybiAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJHJl
c3VsdCwgImluZm8uSG9sZGVyKCkiLCAiaW5mby5HZXRJc29sYXRlKCkiLCAiaW5mbyIsICJpbXAi
LCAiUmV0dXJuVW5zYWZlSGFuZGxlIiwgJHRvVjhGYXN0RnVuYykuIjtcbiIpOwogICAgIH0KIAog
ICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAifVxuXG4iKTsgICMgZW5kIG9mIGdldHRl
cgpAQCAtMTE5NSwyMiArMTIzOCwyNyBAQCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyQ2Fs
bGJhY2sKIHsKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZSA9
IHNoaWZ0OworICAgIG15ICRpc01haW5Xb3JsZFNwZWNpYWxpemF0aW9uID0gc2hpZnQ7CiAKICAg
ICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAgbXkgJHY4SW50ZXJm
YWNlTmFtZSA9ICJWOCRpbnRlcmZhY2VOYW1lIjsKICAgICBteSAkYXR0ckV4dCA9ICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOwogICAgIG15ICRhdHRyTmFtZSA9ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKKyAgICBteSAkZnVuY3Rpb25TdWZmaXggPSAiIjsK
KyAgICBpZiAoJGlzTWFpbldvcmxkU3BlY2lhbGl6YXRpb24pIHsKKyAgICAgICAgJGZ1bmN0aW9u
U3VmZml4ID0gIkluTWFpbldvcmxkIjsKKyAgICB9CiAKICAgICBteSAkY29uZGl0aW9uYWxTdHJp
bmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRl
LT5zaWduYXR1cmUpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiI2lmICR7Y29u
ZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKIAotICAgIHB1c2go
QGltcGxDb250ZW50SW50ZXJuYWxzLCAic3RhdGljIHZvaWQgJHthdHRyTmFtZX1BdHRyU2V0dGVy
Q2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKVxuIik7CisgICAgcHVzaChAaW1w
bENvbnRlbnRJbnRlcm5hbHMsICJzdGF0aWMgdm9pZCAke2F0dHJOYW1lfUF0dHJTZXR0ZXJDYWxs
YmFjayR7ZnVuY3Rpb25TdWZmaXh9KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbylcbiIpOwog
ICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAie1xuIik7CiAgICAgcHVzaChAaW1wbENv
bnRlbnRJbnRlcm5hbHMsIEdlbmVyYXRlRmVhdHVyZU9ic2VydmF0aW9uKCRhdHRyRXh0LT57IlY4
TWVhc3VyZUFzIn0pKTsKICAgICBpZiAoSGFzQ3VzdG9tU2V0dGVyKCRhdHRyRXh0KSkgewogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAke3Y4SW50ZXJmYWNlTmFtZX06
OiR7YXR0ck5hbWV9QXR0clNldHRlckN1c3RvbShuYW1lLCB2YWx1ZSwgaW5mbyk7XG4iKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAke2lu
dGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyKG5hbWUsIHZhbHVl
LCBpbmZvKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAk
e2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyJHtmdW5jdGlv
blN1ZmZpeH0obmFtZSwgdmFsdWUsIGluZm8pO1xuIik7CiAgICAgfQogICAgIHB1c2goQGltcGxD
b250ZW50SW50ZXJuYWxzLCAifVxuXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFs
cywgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7CkBAIC0xMjIwLDEyICsxMjY4LDE3IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0
ZXIKIHsKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZSA9IHNo
aWZ0OworICAgIG15ICRpc01haW5Xb3JsZFNwZWNpYWxpemF0aW9uID0gc2hpZnQ7CiAKICAgICBt
eSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAgbXkgJHY4SW50ZXJmYWNl
TmFtZSA9ICJWOCRpbnRlcmZhY2VOYW1lIjsKICAgICBteSAkYXR0ck5hbWUgPSAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPm5hbWU7CiAgICAgbXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKICAgICBteSAkYXR0clR5cGUgPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPnR5cGU7CisgICAgbXkgJGZ1bmN0aW9uU3VmZml4ID0gIiI7CisgICAgaWYgKCRp
c01haW5Xb3JsZFNwZWNpYWxpemF0aW9uKSB7CisgICAgICAgICRmdW5jdGlvblN1ZmZpeCA9ICJJ
bk1haW5Xb3JsZCI7CisgICAgfQogCiAgICAgaWYgKEhhc0N1c3RvbVNldHRlcigkYXR0ckV4dCkp
IHsKICAgICAgICAgcmV0dXJuOwpAQCAtMTIzMyw3ICsxMjg2LDcgQEAgc3ViIEdlbmVyYXRlTm9y
bWFsQXR0clNldHRlcgogCiAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0
b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKICAg
ICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxu
XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5h
bHMsICJzdGF0aWMgdm9pZCAke2F0dHJOYW1lfUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKVxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICJzdGF0aWMg
dm9pZCAke2F0dHJOYW1lfUF0dHJTZXR0ZXIke2Z1bmN0aW9uU3VmZml4fSh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIntc
biIpOwogCiAgICAgIyBJZiB0aGUgIlN0cmljdFR5cGVDaGVja2luZyIgZXh0ZW5kZWQgYXR0cmli
dXRlIGlzIHByZXNlbnQsIGFuZCB0aGUgYXR0cmlidXRlJ3MgdHlwZSBpcyBhbgpAQCAtMTUyNywy
MiArMTU4MCwyNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrCiB7CiAgICAgbXkgJGZ1
bmN0aW9uID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworICAgIG15ICRpc01h
aW5Xb3JsZFNwZWNpYWxpemF0aW9uID0gc2hpZnQ7CiAKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9
ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAgbXkgJHY4SW50ZXJmYWNlTmFtZSA9ICJWOCRpbnRlcmZh
Y2VOYW1lIjsKICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAg
IG15ICRmdW5jdGlvblN1ZmZpeCA9ICIiOworICAgIGlmICgkaXNNYWluV29ybGRTcGVjaWFsaXph
dGlvbikgeworICAgICAgICAkZnVuY3Rpb25TdWZmaXggPSAiSW5NYWluV29ybGQiOworICAgIH0K
IAogICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNv
bmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbi0+c2lnbmF0dXJlKTsKICAgICBwdXNoKEBpbXBsQ29u
dGVudEludGVybmFscywgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsIDw8RU5EKTsKLXN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfU1ldGhvZENhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7bmFtZX1N
ZXRob2RDYWxsYmFjayR7ZnVuY3Rpb25TdWZmaXh9KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiBFTkQKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgR2VuZXJhdGVGZWF0dXJl
T2JzZXJ2YXRpb24oJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJW
OE1lYXN1cmVBcyJ9KSk7CiAgICAgaWYgKEhhc0N1c3RvbU1ldGhvZCgkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudElu
dGVybmFscywgIiAgICByZXR1cm4gJHt2OEludGVyZmFjZU5hbWV9Ojoke25hbWV9TWV0aG9kQ3Vz
dG9tKGFyZ3MpO1xuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJ
bnRlcm5hbHMsICIgICAgcmV0dXJuICR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke25hbWV9
TWV0aG9kKGFyZ3MpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAi
ICAgIHJldHVybiAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHtuYW1lfU1ldGhvZCR7ZnVu
Y3Rpb25TdWZmaXh9KGFyZ3MpO1xuIik7CiAgICAgfQogICAgIHB1c2goQGltcGxDb250ZW50SW50
ZXJuYWxzLCAifVxuXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiNlbmRp
ZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CkBA
IC0xNTUyLDExICsxNjEwLDE4IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uCiB7CiAgICAgbXkgJGZ1
bmN0aW9uID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworICAgIG15ICRpc01h
aW5Xb3JsZFNwZWNpYWxpemF0aW9uID0gc2hpZnQ7CiAKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9
ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAgbXkgJHY4SW50ZXJmYWNlTmFtZSA9ICJWOCRpbnRlcmZh
Y2VOYW1lIjsKICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAg
IG15ICRmdW5jRXh0ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsK
KyAgICBteSAkdG9WOEZhc3RGdW5jID0gInRvVjhGYXN0IjsKKyAgICBteSAkZnVuY3Rpb25TdWZm
aXggPSAiIjsKKyAgICBpZiAoJGlzTWFpbldvcmxkU3BlY2lhbGl6YXRpb24pIHsKKyAgICAgICAg
JHRvVjhGYXN0RnVuYyA9ICJ0b1Y4SW5NYWluV29ybGQiOworICAgICAgICAkZnVuY3Rpb25TdWZm
aXggPSAiSW5NYWluV29ybGQiOworICAgIH0KIAogICAgIGlmIChIYXNDdXN0b21NZXRob2QoJGZ1
bmNFeHQpKSB7CiAgICAgICAgIHJldHVybjsKQEAgLTE1NjksNyArMTYzNCw3IEBAIHN1YiBHZW5l
cmF0ZUZ1bmN0aW9uCiAKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRv
ci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24tPnNpZ25hdHVyZSk7CiAgICAg
cHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxu
IikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxz
LCAic3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke25hbWV9TWV0aG9kKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgInN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfU1ldGhvZCR7ZnVuY3Rpb25TdWZmaXh9
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudElu
dGVybmFscywgIntcbiIpOwogCiAgICAgaWYgKCRuYW1lIGVxICJhZGRFdmVudExpc3RlbmVyIiB8
fCAkbmFtZSBlcSAicmVtb3ZlRXZlbnRMaXN0ZW5lciIpIHsKQEAgLTE2NzAsNyArMTczNSw3IEBA
IEVORAogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcpOwogCiAgICAgIyBCdWlsZCB0aGUgZnVuY3Rpb24gY2FsbCBzdHJpbmcuCi0gICAgcHVzaChA
aW1wbENvbnRlbnRJbnRlcm5hbHMsIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCRmdW5jdGlv
biwgJHBhcmFtSW5kZXgsICIgICAgIiwgJGludGVyZmFjZU5hbWUsICVyZXBsYWNlbWVudHMpKTsK
KyAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJp
bmcoJGZ1bmN0aW9uLCAkcGFyYW1JbmRleCwgIiAgICAiLCAkaW50ZXJmYWNlTmFtZSwgJHRvVjhG
YXN0RnVuYywgJXJlcGxhY2VtZW50cykpOwogCiAgICAgaWYgKCRyYWlzZXNFeGNlcHRpb25zKSB7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIH1cbiIpOwpAQCAtMTc2
OSw3ICsxODM0LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgIG15ICRv
cHRpb25hbCA9ICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPcHRpb25hbCJ9Owog
ICAgICAgICBpZiAoJG9wdGlvbmFsICYmICRvcHRpb25hbCBuZSAiRGVmYXVsdElzVW5kZWZpbmVk
IiAmJiAkb3B0aW9uYWwgbmUgIkRlZmF1bHRJc051bGxTdHJpbmciICYmICRuYXRpdmVUeXBlIG5l
ICJEaWN0aW9uYXJ5IiAmJiAhJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxi
YWNrIn0pIHsKICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIGlmIChh
cmdzLkxlbmd0aCgpIDw9ICRwYXJhbUluZGV4KSB7XG4iOwotICAgICAgICAgICAgbXkgJGZ1bmN0
aW9uQ2FsbCA9IEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCRmdW5jdGlvbiwgJHBhcmFtSW5k
ZXgsICIgICAgIiB4IDIsICRpbnRlcmZhY2VOYW1lLCAlcmVwbGFjZW1lbnRzKTsKKyAgICAgICAg
ICAgIG15ICRmdW5jdGlvbkNhbGwgPSBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZygkZnVuY3Rp
b24sICRwYXJhbUluZGV4LCAiICAgICIgeCAyLCAkaW50ZXJmYWNlTmFtZSwgInRvVjhGYXN0Iiwg
JXJlcGxhY2VtZW50cyk7CiAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gJGZ1
bmN0aW9uQ2FsbDsKICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIH1c
biI7CiAgICAgICAgIH0KQEAgLTIyODAsMTIgKzIzNDUsMTMgQEAgc3ViIEdlbmVyYXRlQmF0Y2hl
ZEF0dHJpYnV0ZURhdGEKIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAgICAgbXkgJGF0
dHJpYnV0ZXMgPSBzaGlmdDsKKyAgICBteSAkaXNNYWluV29ybGRTcGVjaWFsaXphdGlvbiA9IHNo
aWZ0OwogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKIAogICAgIGZv
cmVhY2ggbXkgJGF0dHJpYnV0ZSAoQCRhdHRyaWJ1dGVzKSB7CiAgICAgICAgIG15ICRjb25kaXRp
b25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgIEdl
bmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSwg
IiwiLCAiIik7CisgICAgICAgIEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZSgkaW50ZXJm
YWNlTmFtZSwgJGF0dHJpYnV0ZSwgIiwiLCAiIiwgJGlzTWFpbldvcmxkU3BlY2lhbGl6YXRpb24p
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3Ry
aW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgIH0KIH0KQEAgLTIyOTYsOCArMjM2
MiwxNCBAQCBzdWIgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlCiAgICAgbXkgJGF0dHJp
YnV0ZSA9IHNoaWZ0OwogICAgIG15ICRkZWxpbWl0ZXIgPSBzaGlmdDsKICAgICBteSAkaW5kZW50
ID0gc2hpZnQ7CisgICAgbXkgJGlzTWFpbldvcmxkU3BlY2lhbGl6YXRpb24gPSBzaGlmdDsKKwog
ICAgIG15ICRhdHRyTmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKICAgICBteSAk
YXR0ckV4dCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOworICAg
IG15ICRmdW5jdGlvblN1ZmZpeCA9ICIiOworICAgIGlmICgkaXNNYWluV29ybGRTcGVjaWFsaXph
dGlvbikgeworICAgICAgICAkZnVuY3Rpb25TdWZmaXggPSAiSW5NYWluV29ybGQiOworICAgIH0K
IAogICAgIG15ICRhY2Nlc3NDb250cm9sID0gInY4OjpERUZBVUxUIjsKICAgICBpZiAoJGF0dHJF
eHQtPnsiRG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXIifSkgewpAQCAtMjM1MSw4ICsyNDIzLDgg
QEAgc3ViIEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZQogICAgICAgICAkc2V0dGVyID0g
IiR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke2ludGVyZmFjZU5hbWV9UmVwbGFjZWFibGVB
dHRyU2V0dGVyQ2FsbGJhY2siOwogICAgIH0gZWxzZSB7CiAgICAgICAgICMgRGVmYXVsdCBHZXR0
ZXIgYW5kIFNldHRlcgotICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1WOEludGVy
bmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXJDYWxsYmFjayI7Ci0gICAgICAgICRzZXR0ZXIgPSAi
JHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0clNldHRlckNhbGxiYWNr
IjsKKyAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRy
TmFtZX1BdHRyR2V0dGVyQ2FsbGJhY2ske2Z1bmN0aW9uU3VmZml4fSI7CisgICAgICAgICRzZXR0
ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0clNldHRlckNh
bGxiYWNrJHtmdW5jdGlvblN1ZmZpeH0iOwogCiAgICAgICAgIGlmICghSGFzQ3VzdG9tU2V0dGVy
KCRhdHRyRXh0KSAmJiAkYXR0ckV4dC0+eyJSZXBsYWNlYWJsZSJ9KSB7CiAgICAgICAgICAgICAk
c2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke2ludGVyZmFjZU5hbWV9UmVw
bGFjZWFibGVBdHRyU2V0dGVyQ2FsbGJhY2siOwpAQCAtMjc1NywxNCArMjgyOSwzMCBAQCBFTkQK
ICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIp
OwogICAgICAgICB9CiAKLSAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyKCRhdHRyaWJ1
dGUsICRpbnRlcmZhY2UpOwotICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJDYWxsYmFj
aygkYXR0cmlidXRlLCAkaW50ZXJmYWNlKTsKKyAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyR2V0
dGVyKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsIDApOworICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0
dHJHZXR0ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAwKTsKKworICAgICAgICBp
ZiAoZXhpc3RzICRzcGVjaWFsaXplZE1haW5Xb3JsZEJpbmRpbmdzeyRpbnRlcmZhY2VOYW1lfSkg
eworICAgICAgICAgICAgbXkgJGF0dHJOYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1l
OworICAgICAgICAgICAgaWYgKGV4aXN0cyAkc3BlY2lhbGl6ZWRNYWluV29ybGRCaW5kaW5nc3sk
aW50ZXJmYWNlTmFtZX1bMF17JGF0dHJOYW1lfSkgeworICAgICAgICAgICAgICAgIEdlbmVyYXRl
Tm9ybWFsQXR0ckdldHRlcigkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAxKTsKKyAgICAgICAgICAg
ICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkaW50ZXJm
YWNlLCAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIGlmICghSGFzQ3Vz
dG9tU2V0dGVyKCRhdHRyRXh0KSAmJiAkYXR0ckV4dC0+eyJSZXBsYWNlYWJsZSJ9KSB7CiAgICAg
ICAgICAgICAkaGFzUmVwbGFjZWFibGUgPSAxOwogICAgICAgICB9IGVsc2lmICghSXNSZWFkb25s
eSgkYXR0cmlidXRlKSkgewotICAgICAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyKCRh
dHRyaWJ1dGUsICRpbnRlcmZhY2UpOwotICAgICAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyU2V0
dGVyQ2FsbGJhY2soJGF0dHJpYnV0ZSwgJGludGVyZmFjZSk7CisgICAgICAgICAgICBHZW5lcmF0
ZU5vcm1hbEF0dHJTZXR0ZXIoJGF0dHJpYnV0ZSwgJGludGVyZmFjZSwgMCk7CisgICAgICAgICAg
ICBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkaW50ZXJmYWNl
LCAwKTsKKworICAgICAgICAgICAgaWYgKGV4aXN0cyAkc3BlY2lhbGl6ZWRNYWluV29ybGRCaW5k
aW5nc3skaW50ZXJmYWNlTmFtZX0pIHsKKyAgICAgICAgICAgICAgICBteSAkYXR0ck5hbWUgPSAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgICAgICAgICAgaWYgKGV4aXN0cyAk
c3BlY2lhbGl6ZWRNYWluV29ybGRCaW5kaW5nc3skaW50ZXJmYWNlTmFtZX1bMF17JGF0dHJOYW1l
fSkgeworICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIoJGF0dHJp
YnV0ZSwgJGludGVyZmFjZSwgMSk7CisgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFs
QXR0clNldHRlckNhbGxiYWNrKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsIDEpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMjgwNywxMiAr
Mjg5NSwyMSBAQCBFTkQKICAgICBteSAkbmVlZHNEb21haW5TYWZlRnVuY3Rpb25TZXR0ZXIgPSAw
OwogICAgICMgR2VuZXJhdGUgbWV0aG9kcyBmb3IgZnVuY3Rpb25zLgogICAgIGZvcmVhY2ggbXkg
JGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAgR2VuZXJhdGVG
dW5jdGlvbigkZnVuY3Rpb24sICRpbnRlcmZhY2UpOworICAgICAgICBHZW5lcmF0ZUZ1bmN0aW9u
KCRmdW5jdGlvbiwgJGludGVyZmFjZSwgMCk7CiAgICAgICAgIGlmICgkZnVuY3Rpb24tPntvdmVy
bG9hZEluZGV4fSA9PSBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319KSB7CiAgICAgICAgICAgICBp
ZiAoJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxKSB7CiAgICAgICAgICAgICAgICAgR2Vu
ZXJhdGVPdmVybG9hZGVkRnVuY3Rpb24oJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIEdlbmVyYXRlRnVuY3Rpb25DYWxsYmFjaygkZnVuY3Rpb24sICRp
bnRlcmZhY2UpOworICAgICAgICAgICAgR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrKCRmdW5jdGlv
biwgJGludGVyZmFjZSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXhpc3RzICRzcGVj
aWFsaXplZE1haW5Xb3JsZEJpbmRpbmdzeyRpbnRlcmZhY2VOYW1lfSkgeworICAgICAgICAgICAg
bXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAg
ICAgaWYgKGV4aXN0cyAkc3BlY2lhbGl6ZWRNYWluV29ybGRCaW5kaW5nc3skaW50ZXJmYWNlTmFt
ZX1bMV17JGZ1bmN0aW9uTmFtZX0pIHsKKyAgICAgICAgICAgICAgICBHZW5lcmF0ZUZ1bmN0aW9u
KCRmdW5jdGlvbiwgJGludGVyZmFjZSwgMSk7CisgICAgICAgICAgICAgICAgIyBGSVhNRTogYWxz
byBnZW5lcmF0ZSBvdmVybG9hZGVkIGZ1bmN0aW9ucyBpZiBuZWVkZWQuCisgICAgICAgICAgICAg
ICAgR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrKCRmdW5jdGlvbiwgJGludGVyZmFjZSwgMSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPm5hbWUgZXEgIml0ZW0iKSB7CkBAIC0yODc1LDcgKzI5NzIsNyBAQCBFTkQKICAgICAjIFB1
dCB0aGUgYXR0cmlidXRlcyB0aGF0IGRpc2FsbG93IHNoYWRvd2luZyBvbiB0aGUgc2hhZG93IG9i
amVjdC4KICAgICBpZiAoQGRpc2FsbG93c1NoYWRvd2luZykgewogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgInN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1
dGUgc2hhZG93QXR0cnNbXSA9IHtcbiIpOwotICAgICAgICBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1
dGVEYXRhKCRpbnRlcmZhY2UsIFxAZGlzYWxsb3dzU2hhZG93aW5nKTsKKyAgICAgICAgR2VuZXJh
dGVCYXRjaGVkQXR0cmlidXRlRGF0YSgkaW50ZXJmYWNlLCBcQGRpc2FsbG93c1NoYWRvd2luZywg
MCk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcblxuIik7CiAgICAgfQogCkBAIC0y
ODgzLDcgKzI5ODAsNyBAQCBFTkQKICAgICBpZiAoQCRhdHRyaWJ1dGVzKSB7CiAgICAgICAgICRo
YXNfYXR0cmlidXRlcyA9IDE7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGNv
bnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSAke3Y4SW50ZXJmYWNlTmFt
ZX1BdHRyc1tdID0ge1xuIik7Ci0gICAgICAgIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEo
JGludGVyZmFjZSwgJGF0dHJpYnV0ZXMpOworICAgICAgICBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1
dGVEYXRhKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGVzLCAwKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ9O1xuXG4iKTsKICAgICB9CiAKQEAgLTI5NDcsNiArMzA0NCw0MiBAQCBFTkQKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbXBpbGVU
aW1lQ2hlY2tGb3JFbnVtc0lmTmVlZGVkKCRpbnRlcmZhY2UpKTsKICAgICB9CiAKKyAgICAjIFNl
dHVwIG1haW4gd29ybGQgc3BlY2lhbGl6YXRpb25zLgorICAgIGlmIChleGlzdHMgJHNwZWNpYWxp
emVkTWFpbldvcmxkQmluZGluZ3N7JGludGVyZmFjZU5hbWV9KSB7CisgICAgICAgIG15IEBzcGVj
aWFsaXplZEF0dHJzID0gKCk7CisgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQCRhdHRy
aWJ1dGVzKSB7CisgICAgICAgICAgICBteSAkYXR0ck5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPm5hbWU7CisgICAgICAgICAgICBpZiAoZXhpc3RzICRzcGVjaWFsaXplZE1haW5Xb3JsZEJp
bmRpbmdzeyRpbnRlcmZhY2VOYW1lfVswXXskYXR0ck5hbWV9KSB7CisgICAgICAgICAgICAgICAg
cHVzaChAc3BlY2lhbGl6ZWRBdHRycywgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKEBzcGVjaWFsaXplZEF0dHJzKSB7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRB
dHRyaWJ1dGUgJHt2OEludGVyZmFjZU5hbWV9QXR0cnNJbk1haW5Xb3JsZFtdID0ge1xuIik7Cisg
ICAgICAgICAgICBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1dGVEYXRhKCRpbnRlcmZhY2UsIFxAc3Bl
Y2lhbGl6ZWRBdHRycywgMSk7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG5c
biIpOworICAgICAgICB9CisKKyAgICAgICAgJGhhc19jYWxsYmFja3MgPSAwOworICAgICAgICBm
b3JlYWNoIG15ICRmdW5jdGlvbiAoQG5vcm1hbEZ1bmN0aW9ucykgeworICAgICAgICAgICAgIyBG
SVhNRTogaG93IHRvIGRlYWwgd2l0aCBvdmVybG9hZGVkIGZ1bmN0aW9ucz8KKyAgICAgICAgICAg
ICMgRG9uJ3QgcHV0IGFueSBub25zdGFuZGFyZCBmdW5jdGlvbnMgaW50byB0aGlzIHRhYmxlOgor
ICAgICAgICAgICAgbmV4dCBpZiAhSXNTdGFuZGFyZEZ1bmN0aW9uKCRpbnRlcmZhY2UsICRmdW5j
dGlvbik7CisgICAgICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1l
OworICAgICAgICAgICAgbmV4dCBpZiAhZXhpc3RzICRzcGVjaWFsaXplZE1haW5Xb3JsZEJpbmRp
bmdzeyRpbnRlcmZhY2VOYW1lfVsxXXskbmFtZX07CisgICAgICAgICAgICBpZiAoISRoYXNfY2Fs
bGJhY2tzKSB7CisgICAgICAgICAgICAgICAgJGhhc19jYWxsYmFja3MgPSAxOworICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlv
bjo6QmF0Y2hlZE1ldGhvZCAke3Y4SW50ZXJmYWNlTmFtZX1NZXRob2RzSW5NYWluV29ybGRbXSA9
IHtcbiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5n
ID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uLT5z
aWduYXR1cmUpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRp
b25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCA8PEVORCk7CisgICAgICAgIHsiJG5hbWUiLCAke2ludGVyZmFjZU5hbWV9
VjhJbnRlcm5hbDo6JHtuYW1lfU1ldGhvZENhbGxiYWNrSW5NYWluV29ybGR9LAorRU5ECisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3Ry
aW5nOworICAgICAgICB9CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcblxuIikgIGlm
ICRoYXNfY2FsbGJhY2tzOworICAgIH0KKwogICAgIGlmICghSGFzQ3VzdG9tQ29uc3RydWN0b3Io
JGludGVyZmFjZSkpIHsKICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJOYW1lZENvbnN0cnVjdG9yIn0pIHsKICAgICAgICAgICAgIEdlbmVyYXRlTmFtZWRDb25z
dHJ1Y3RvcihAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9yc31bMF0sICRpbnRlcmZhY2UpOwpAQCAt
MzA4OCw2ICszMjIxLDI2IEBAIEVORAogICAgIEdlbmVyYXRlSW1wbGVtZW50YXRpb25DdXN0b21D
YWxsKCRpbnRlcmZhY2UpOwogICAgIEdlbmVyYXRlSW1wbGVtZW50YXRpb25NYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKCRpbnRlcmZhY2UpOwogCisgICAgaWYgKGV4aXN0cyAkc3BlY2lhbGl6ZWRNYWlu
V29ybGRCaW5kaW5nc3skaW50ZXJmYWNlTmFtZX0pIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKHdvcmxkVHlwZSA9PSBNYWluV29ybGQpIHtcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YWRkVG9UZW1w
bGF0ZShkZXNjLFxuIik7CisgICAgICAgIG15ICVzcGVjaWFsaXplZEF0dHJzID0gJXtAeyRzcGVj
aWFsaXplZE1haW5Xb3JsZEJpbmRpbmdzeyRpbnRlcmZhY2VOYW1lfX1bMF19OworICAgICAgICBp
ZiAoa2V5cyAlc3BlY2lhbGl6ZWRBdHRycykgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgICAgICAke3Y4SW50ZXJmYWNlTmFtZX1BdHRyc0luTWFpbldvcmxkLCBXVEZf
QVJSQVlfTEVOR1RIKCR7djhJbnRlcmZhY2VOYW1lfUF0dHJzSW5NYWluV29ybGQpLFxuIik7CisK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICAgICAgMCwgMCxcbiIpOworICAgICAgICB9CisgICAgICAgIG15ICVzcGVjaWFsaXplZE1ldGhv
ZHMgPSAle0B7JHNwZWNpYWxpemVkTWFpbldvcmxkQmluZGluZ3N7JGludGVyZmFjZU5hbWV9fVsx
XX07CisgICAgICAgIGlmIChrZXlzICVzcGVjaWFsaXplZE1ldGhvZHMpIHsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgJHt2OEludGVyZmFjZU5hbWV9TWV0aG9k
c0luTWFpbldvcmxkLCBXVEZfQVJSQVlfTEVOR1RIKCR7djhJbnRlcmZhY2VOYW1lfU1ldGhvZHNJ
bk1haW5Xb3JsZCksXG4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICAgICAgMCwgMCxcbiIpOworICAgICAgICB9CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgaXNvbGF0ZSwgZGVmYXVsdFNpZ25hdHVyZSk7
XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfSIpOworICAgIH0KKwogICAg
ICMgRGVmaW5lIG91ciBmdW5jdGlvbnMgd2l0aCBTZXQoKSBvciBTZXRBY2Nlc3NvcigpCiAgICAg
bXkgJHRvdGFsX2Z1bmN0aW9ucyA9IDA7CiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBub3Jt
YWxGdW5jdGlvbnMpIHsKQEAgLTM0NzksNyArMzYzMiw3IEBAIEVORAogICAgICAgICAgICAgQGFy
Z3MgPSAoKTsKICAgICAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChAcGFyYW1zKSB7CiAgICAg
ICAgICAgICAgICAgbXkgJHBhcmFtTmFtZSA9ICRwYXJhbS0+bmFtZTsKLSAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtwYXJhbU5h
bWV9SGFuZGxlID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkcGFyYW0sICRwYXJhbU5hbWUsICJ2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCkiLCAidjhDb250ZXh0LT5HZXRJc29sYXRlKCkiKSAuICI7XG4i
KTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gJHtwYXJhbU5hbWV9SGFuZGxlID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkcGFyYW0s
ICRwYXJhbU5hbWUsICJ2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkiLCAidjhDb250ZXh0LT5HZXRJ
c29sYXRlKCkiLCAidG9WOEZhc3QiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoJHtwYXJhbU5hbWV9SGFuZGxlLklzRW1wdHkoKSkge1xuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmICghaXNTY3Jp
cHRDb250cm9sbGVyVGVybWluYXRpbmcoKSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICAgICAgQ1JBU0goKTtcbiIpOwpAQCAtMzczOCw2ICszODkxLDcg
QEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nCiAgICAgbXkgJG51bWJlck9mUGFyYW1l
dGVycyA9IHNoaWZ0OwogICAgIG15ICRpbmRlbnQgPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNl
TmFtZSA9IHNoaWZ0OworICAgIG15ICR0b1Y4RmFzdEZ1bmMgPSBzaGlmdDsKICAgICBteSAlcmVw
bGFjZW1lbnRzID0gQF87CiAKICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5u
YW1lOwpAQCAtMzg0MCw3ICszOTk0LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5n
CiAgICAgICAgIG15ICRzdmdOYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5cGVO
ZWVkaW5nVGVhck9mZigkcmV0dXJuVHlwZSk7CiAgICAgICAgICMgRklYTUU6IFVwZGF0ZSBmb3Ig
YWxsIFNjcmlwdFdyYXBwYWJsZXMuCiAgICAgICAgIGlmIChJc0RPTU5vZGVUeXBlKCRpbnRlcmZh
Y2VOYW1lKSkgewotICAgICAgICAgICAgJHJlc3VsdCAuPSAkaW5kZW50IC4gInJldHVybiB0b1Y4
RmFzdChXVEY6OmdldFB0cigke3N2Z05hdGl2ZVR5cGV9OjpjcmVhdGUoJHJldHVybikpLCBhcmdz
LCBpbXApO1xuIjsKKyAgICAgICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAuICJyZXR1cm4gJHt0
b1Y4RmFzdEZ1bmN9KFdURjo6Z2V0UHRyKCR7c3ZnTmF0aXZlVHlwZX06OmNyZWF0ZSgkcmV0dXJu
KSksIGFyZ3MsIGltcCk7XG4iOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgJHJlc3Vs
dCAuPSAkaW5kZW50IC4gInJldHVybiB0b1Y4KFdURjo6Z2V0UHRyKCR7c3ZnTmF0aXZlVHlwZX06
OmNyZWF0ZSgkcmV0dXJuKSksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTtcbiI7
CiAgICAgICAgIH0KQEAgLTM4NTcsOSArNDAxMSw5IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2Fs
bFN0cmluZwogICAgIG15ICRuYXRpdmVWYWx1ZTsKICAgICAjIEZJWE1FOiBVcGRhdGUgZm9yIGFs
bCBTY3JpcHRXcmFwcGFibGVzLgogICAgIGlmIChJc0RPTU5vZGVUeXBlKCRpbnRlcmZhY2VOYW1l
KSkgewotICAgICAgICAkbmF0aXZlVmFsdWUgPSBOYXRpdmVUb0pTVmFsdWUoJGZ1bmN0aW9uLT5z
aWduYXR1cmUsICRyZXR1cm4sICJhcmdzLkhvbGRlcigpIiwgImFyZ3MuR2V0SXNvbGF0ZSgpIiwg
ImFyZ3MiLCAiaW1wIiwgIlJldHVyblVuc2FmZUhhbmRsZSIpOworICAgICAgICAkbmF0aXZlVmFs
dWUgPSBOYXRpdmVUb0pTVmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsICRyZXR1cm4sICJhcmdz
LkhvbGRlcigpIiwgImFyZ3MuR2V0SXNvbGF0ZSgpIiwgImFyZ3MiLCAiaW1wIiwgIlJldHVyblVu
c2FmZUhhbmRsZSIsICR0b1Y4RmFzdEZ1bmMpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgICRuYXRp
dmVWYWx1ZSA9IE5hdGl2ZVRvSlNWYWx1ZSgkZnVuY3Rpb24tPnNpZ25hdHVyZSwgJHJldHVybiwg
ImFyZ3MuSG9sZGVyKCkiLCAiYXJncy5HZXRJc29sYXRlKCkiLCAwLCAwLCAiUmV0dXJuVW5zYWZl
SGFuZGxlIik7CisgICAgICAgICRuYXRpdmVWYWx1ZSA9IE5hdGl2ZVRvSlNWYWx1ZSgkZnVuY3Rp
b24tPnNpZ25hdHVyZSwgJHJldHVybiwgImFyZ3MuSG9sZGVyKCkiLCAiYXJncy5HZXRJc29sYXRl
KCkiLCAwLCAwLCAiUmV0dXJuVW5zYWZlSGFuZGxlIiwgJHRvVjhGYXN0RnVuYyk7CiAgICAgfQog
CiAgICAgJHJlc3VsdCAuPSAkaW5kZW50IC4gInJldHVybiAiIC4gJG5hdGl2ZVZhbHVlIC4gIjtc
biI7CkBAIC00MjM5LDYgKzQzOTMsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgbXkgJGdl
dFNjcmlwdFdyYXBwYWJsZUFyZyA9ICRnZXRTY3JpcHRXcmFwcGFibGUgPyAiLCAkZ2V0U2NyaXB0
V3JhcHBhYmxlIiA6ICIiOwogICAgIG15ICRyZXR1cm5IYW5kbGVUeXBlID0gc2hpZnQ7CiAgICAg
bXkgJHJldHVybkhhbmRsZVR5cGVBcmcgPSAkcmV0dXJuSGFuZGxlVHlwZSA/ICIsICRyZXR1cm5I
YW5kbGVUeXBlIiA6ICIiOworICAgIG15ICR0b1Y4RmFzdEZ1bmMgPSBzaGlmdDsKIAogICAgIG15
ICR0eXBlID0gJHNpZ25hdHVyZS0+dHlwZTsKIApAQCAtNDI5Niw3ICs0NDUxLDcgQEAgc3ViIE5h
dGl2ZVRvSlNWYWx1ZQogCiAgICAgaWYgKElzRE9NTm9kZVR5cGUoJHR5cGUpIHx8ICR0eXBlIGVx
ICJFdmVudFRhcmdldCIpIHsKICAgICAgIGlmICgkZ2V0U2NyaXB0V3JhcHBhYmxlKSB7Ci0gICAg
ICAgICAgcmV0dXJuICJ0b1Y4RmFzdCgkdmFsdWUkZ2V0SG9sZGVyQ29udGFpbmVyQXJnJGdldFNj
cmlwdFdyYXBwYWJsZUFyZykiOworICAgICAgICAgIHJldHVybiAiJHRvVjhGYXN0RnVuYygkdmFs
dWUkZ2V0SG9sZGVyQ29udGFpbmVyQXJnJGdldFNjcmlwdFdyYXBwYWJsZUFyZykiOwogICAgICAg
fQogICAgICAgcmV0dXJuICJ0b1Y4KCR2YWx1ZSwgJGdldENyZWF0aW9uQ29udGV4dCwgJGdldElz
b2xhdGUpIjsKICAgICB9CkBAIC00MzE2LDcgKzQ0NzEsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVl
CiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoInd0Zi9HZXRQdHIuaCIpOwogCiAgICAgaWYgKCRnZXRT
Y3JpcHRXcmFwcGFibGUpIHsKLSAgICAgICAgICByZXR1cm4gInRvVjhGYXN0KCR2YWx1ZSRnZXRI
b2xkZXJDb250YWluZXJBcmckZ2V0U2NyaXB0V3JhcHBhYmxlQXJnKSI7CisgICAgICAgICAgcmV0
dXJuICIkdG9WOEZhc3RGdW5jKCR2YWx1ZSRnZXRIb2xkZXJDb250YWluZXJBcmckZ2V0U2NyaXB0
V3JhcHBhYmxlQXJnKSI7CiAgICAgfQogICAgIHJldHVybiAidG9WOCgkdmFsdWUsICRnZXRDcmVh
dGlvbkNvbnRleHQsICRnZXRJc29sYXRlKSI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RPTURhdGFTdG9yZS5oCmluZGV4IGMwNTAzM2YwYjZjYTVjMzY5OGFhNzY0NTgzOTZmYWEzYzEy
ZjBlYTYuLjYyZTNlMGZiOGY1MmI1OGU1OWIxYzZjMDllOGZhODU1NGI4Y2NkZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCkBAIC04NCw2ICs4NCwxMiBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXRXcmFwcGVySW5NYWluV29ybGQoVCogb2JqZWN0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1haW5Xb3JsZFN0b3JlKCktPm1fd3JhcHBlck1hcC5nZXQob2Jq
ZWN0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lk
IHNldFdyYXBwZXIoVCogb2JqZWN0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4
OjpJc29sYXRlKiBpc29sYXRlLCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbikKICAgICB7CiAgICAgICAgIGlmIChtYWluV29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVj
dChvYmplY3QpICYmIGlzTWFpbldvcmxkT2JqZWN0KG9iamVjdCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGI0ZjFhMjhk
ZjlkMmY2NWI5NTIzMDU5MDFiNDk2ODMyMzQ2NTRlNDkuLjRjNTZiNWU4MzliYTg2ZGE4ZjNiZjFl
OTE3MmZiZDA3ZDQ0ZTM2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01Db25maWd1cmF0aW9uLmNwcApAQCAtNzksNCArNzksMTQgQEAgdjg6OkxvY2FsPHY4OjpT
aWduYXR1cmU+IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNp
c3RlbnQ8djgKICAgICByZXR1cm4gZGVmYXVsdFNpZ25hdHVyZTsKIH0KIAordm9pZCBWOERPTUNv
bmZpZ3VyYXRpb246OmFkZFRvVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGZ1bmN0aW9uRGVzY3JpcHRvciwgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSogYXR0cmli
dXRlcywgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LCBjb25zdCBCYXRjaGVkTWV0aG9kKiBjYWxsYmFj
a3MsIHNpemVfdCBjYWxsYmFja0NvdW50LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OkxvY2Fs
PHY4OjpTaWduYXR1cmU+IHNpZ25hdHVyZSkKK3sKKyAgICBpZiAoYXR0cmlidXRlQ291bnQpIHsK
KyAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBmdW5jdGlv
bkRlc2NyaXB0b3ItPkluc3RhbmNlVGVtcGxhdGUoKTsKKyAgICAgICAgYmF0Y2hDb25maWd1cmVB
dHRyaWJ1dGVzKGluc3RhbmNlLCBmdW5jdGlvbkRlc2NyaXB0b3ItPlByb3RvdHlwZVRlbXBsYXRl
KCksIGF0dHJpYnV0ZXMsIGF0dHJpYnV0ZUNvdW50LCBpc29sYXRlKTsKKyAgICB9CisgICAgaWYg
KGNhbGxiYWNrQ291bnQpCisgICAgICAgIGJhdGNoQ29uZmlndXJlQ2FsbGJhY2tzKGZ1bmN0aW9u
RGVzY3JpcHRvci0+UHJvdG90eXBlVGVtcGxhdGUoKSwgc2lnbmF0dXJlLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlKSwgY2FsbGJhY2tzLCBjYWxsYmFj
a0NvdW50LCBpc29sYXRlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaAppbmRleCA4ZjljOTFh
MGFhMzBmOTg0NDA4NWI4NzBiOGVjOWE1ZGNlMmExY2ZmLi5jNDRkZjY0NTNkMDI4ZGQ4YzMxNDc4
ZDU2OTBmY2RhYzAxNjUxOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTUNvbmZpZ3VyYXRpb24uaApAQCAtODUsNiArODUsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgYmF0Y2hDb25maWd1cmVDYWxsYmFja3Modjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxh
dGU+LCB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+LCB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIGNv
bnN0IEJhdGNoZWRNZXRob2QqLCBzaXplX3QgY2FsbGJhY2tDb3VudCwgdjg6Oklzb2xhdGUqKTsK
IAogICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gY29uZmlndXJlVGVtcGxhdGUo
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+LCBjb25zdCBjaGFyKiBpbnRlcmZh
Y2VOYW1lLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcGFyZW50Q2xhc3Ms
IHNpemVfdCBmaWVsZENvdW50LCBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiwgc2l6ZV90IGF0dHJp
YnV0ZUNvdW50LCBjb25zdCBCYXRjaGVkTWV0aG9kKiwgc2l6ZV90IGNhbGxiYWNrQ291bnQsIHY4
OjpJc29sYXRlKik7CisKKyAgICBzdGF0aWMgdm9pZCBhZGRUb1RlbXBsYXRlKHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBmdW5jdGlvbkRlc2NyaXB0b3IsIGNvbnN0IEJhdGNo
ZWRBdHRyaWJ1dGUqIGF0dHJpYnV0ZXMsIHNpemVfdCBhdHRyaWJ1dGVDb3VudCwgY29uc3QgQmF0
Y2hlZE1ldGhvZCogY2FsbGJhY2tzLCBzaXplX3QgY2FsbGJhY2tDb3VudCwgdjg6Oklzb2xhdGUq
LCB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4pOworCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193131</attachid>
            <date>2013-03-14 08:58:32 -0700</date>
            <delta_ts>2013-03-15 03:44:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111417-20130314165427.patch</filename>
            <type>text/plain</type>
            <size>311059</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdmNTI3Y2UxYzJmODRm
MWNhM2JkN2E5Mzg1ZmE3MzBhMDZmNzE2MC4uOGVhMDZlYWJmYjgzOTYzZjMwZmI0MjZiNjRlOTEx
MDFlODJkM2M4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyMSBAQAorMjAxMy0wMy0xNCAgTWFy
amEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBBZGQgbWFj
aGluZXJ5IGZvciBnZW5lcmF0aW5nIHNwZWNpYWxpemVkIGJpbmRpbmdzIGZvciB0aGUgbWFpbiB3
b3JsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEx
NDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IG5ldyBzcGVjaWFsaXplZCBiaW5kaW5ncyB3aWxsIGJlIGZhc3RlciwgYmVjYXVzZSB0aGV5IGRv
bid0IG5lZWQgdG8KKyAgICAgICAgZG8gdGhlICJtYWluIHdvcmxkLCBpc29sYXRlZCB3b3JsZCBv
ciBhIHdvcmtlciIgY2hlY2ssIGJ1dCBjYW4gcmlnaHQKKyAgICAgICAgYXdheSBhc3N1bWUgdGhh
dCB3ZSdyZSBpbiB0aGUgbWFpbiB3b3JsZC4KKworICAgICAgICBUaGlzIHBhdGNoIGdlbmVyYXRl
cyBtYWluIHdvcmxkIGJpbmRpbmdzIGZvciBnZXR0ZXJzIGFuZCBzZXR0ZXJzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAodXBkYXRlZCBleGlzdGluZyBiaW5kaW5ncyB0ZXN0cykuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVy
YXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlckNhbGxiYWNrKToK
KyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZU5v
cm1hbEF0dHJTZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0
ZXIpOgorICAgICAgICAoR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yKToKKyAgICAgICAgKEdlbmVy
YXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEpOgorICAgICAgICAoR2VuZXJhdGVTaW5nbGVCYXRjaGVk
QXR0cmlidXRlKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAo
R2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rp
b25DYWxsU3RyaW5nKToKKyAgICAgICAgKENyZWF0ZUN1c3RvbVNpZ25hdHVyZSk6CisgICAgICAg
IChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OEZsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOEZsb2F0NjRB
cnJheVRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RmxvYXQ2NEFycmF5OjpHZXRUZW1w
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEZsb2F0NjRBcnJheTo6SGFzSW5zdGFuY2UpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oOgorICAg
ICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6
ZXhjaXRpbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChUZXN0QWN0aXZl
RE9NT2JqZWN0VjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2Jq
ZWN0VjhJbnRlcm5hbDo6ZXhjaXRpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0
QWN0aXZlRE9NT2JqZWN0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZl
RE9NT2JqZWN0OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RBY3RpdmVE
T01PYmplY3Q6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wbGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Okhhc0luc3RhbmNlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5h
bDo6YXR0cjFBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFRlc3RFdmVudENvbnN0
cnVjdG9yVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3Rv
clY4SW50ZXJuYWw6OmF0dHIxQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjJBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9y
VjhJbnRlcm5hbDo6YXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RFdmVudENvbnN0
cnVjdG9yVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rv
cjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rv
cjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJl
VjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFdmVu
dFRhcmdldDo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRUYXJn
ZXQ6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEV4Y2VwdGlvblY4
SW50ZXJuYWw6Om5hbWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFRlc3RFeGNl
cHRpb25WOEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RFeGNlcHRpb25WOEludGVy
bmFsOjpuYW1lQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0RXhjZXB0aW9uVGVtcGxhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXhjZXB0aW9uOjpHZXRUZW1wbGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdGF0aWNSZWFk
T25seUF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFRlc3RJbnRlcmZhY2VW
OEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpz
dXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1l
bnRhbFN0YXRpY0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0ckdldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VW
OEludGVybmFsOjpzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFs
U3RhdGljQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyMUF0dHJHZXR0ZXJG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6
OnN1cHBsZW1lbnRhbFN0cjFBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOElu
dGVybmFsOjpzdXBwbGVtZW50YWxTdHIyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxT
dHIyQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJm
YWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyMkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxl
bWVudGFsU3RyM0F0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyM0F0dHJTZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJ
bnRlcm5hbDo6c3VwcGxlbWVudGFsTm9kZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVy
ZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxO
b2RlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0SW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjp0
b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGVt
cGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6
R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFz
dEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE5vZGVUZW1wbGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3ROb2RlOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OnJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFRl
c3RPYmpWOEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpy
ZWFkT25seUxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVN0cmluZ0F0dHJBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWFk
T25seVN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5VGVzdE9iakF0dHJBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWFk
T25seVRlc3RPYmpBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNSZWFkT25seUxvbmdBdHRyQXR0ckdl
dHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
c3RhdGljUmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljU3RyaW5nQXR0ckF0dHJH
ZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OnN0YXRpY1N0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdGF0
aWNTdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbnVtQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVudW1BdHRyQXR0ckdldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjplbnVtQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OmVudW1BdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzaG9ydEF0dHJBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpz
aG9ydEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6OnNob3J0QXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnNob3J0QXR0ckF0dHJTZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6dW5zaWduZWRTaG9ydEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZFNob3J0QXR0ckF0dHJHZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
dW5zaWduZWRTaG9ydEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZFNob3J0QXR0ckF0dHJTZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bG9u
Z0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjpsb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6bG9uZ0xvbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjps
b25nTG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xv
bmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkTG9u
Z0xvbmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0
dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpzdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyQXR0clNldHRlckZvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0
ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6dGVzdE9iakF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp0ZXN0T2JqQXR0ckF0dHJHZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
dGVzdE9iakF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjp0ZXN0T2JqQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJH
ZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OlhNTE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OlhNTE9iakF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0clNl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpjcmVhdGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpjcmVhdGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNyZWF0ZUF0dHJTZXR0ZXJG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNyZWF0
ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0
dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdB
dHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRJbnRl
Z3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEludGVncmFsQXR0
ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OnJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVW5zaWdu
ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRVbnNpZ25l
ZEludGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZs
ZWN0ZWRCb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRyU2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJHZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJl
ZmxlY3RlZFVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyU2V0dGVyRm9y
TWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0
ZWRVUkxBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUlu
dGVncmFsQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
cmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0
ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyU2V0dGVyRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRD
dXN0b21Cb29sZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJH
ZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0
dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5QXR0
ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OnR5cGVkQXJyYXlBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5QXR0ckF0dHJTZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnR5
cGVkQXJyYXlBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmF0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlv
bkF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNr
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjphdHRy
V2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0
dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjdXN0b21BdHRyQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpj
dXN0b21BdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0
ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0
aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlUmFpc2VzQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVS
YWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
Ojp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3Bh
Y2VzQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2Ny
aXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50
c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0Fu
ZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tB
dHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjFBdHRyR2V0dGVyRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0
dHIxQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIxQXR0clNldHRlckZvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMUF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRyR2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIyQXR0clNldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
Ojpjb25kaXRpb25hbEF0dHIzQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29u
ZGl0aW9uYWxBdHRyM0F0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNhY2hlZEF0
dHJpYnV0ZTFBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjpjYWNoZWRBdHRyaWJ1dGUxQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjYWNoZWRBdHRyaWJ1
dGUyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6Y2FjaGVkQXR0cmlidXRlMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6YW55QXR0cmlidXRlQXR0ckdl
dHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
YW55QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjphbnlBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjphbnlBdHRyaWJ1dGVB
dHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXJGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVB
dHRyMUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0clNldHRlckZvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVu
dGltZUF0dHIxQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbmFibGVk
QXRSdW50aW1lQXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJTZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVu
YWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZmxvYXRBcnJheUF0dHJHZXR0ZXJGb3JN
YWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJy
YXlBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFycmF5QXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpk
b3VibGVBcnJheUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OmRvdWJsZUFycmF5QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb250ZW50RG9jdW1lbnRBdHRyR2V0dGVyRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb250ZW50RG9j
dW1lbnRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6bXV0YWJsZVBvaW50QXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50QXR0clNldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjppbW11dGFi
bGVQb2ludEF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjppbW11dGFibGVQb2ludEF0
dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OmltbXV0YWJsZVBvaW50QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJhd2JlcnJ5QXR0ckdldHRlckZvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJy
eUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJyeUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmF3YmVycnlBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0
cmljdEZsb2F0QXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZsb2F0QXR0clNl
dHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
c3RyaWN0RmxvYXRBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmRlc2NyaXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZGVzY3JpcHRpb25BdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OmlkQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6aWRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0clNldHRlckZvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6aWRBdHRyU2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
Omhhc2hBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjpoYXNoQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJl
cGxhY2VhYmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0T2JqVGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3RPYmo6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGVtcGxhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6R2V0VGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6SGFz
SW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjp2
YWx1ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjp2YWx1ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50
ZXJuYWw6OnZhbHVlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpyZWFk
b25seVZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6cmVhZG9ubHlWYWx1ZUF0
dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkVmFsdWVBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkVmFsdWVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOElu
dGVybmFsOjpjYWNoZWRWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5h
bDo6cG9ydHNBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpwb3J0c0F0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb25maWd1cmVWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VUZW1wbGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6
OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZTo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0
ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoVGVzdFR5cGVkZWZzVjhJbnRlcm5h
bCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExv
bmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5h
bDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6aW1tdXRhYmxlU2VyaWFs
aXplZFNjcmlwdFZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjppbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5
cGVkZWZzVjhJbnRlcm5hbDo6aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0clNldHRl
ckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFs
OjppbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldp
dGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVm
c1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0
dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldp
dGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVm
c1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckZvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJp
bmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25B
dHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5
cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6
OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0VHlwZWRlZnM6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4VGVzdFR5cGVkZWZzOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4
RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9ET01EYXRhU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6Z2V0
V3JhcHBlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChET01EYXRhU3RvcmUpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OERPTUNvbmZpZ3VyYXRpb246OmFkZFRvVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmg6CisgICAgICAgIChWOERP
TUNvbmZpZ3VyYXRpb24pOgorCiAyMDEzLTAzLTE0ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxh
bGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtUZXhNYXBdIFBhaW50aW5nIGludG8g
YXJlYSBvZiBjb21wb3NpdGVkIHRpbGUgbm90IGNsZWFyZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggYzVhYjM2MDA1NDcz
NTVmNzMwOTc4NjRlYjNjODNiOTNmYjBjYjA3ZC4uYTIyNmFkOGRjMmY3YjU1NzM5YmUyYzI3NzU1
NDk3MWIwYjg3OWZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTUzMCw2ICs1MzAsMTIgQEAgaW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4RmFzdCgke25hdGl2ZVR5cGV9KiBpbXBsLCBjb25zdCBIb2xkZXJD
b250YWluZXIKIHsKICAgICByZXR1cm4gdG9WOChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNv
bnRhaW5lci5HZXRJc29sYXRlKCkpOwogfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWlu
ZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZh
c3RGb3JNYWluV29ybGQoJHtuYXRpdmVUeXBlfSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVy
JiBjb250YWluZXIsIFdyYXBwYWJsZSopCit7CisgICAgcmV0dXJuIHRvVjgoaW1wbCwgY29udGFp
bmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KIEVORAogICAgIH0gZWxz
ZSB7CiAKQEAgLTU3Nyw2ICs1ODMsMjQgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4RmFzdCgke25hdGl2ZVR5cGV9KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIKICAgICAg
ICAgcmV0dXJuICRyZXR1cm5pbmdXcmFwcGVyOwogICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRh
aW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7CiB9CisKK3RlbXBsYXRlPGNs
YXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZCgke25hdGl2ZVR5cGV9KiBpbXBsLCBjb25z
dCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7Cisg
ICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIu
R2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01E
YXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVy
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuICRyZXR1cm5pbmdXcmFwcGVyOworICAgIHJldHVy
biB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgor
aW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVm
UHRyPCAke25hdGl2ZVR5cGV9ID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWlu
ZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5X
b3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKIEVORAogICAgIH0K
IApAQCAtODgwLDYgKzkwNCw3IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJDYWxsYmFj
awogewogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0gc2hp
ZnQ7CisgICAgbXkgJGZvck1haW5Xb3JsZFN1ZmZpeCA9IHNoaWZ0OwogCiAgICAgbXkgJGludGVy
ZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwogICAgIG15ICR2OEludGVyZmFjZU5hbWUgPSAi
VjgkaW50ZXJmYWNlTmFtZSI7CkBAIC04ODksMTMgKzkxNCwxMyBAQCBzdWIgR2VuZXJhdGVOb3Jt
YWxBdHRyR2V0dGVyQ2FsbGJhY2sKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdl
bmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUp
OwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiI2lmICR7Y29uZGl0aW9uYWxTdHJp
bmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKIAotICAgIHB1c2goQGltcGxDb250ZW50
SW50ZXJuYWxzLCAic3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2F0dHJOYW1lfUF0dHJH
ZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbylcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAic3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2F0dHJOYW1lfUF0dHJHZXR0ZXJDYWxsYmFjayR7
Zm9yTWFpbldvcmxkU3VmZml4fSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbylcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxz
LCAie1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsIEdlbmVyYXRlRmVhdHVy
ZU9ic2VydmF0aW9uKCRhdHRyRXh0LT57IlY4TWVhc3VyZUFzIn0pKTsKICAgICBpZiAoSGFzQ3Vz
dG9tR2V0dGVyKCRhdHRyRXh0KSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFs
cywgIiAgICByZXR1cm4gJHt2OEludGVyZmFjZU5hbWV9Ojoke2F0dHJOYW1lfUF0dHJHZXR0ZXJD
dXN0b20obmFtZSwgaW5mbyk7XG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudEludGVybmFscywgIiAgICByZXR1cm4gJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6
OiR7YXR0ck5hbWV9QXR0ckdldHRlcihuYW1lLCBpbmZvKTtcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJu
YWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlciR7Zm9yTWFpbldvcmxkU3VmZml4fShuYW1lLCBpbmZv
KTtcbiIpOwogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIn1cblxuIik7
CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIjZW5kaWYgLy8gJHtjb25kaXRpb25h
bFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtOTA1LDYgKzkzMCw3IEBA
IHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIKIHsKICAgICBteSAkYXR0cmlidXRlID0gc2hp
ZnQ7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworICAgIG15ICRmb3JNYWluV29ybGRTdWZm
aXggPSBzaGlmdDsKIAogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsK
ICAgICBteSAkdjhJbnRlcmZhY2VOYW1lID0gIlY4JGludGVyZmFjZU5hbWUiOwpAQCAtOTI0LDcg
Kzk1MCw3IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIKICAgICBteSAkY29uZGl0aW9u
YWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0
cmlidXRlLT5zaWduYXR1cmUpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiI2lm
ICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICBw
dXNoKEBpbXBsQ29udGVudEludGVybmFscywgPDxFTkQpOwotc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiAke2F0dHJOYW1lfUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+ICR7YXR0ck5hbWV9QXR0ckdldHRlciR7Zm9yTWFpbldvcmxkU3VmZml4fSh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKIEVORAog
ICAgIGlmICgkc3ZnTmF0aXZlVHlwZSkgewpAQCAtMTA5MCw3ICsxMTE2LDcgQEAgRU5ECiAgICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOCRhdHRyVHlwZS5oIik7CiAgICAgICAgIG15ICRzdmdO
YXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigkYXR0
clR5cGUpOwogICAgICAgICAjIENvbnZlcnQgZnJvbSBhYnN0cmFjdCBTVkdQcm9wZXJ0eSB0byBy
ZWFsIHR5cGUsIHNvIHRoZSByaWdodCB0b0pTKCkgbWV0aG9kIGNhbiBiZSBpbnZva2VkLgotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gdG9WOEZhc3Qoc3Rh
dGljX2Nhc3Q8JHN2Z05hdGl2ZVR5cGUqPigkcmVzdWx0KSwgaW5mbywgaW1wKTtcbiIpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gdG9WOEZhc3QkZm9y
TWFpbldvcmxkU3VmZml4KHN0YXRpY19jYXN0PCRzdmdOYXRpdmVUeXBlKj4oJHJlc3VsdCksIGlu
Zm8sIGltcCk7XG4iKTsKICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVl
ZGluZ1RlYXJPZmYoJGF0dHJUeXBlKSBhbmQgbm90ICRpbnRlcmZhY2VOYW1lID1+IC9MaXN0JC8p
IHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4JGF0dHJUeXBlLmgiKTsKICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIlNWR1Byb3BlcnR5VGVhck9mZi5oIik7CkBAIC0xMTI4LDcgKzEx
NTQsNyBAQCBFTkQKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAkd3JhcHBlZFZh
bHVlID0gIldURjo6Z2V0UHRyKCR7dGVhck9mZlR5cGV9OjpjcmVhdGUoJHJlc3VsdCkpIjsKICAg
ICAgICAgfQotICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4g
dG9WOEZhc3QoJHdyYXBwZWRWYWx1ZSwgaW5mbywgaW1wKTtcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gdG9WOEZhc3QkZm9yTWFpbldvcmxkU3Vm
Zml4KCR3cmFwcGVkVmFsdWUsIGluZm8sIGltcCk7XG4iKTsKICAgICB9IGVsc2lmICgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIk1lc3NhZ2VQb3J0QXJyYXkiKSB7CiAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJNZXNzYWdlUG9ydC5oIik7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJWOE1lc3NhZ2VQb3J0LmgiKTsKQEAgLTExNDAsNyArMTE2Niw3IEBAIEVORAogICAgIE1l
c3NhZ2VQb3J0QXJyYXkgcG9ydHNDb3B5KCpwb3J0cyk7CiAgICAgdjg6OkxvY2FsPHY4OjpBcnJh
eT4gcG9ydEFycmF5ID0gdjg6OkFycmF5OjpOZXcocG9ydHNDb3B5LnNpemUoKSk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwb3J0c0NvcHkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHBvcnRB
cnJheS0+U2V0KHY4SW50ZWdlcihpLCBpbmZvLkdldElzb2xhdGUoKSksIHRvVjhGYXN0KHBvcnRz
Q29weVtpXS5nZXQoKSwgaW5mbywgaW1wKSk7CisgICAgICAgIHBvcnRBcnJheS0+U2V0KHY4SW50
ZWdlcihpLCBpbmZvLkdldElzb2xhdGUoKSksIHRvVjhGYXN0JGZvck1haW5Xb3JsZFN1ZmZpeChw
b3J0c0NvcHlbaV0uZ2V0KCksIGluZm8sIGltcCkpOwogICAgIHJldHVybiBwb3J0QXJyYXk7CiBF
TkQKICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSIgJiYgJGF0dHJFeHQtPnsiQ2FjaGVkQXR0cmlidXRlIn0pIHsKQEAgLTEx
NTIsNyArMTE3OCw3IEBAIEVORAogICAgIHJldHVybiB2YWx1ZTsKIEVORAogICAgIH0gZWxzZSB7
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIHJldHVybiAiIC4gTmF0
aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJHJlc3VsdCwgImluZm8uSG9sZGVy
KCkiLCAiaW5mby5HZXRJc29sYXRlKCkiLCAiaW5mbyIsICJpbXAiLCAiUmV0dXJuVW5zYWZlSGFu
ZGxlIikuIjtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICBy
ZXR1cm4gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICRyZXN1bHQs
ICJpbmZvLkhvbGRlcigpIiwgImluZm8uR2V0SXNvbGF0ZSgpIiwgImluZm8iLCAiaW1wIiwgIlJl
dHVyblVuc2FmZUhhbmRsZSIsICRmb3JNYWluV29ybGRTdWZmaXgpLiI7XG4iKTsKICAgICB9CiAK
ICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIn1cblxuIik7ICAjIGVuZCBvZiBnZXR0
ZXIKQEAgLTEyMDAsNiArMTIyNiw3IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxs
YmFjawogewogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0g
c2hpZnQ7CisgICAgbXkgJGZvck1haW5Xb3JsZFN1ZmZpeCA9IHNoaWZ0OwogCiAgICAgbXkgJGlu
dGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwogICAgIG15ICR2OEludGVyZmFjZU5hbWUg
PSAiVjgkaW50ZXJmYWNlTmFtZSI7CkBAIC0xMjA5LDEzICsxMjM2LDEzIEBAIHN1YiBHZW5lcmF0
ZU5vcm1hbEF0dHJTZXR0ZXJDYWxsYmFjawogICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRj
b2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZSk7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIjaWYgJHtjb25kaXRpb25h
bFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogCi0gICAgcHVzaChAaW1wbENv
bnRlbnRJbnRlcm5hbHMsICJzdGF0aWMgdm9pZCAke2F0dHJOYW1lfUF0dHJTZXR0ZXJDYWxsYmFj
ayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVu
dEludGVybmFscywgInN0YXRpYyB2b2lkICR7YXR0ck5hbWV9QXR0clNldHRlckNhbGxiYWNrJHtm
b3JNYWluV29ybGRTdWZmaXh9KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbylcbiIpOwogICAg
IHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAie1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRl
bnRJbnRlcm5hbHMsIEdlbmVyYXRlRmVhdHVyZU9ic2VydmF0aW9uKCRhdHRyRXh0LT57IlY4TWVh
c3VyZUFzIn0pKTsKICAgICBpZiAoSGFzQ3VzdG9tU2V0dGVyKCRhdHRyRXh0KSkgewogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAke3Y4SW50ZXJmYWNlTmFtZX06OiR7
YXR0ck5hbWV9QXR0clNldHRlckN1c3RvbShuYW1lLCB2YWx1ZSwgaW5mbyk7XG4iKTsKICAgICB9
IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAke2ludGVy
ZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBp
bmZvKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAke2lu
dGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyJHtmb3JNYWluV29y
bGRTdWZmaXh9KG5hbWUsIHZhbHVlLCBpbmZvKTtcbiIpOwogICAgIH0KICAgICBwdXNoKEBpbXBs
Q29udGVudEludGVybmFscywgIn1cblxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5h
bHMsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOwpAQCAtMTIyNSw2ICsxMjUyLDcgQEAgc3ViIEdlbmVyYXRlTm9ybWFsQXR0clNldHRl
cgogewogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0gc2hp
ZnQ7CisgICAgbXkgJGZvck1haW5Xb3JsZFN1ZmZpeCA9IHNoaWZ0OwogCiAgICAgbXkgJGludGVy
ZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwogICAgIG15ICR2OEludGVyZmFjZU5hbWUgPSAi
VjgkaW50ZXJmYWNlTmFtZSI7CkBAIC0xMjM4LDcgKzEyNjYsNyBAQCBzdWIgR2VuZXJhdGVOb3Jt
YWxBdHRyU2V0dGVyCiAKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRv
ci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwogICAg
IHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5c
biIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFs
cywgInN0YXRpYyB2b2lkICR7YXR0ck5hbWV9QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgInN0YXRpYyB2
b2lkICR7YXR0ck5hbWV9QXR0clNldHRlciR7Zm9yTWFpbldvcmxkU3VmZml4fSh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywg
IntcbiIpOwogCiAgICAgIyBJZiB0aGUgIlN0cmljdFR5cGVDaGVja2luZyIgZXh0ZW5kZWQgYXR0
cmlidXRlIGlzIHByZXNlbnQsIGFuZCB0aGUgYXR0cmlidXRlJ3MgdHlwZSBpcyBhbgpAQCAtMjI0
OCw3ICsyMjc2LDcgQEAgRU5ECiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCi12
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9Q29u
c3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRU
eXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4
SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xh
dGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNhY2hlZFRlbXBsYXRlOwogICAgIGlm
ICghY2FjaGVkVGVtcGxhdGUuSXNFbXB0eSgpKQpAQCAtMjI2MCw3ICsyMjg4LDcgQEAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVj
dG9yOjpHZXRUZW1wbGF0ZSgKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0
YW5jZSA9IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgpOwogICAgIGluc3RhbmNlLT5TZXRJbnRl
cm5hbEZpZWxkQ291bnQoJHt2OEludGVyZmFjZU5hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQpOwog
ICAgIHJlc3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiJHtpbnRlcmZh
Y2VOYW1lfSIpKTsKLSAgICByZXN1bHQtPkluaGVyaXQoJHt2OEludGVyZmFjZU5hbWV9OjpHZXRU
ZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpKTsKKyAgICByZXN1bHQtPkluaGVyaXQoJHt2OElu
dGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZShpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSk7CiAK
ICAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
Pjo6TmV3KGlzb2xhdGUsIHJlc3VsdCk7CiAgICAgcmV0dXJuIGNhY2hlZFRlbXBsYXRlOwpAQCAt
MjI4NiwxMiArMjMxNCwxMyBAQCBzdWIgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0YQogewog
ICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKICAgICBteSAkYXR0cmlidXRlcyA9IHNoaWZ0Owor
ICAgIG15ICRmb3JNYWluV29ybGRTdWZmaXggPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlTmFt
ZSA9ICRpbnRlcmZhY2UtPm5hbWU7CiAKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEAkYXR0
cmlidXRlcykgewogICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRv
ci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICBHZW5lcmF0ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1
dGUoJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUsICIsIiwgIiIpOworICAgICAgICBHZW5lcmF0
ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUoJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUsICIsIiwg
IiIsICRmb3JNYWluV29ybGRTdWZmaXgpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNl
bmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwog
ICAgIH0KIH0KQEAgLTIzMDIsNiArMjMzMSw3IEBAIHN1YiBHZW5lcmF0ZVNpbmdsZUJhdGNoZWRB
dHRyaWJ1dGUKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CiAgICAgbXkgJGRlbGltaXRlciA9
IHNoaWZ0OwogICAgIG15ICRpbmRlbnQgPSBzaGlmdDsKKyAgICBteSAkZm9yTWFpbldvcmxkU3Vm
Zml4ID0gc2hpZnQ7CiAgICAgbXkgJGF0dHJOYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5u
YW1lOwogICAgIG15ICRhdHRyRXh0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXM7CiAKQEAgLTIzNTcsOCArMjM4Nyw4IEBAIHN1YiBHZW5lcmF0ZVNpbmdsZUJhdGNo
ZWRBdHRyaWJ1dGUKICAgICAgICAgJHNldHRlciA9ICIke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5h
bDo6JHtpbnRlcmZhY2VOYW1lfVJlcGxhY2VhYmxlQXR0clNldHRlckNhbGxiYWNrIjsKICAgICB9
IGVsc2UgewogICAgICAgICAjIERlZmF1bHQgR2V0dGVyIGFuZCBTZXR0ZXIKLSAgICAgICAgJGdl
dHRlciA9ICIke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0dGVy
Q2FsbGJhY2siOwotICAgICAgICAkc2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFs
Ojoke2F0dHJOYW1lfUF0dHJTZXR0ZXJDYWxsYmFjayI7CisgICAgICAgICRnZXR0ZXIgPSAiJHtp
bnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlckNhbGxiYWNrJHtm
b3JNYWluV29ybGRTdWZmaXh9IjsKKyAgICAgICAgJHNldHRlciA9ICIke2ludGVyZmFjZU5hbWV9
VjhJbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyQ2FsbGJhY2ske2Zvck1haW5Xb3JsZFN1
ZmZpeH0iOwogCiAgICAgICAgIGlmICghSGFzQ3VzdG9tU2V0dGVyKCRhdHRyRXh0KSAmJiAkYXR0
ckV4dC0+eyJSZXBsYWNlYWJsZSJ9KSB7CiAgICAgICAgICAgICAkc2V0dGVyID0gIiR7aW50ZXJm
YWNlTmFtZX1WOEludGVybmFsOjoke2ludGVyZmFjZU5hbWV9UmVwbGFjZWFibGVBdHRyU2V0dGVy
Q2FsbGJhY2siOwpAQCAtMjY4NCw3ICsyNzE0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgbXkgJHBhcmVudCA9ICRfOwogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
Vjgke3BhcmVudH0uaCIpOwogICAgICAgICAkcGFyZW50Q2xhc3MgPSAiVjgiIC4gJHBhcmVudDsK
LSAgICAgICAgJHBhcmVudENsYXNzVGVtcGxhdGUgPSAkcGFyZW50Q2xhc3MgLiAiOjpHZXRUZW1w
bGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpIjsKKyAgICAgICAgJHBhcmVudENsYXNzVGVtcGxhdGUg
PSAkcGFyZW50Q2xhc3MgLiAiOjpHZXRUZW1wbGF0ZShpc29sYXRlLCBjdXJyZW50V29ybGRUeXBl
KSI7CiAgICAgICAgIGxhc3Q7CiAgICAgfQogCkBAIC0yNzYzLDE0ICsyNzkzLDIzIEBAIEVORAog
ICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIik7
CiAgICAgICAgIH0KIAotICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIoJGF0dHJpYnV0
ZSwgJGludGVyZmFjZSk7Ci0gICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlckNhbGxiYWNr
KCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UpOworICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0
ZXIoJGF0dHJpYnV0ZSwgJGludGVyZmFjZSwgIiIpOworICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0
dHJHZXR0ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiIik7CisKKyAgICAgICAg
aWYgKCEkYXR0ckV4dC0+eyJWOEVuYWJsZWRQZXJDb250ZXh0In0pIHsKKyAgICAgICAgICAgIEdl
bmVyYXRlTm9ybWFsQXR0ckdldHRlcigkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiRm9yTWFpbldv
cmxkIik7CisgICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJDYWxsYmFjaygkYXR0
cmlidXRlLCAkaW50ZXJmYWNlLCAiRm9yTWFpbldvcmxkIik7CisgICAgICAgIH0KIAogICAgICAg
ICBpZiAoIUhhc0N1c3RvbVNldHRlcigkYXR0ckV4dCkgJiYgJGF0dHJFeHQtPnsiUmVwbGFjZWFi
bGUifSkgewogICAgICAgICAgICAgJGhhc1JlcGxhY2VhYmxlID0gMTsKICAgICAgICAgfSBlbHNp
ZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFs
QXR0clNldHRlcigkYXR0cmlidXRlLCAkaW50ZXJmYWNlKTsKLSAgICAgICAgICAgIEdlbmVyYXRl
Tm9ybWFsQXR0clNldHRlckNhbGxiYWNrKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UpOworICAgICAg
ICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICIi
KTsKKyAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlckNhbGxiYWNrKCRhdHRyaWJ1
dGUsICRpbnRlcmZhY2UsICIiKTsKKyAgICAgICAgICAgIGlmICghJGF0dHJFeHQtPnsiVjhFbmFi
bGVkUGVyQ29udGV4dCJ9KSB7CisgICAgICAgICAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyU2V0
dGVyKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICJGb3JNYWluV29ybGQiKTsKKyAgICAgICAgICAg
ICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkaW50ZXJm
YWNlLCAiRm9yTWFpbldvcmxkIik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTI4ODEsNyArMjkyMCwxMSBAQCBFTkQKICAgICAjIFB1dCB0aGUgYXR0cmlidXRlcyB0aGF0
IGRpc2FsbG93IHNoYWRvd2luZyBvbiB0aGUgc2hhZG93IG9iamVjdC4KICAgICBpZiAoQGRpc2Fs
bG93c1NoYWRvd2luZykgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25z
dCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgc2hhZG93QXR0cnNbXSA9IHtc
biIpOwotICAgICAgICBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1dGVEYXRhKCRpbnRlcmZhY2UsIFxA
ZGlzYWxsb3dzU2hhZG93aW5nKTsKKyAgICAgICAgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0
YSgkaW50ZXJmYWNlLCBcQGRpc2FsbG93c1NoYWRvd2luZywgIiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIn07XG5cbiIpOworCisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3Rh
dGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBzaGFkb3dBdHRy
c0Zvck1haW5Xb3JsZFtdID0ge1xuIik7CisgICAgICAgIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0
ZURhdGEoJGludGVyZmFjZSwgXEBkaXNhbGxvd3NTaGFkb3dpbmcsICJGb3JNYWluV29ybGQiKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuXG4iKTsKICAgICB9CiAKQEAgLTI4ODks
NyArMjkzMiwxMiBAQCBFTkQKICAgICBpZiAoQCRhdHRyaWJ1dGVzKSB7CiAgICAgICAgICRoYXNf
YXR0cmlidXRlcyA9IDE7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGNvbnN0
IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSAke3Y4SW50ZXJmYWNlTmFtZX1B
dHRyc1tdID0ge1xuIik7Ci0gICAgICAgIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEoJGlu
dGVyZmFjZSwgJGF0dHJpYnV0ZXMpOworICAgICAgICBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1dGVE
YXRhKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGVzLCAiIik7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAifTtcblxuIik7CisKKyAgICAgICAgIyBTZXR1cCBhdHRyaWJ1dGVzIHdpdGggc3BlY2lh
bGl6ZWQgZ2V0dGVycy4KKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3Qg
VjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlICR7djhJbnRlcmZhY2VOYW1lfUF0
dHJzRm9yTWFpbldvcmxkW10gPSB7XG4iKTsKKyAgICAgICAgR2VuZXJhdGVCYXRjaGVkQXR0cmli
dXRlRGF0YSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlcywgIkZvck1haW5Xb3JsZCIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG5cbiIpOwogICAgIH0KIApAQCAtMjk4MSwxMCArMzAy
OSwxMyBAQCBFTkQKICAgICAjIGNvbmZpZ3VyYXRpb24gbWV0aG9kLgogICAgIGlmICgkaW50ZXJm
YWNlTmFtZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxF
TkQpOwotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gQ29uZmlndXJl
U2hhZG93T2JqZWN0VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiB0
ZW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdFRlbXBsYXRlPiBDb25maWd1cmVTaGFkb3dPYmplY3RUZW1wbGF0ZSh2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0VGVtcGxhdGU+IHRlbXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBl
cldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6
YmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHRlbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1w
bGF0ZT4oKSwgc2hhZG93QXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZG93QXR0cnMpLCBpc29s
YXRlKTsKIAorICAgIGlmIChjdXJyZW50V29ybGRUeXBlID09IE1haW5Xb3JsZCkKKyAgICAgICAg
VjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXModGVtcGwsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPigpLCBzaGFkb3dBdHRyc0Zvck1haW5Xb3JsZCwgV1RG
X0FSUkFZX0xFTkdUSChzaGFkb3dBdHRyc0Zvck1haW5Xb3JsZCksIGlzb2xhdGUpOworCiAgICAg
Ly8gSW5zdGFsbCBhIHNlY3VyaXR5IGhhbmRsZXIgd2l0aCBWOC4KICAgICB0ZW1wbC0+U2V0QWNj
ZXNzQ2hlY2tDYWxsYmFja3MoVjhET01XaW5kb3c6Om5hbWVkU2VjdXJpdHlDaGVja0N1c3RvbSwg
VjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNoZWNrQ3VzdG9tLCB2ODo6RXh0ZXJuYWw6Ok5l
dygmVjhET01XaW5kb3c6OmluZm8pKTsKICAgICB0ZW1wbC0+U2V0SW50ZXJuYWxGaWVsZENvdW50
KFY4RE9NV2luZG93OjppbnRlcm5hbEZpZWxkQ291bnQpOwpAQCAtMjk5OSw3ICszMDUwLDcgQEAg
RU5ECiAKICAgICAjIEdlbmVyYXRlIHRoZSB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uIG1ldGhvZAog
ICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmUke3Y4SW50ZXJmYWNlTmFtZX1UZW1wbGF0ZSh2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmUke3Y4SW50ZXJmYWNlTmFtZX1UZW1wbGF0
ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNj
LT5SZWFkT25seVByb3RvdHlwZSgpOwogCkBAIC0zMDA4LDcgKzMwNTksNyBAQCBFTkQKICAgICBp
ZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4RW5hYmxlZEF0UnVudGltZSJ9
KSB7CiAgICAgICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBHZXRSdW50aW1lRW5hYmxlRnVuY3Rp
b25OYW1lKCRpbnRlcmZhY2UpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwot
ICAgIGlmICghJHtlbmFibGVfZnVuY3Rpb259KCkpCisgICBpZiAoISR7ZW5hYmxlX2Z1bmN0aW9u
fSgpKQogICAgICAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25m
aWd1cmVUZW1wbGF0ZShkZXNjLCBcIlwiLCAkcGFyZW50Q2xhc3NUZW1wbGF0ZSwgJHt2OEludGVy
ZmFjZU5hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQsIDAsIDAsIDAsIDAsIGlzb2xhdGUpOwogICAg
IGVsc2UKIEVORApAQCAtMzA2Nyw5ICszMTE4LDE3IEBAIEVORAogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgke2VuYWJsZV9mdW5j
dGlvbn0oKSkge1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzdGF0
aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhID1c
XFxuIik7Ci0gICAgICAgIEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZSgkaW50ZXJmYWNl
TmFtZSwgJHJ1bnRpbWVfYXR0ciwgIjsiLCAiICAgICIpOworICAgICAgICBHZW5lcmF0ZVNpbmds
ZUJhdGNoZWRBdHRyaWJ1dGUoJGludGVyZmFjZU5hbWUsICRydW50aW1lX2F0dHIsICI7IiwgIiAg
ICAiLCAiIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAgICAgICAgIFY4
RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0
ckRhdGEsIGlzb2xhdGUpOworRU5ECisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICBpZiAoY3VycmVudFdvcmxkVHlwZSA9PSBNYWluV29ybGQpIHtcbiIpOworCisgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJh
dGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YUZvck1haW5Xb3JsZCA9XFxcbiIpOworICAg
ICAgICBHZW5lcmF0ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUoJGludGVyZmFjZU5hbWUsICRydW50
aW1lX2F0dHIsICI7IiwgIiAgICAiLCAiRm9yTWFpbldvcmxkIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7CisgICAgICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZp
Z3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhRm9yTWFpbldvcmxkLCBpc29s
YXRlKTsKKyAgICAgICAgfQogICAgIH0KIEVORAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IlxuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CkBAIC0zMDk2LDYgKzMxNTUsMzQgQEAgRU5ECiAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bkN1c3RvbUNhbGwoJGludGVyZmFjZSk7CiAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbk1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQoJGludGVyZmFjZSk7CiAKKyAgICBteSAkYWRkVG9UZW1wbGF0ZSA9
ICJWOERPTUNvbmZpZ3VyYXRpb246OmFkZFRvVGVtcGxhdGUoZGVzYywgIjsKKyAgICBpZiAoJGhh
c19hdHRyaWJ1dGVzKSB7CisgICAgICAgICRhZGRUb1RlbXBsYXRlID0gJGFkZFRvVGVtcGxhdGUg
LiAiJHt2OEludGVyZmFjZU5hbWV9QXR0cnNGb3JNYWluV29ybGQsIFdURl9BUlJBWV9MRU5HVEgo
JHt2OEludGVyZmFjZU5hbWV9QXR0cnNGb3JNYWluV29ybGQpLCAiOworICAgIH0gZWxzZSB7Cisg
ICAgICAgICRhZGRUb1RlbXBsYXRlID0gJGFkZFRvVGVtcGxhdGUgLiAiMCwgMCwgIgorICAgIH0K
KyAgICAjIE5vIHNwZWNpYWxpemVkIGNhbGxiYWNrcyB5ZXQuCisgICAgJGFkZFRvVGVtcGxhdGUg
PSAkYWRkVG9UZW1wbGF0ZSAuICIwLCAwLCAiOworICAgICRhZGRUb1RlbXBsYXRlID0gJGFkZFRv
VGVtcGxhdGUgLiAiaXNvbGF0ZSwgZGVmYXVsdFNpZ25hdHVyZSk7IjsKKworICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7CisKKyAgICBpZiAoY3VycmVudFdvcmxkVHlwZSA9PSBNYWluV29y
bGQpCitFTkQKKworICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhF
bmFibGVkQXRSdW50aW1lIn0pIHsKKyAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlvbiA9IEdldFJ1
bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJGludGVyZmFjZSk7CisKKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsIDw8RU5EKTsKKyAgICAgICAgaWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKQorICAg
ICAgICAgICAgJHthZGRUb1RlbXBsYXRlfQorRU5ECisgICB9IGVsc2UgeworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgICAgICAke2FkZFRvVGVtcGxhdGV9CitFTkQKKyAg
IH0KKwogICAgICMgRGVmaW5lIG91ciBmdW5jdGlvbnMgd2l0aCBTZXQoKSBvciBTZXRBY2Nlc3Nv
cigpCiAgICAgbXkgJHRvdGFsX2Z1bmN0aW9ucyA9IDA7CiAgICAgZm9yZWFjaCBteSAkZnVuY3Rp
b24gKEBub3JtYWxGdW5jdGlvbnMpIHsKQEAgLTMxNTIsMjMgKzMyMzksMjMgQEAgRU5ECiAgICAg
cmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAk
e3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFw
cGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiAke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRl
RGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1w
bGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRl
TWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBl
KS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJl
bnRXb3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmUke3Y4SW50ZXJmYWNlTmFt
ZX1UZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwg
d29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywg
dGVtcGwpOworICAgICAgICBDb25maWd1cmUke3Y4SW50ZXJmYWNlTmFtZX1UZW1wbGF0ZShkYXRh
LT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRX
b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgm
aW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCAke3Y4SW50ZXJmYWNl
TmFtZX06Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCAke3Y4SW50ZXJm
YWNlTmFtZX06Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAg
ICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmlu
Zm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwog
fQogCiBFTkQKQEAgLTMxODksNyArMzI3Niw3IEBAIEVORAogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCR7ZW5hYmxl
RnVuY3Rpb259KGltcGwtPmRvY3VtZW50KCkpKSB7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRj
aGVkQXR0cmlidXRlIGF0dHJEYXRhID1cXFxuIik7Ci0gICAgICAgICAgICBHZW5lcmF0ZVNpbmds
ZUJhdGNoZWRBdHRyaWJ1dGUoJGludGVyZmFjZU5hbWUsICRydW50aW1lQXR0ciwgIjsiLCAiICAg
ICIpOworICAgICAgICAgICAgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlKCRpbnRlcmZh
Y2VOYW1lLCAkcnVudGltZUF0dHIsICI7IiwgIiAgICAiLCAiIik7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgPDxFTkQpOwogICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZp
Z3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhLCBpc29sYXRlKTsKIEVORApA
QCAtMzI2NiwxNCArMzM1MywxNCBAQCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+
IFY4RE9NV2luZG93OjpHZXRTaGFkb3dPYmplY3RUZW1wbGF0ZSh2ODo6SXNvbAogICAgICAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBWOERPTVdpbmRvd1NoYWRv
d09iamVjdENhY2hlRm9yTWFpbldvcmxkOwogICAgICAgICBpZiAoVjhET01XaW5kb3dTaGFkb3dP
YmplY3RDYWNoZUZvck1haW5Xb3JsZC5Jc0VtcHR5KCkpIHsKICAgICAgICAgICAgIFY4RE9NV2lu
ZG93U2hhZG93T2JqZWN0Q2FjaGVGb3JNYWluV29ybGQgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0VGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6Ok9iamVjdFRlbXBsYXRlOjpOZXcoKSk7Ci0g
ICAgICAgICAgICBDb25maWd1cmVTaGFkb3dPYmplY3RUZW1wbGF0ZShWOERPTVdpbmRvd1NoYWRv
d09iamVjdENhY2hlRm9yTWFpbldvcmxkLCBpc29sYXRlKTsKKyAgICAgICAgICAgIENvbmZpZ3Vy
ZVNoYWRvd09iamVjdFRlbXBsYXRlKFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGVGb3JNYWlu
V29ybGQsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlRm9yTWFpbldvcmxkOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IFY4
RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGVGb3JOb25NYWluV29ybGQ7CiAgICAgICAgIGlmIChW
OERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlRm9yTm9uTWFpbldvcmxkLklzRW1wdHkoKSkgewog
ICAgICAgICAgICAgVjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZUZvck5vbk1haW5Xb3JsZCA9
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6T2Jq
ZWN0VGVtcGxhdGU6Ok5ldygpKTsKLSAgICAgICAgICAgIENvbmZpZ3VyZVNoYWRvd09iamVjdFRl
bXBsYXRlKFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGVGb3JOb25NYWluV29ybGQsIGlzb2xh
dGUpOworICAgICAgICAgICAgQ29uZmlndXJlU2hhZG93T2JqZWN0VGVtcGxhdGUoVjhET01XaW5k
b3dTaGFkb3dPYmplY3RDYWNoZUZvck5vbk1haW5Xb3JsZCwgaXNvbGF0ZSwgY3VycmVudFdvcmxk
VHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFY4RE9NV2luZG93U2hhZG93T2JqZWN0
Q2FjaGVGb3JOb25NYWluV29ybGQ7CiAgICAgfQpAQCAtMzQ4Myw3ICszNTcwLDcgQEAgRU5ECiAg
ICAgICAgICAgICBAYXJncyA9ICgpOwogICAgICAgICAgICAgZm9yZWFjaCBteSAkcGFyYW0gKEBw
YXJhbXMpIHsKICAgICAgICAgICAgICAgICBteSAkcGFyYW1OYW1lID0gJHBhcmFtLT5uYW1lOwot
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiAke3BhcmFtTmFtZX1IYW5kbGUgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRwYXJhbSwgJHBh
cmFtTmFtZSwgInY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSIsICJ2OENvbnRleHQtPkdldElzb2xh
dGUoKSIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke3BhcmFtTmFtZX1IYW5kbGUgPSAiIC4gTmF0aXZlVG9K
U1ZhbHVlKCRwYXJhbSwgJHBhcmFtTmFtZSwgInY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSIsICJ2
OENvbnRleHQtPkdldElzb2xhdGUoKSIsICIiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoJHtwYXJhbU5hbWV9SGFuZGxlLklzRW1wdHkoKSkg
e1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmICgh
aXNTY3JpcHRDb250cm9sbGVyVGVybWluYXRpbmcoKSlcbiIpOwogICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgQ1JBU0goKTtcbiIpOwpAQCAtMzg2MSw5ICsz
OTQ4LDkgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nCiAgICAgbXkgJG5hdGl2ZVZh
bHVlOwogICAgICMgRklYTUU6IFVwZGF0ZSBmb3IgYWxsIFNjcmlwdFdyYXBwYWJsZXMuCiAgICAg
aWYgKElzRE9NTm9kZVR5cGUoJGludGVyZmFjZU5hbWUpKSB7Ci0gICAgICAgICRuYXRpdmVWYWx1
ZSA9IE5hdGl2ZVRvSlNWYWx1ZSgkZnVuY3Rpb24tPnNpZ25hdHVyZSwgJHJldHVybiwgImFyZ3Mu
SG9sZGVyKCkiLCAiYXJncy5HZXRJc29sYXRlKCkiLCAiYXJncyIsICJpbXAiLCAiUmV0dXJuVW5z
YWZlSGFuZGxlIik7CisgICAgICAgICRuYXRpdmVWYWx1ZSA9IE5hdGl2ZVRvSlNWYWx1ZSgkZnVu
Y3Rpb24tPnNpZ25hdHVyZSwgJHJldHVybiwgImFyZ3MuSG9sZGVyKCkiLCAiYXJncy5HZXRJc29s
YXRlKCkiLCAiYXJncyIsICJpbXAiLCAiUmV0dXJuVW5zYWZlSGFuZGxlIiwgIiIpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgICRuYXRpdmVWYWx1ZSA9IE5hdGl2ZVRvSlNWYWx1ZSgkZnVuY3Rpb24t
PnNpZ25hdHVyZSwgJHJldHVybiwgImFyZ3MuSG9sZGVyKCkiLCAiYXJncy5HZXRJc29sYXRlKCki
LCAwLCAwLCAiUmV0dXJuVW5zYWZlSGFuZGxlIik7CisgICAgICAgICRuYXRpdmVWYWx1ZSA9IE5h
dGl2ZVRvSlNWYWx1ZSgkZnVuY3Rpb24tPnNpZ25hdHVyZSwgJHJldHVybiwgImFyZ3MuSG9sZGVy
KCkiLCAiYXJncy5HZXRJc29sYXRlKCkiLCAwLCAwLCAiUmV0dXJuVW5zYWZlSGFuZGxlIiwgIiIp
OwogICAgIH0KIAogICAgICRyZXN1bHQgLj0gJGluZGVudCAuICJyZXR1cm4gIiAuICRuYXRpdmVW
YWx1ZSAuICI7XG4iOwpAQCAtNDA5OCw3ICs0MTg1LDcgQEAgc3ViIENyZWF0ZUN1c3RvbVNpZ25h
dHVyZQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKEdldFY4SGVhZGVyTmFtZSgkdHlwZSkpOwogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICJWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5yYXdUZW1wbGF0ZSgmVjgke3R5cGV9OjppbmZvLCB3b3JsZFR5cGUpIjsKKyAgICAgICAg
ICAgICAgICAkcmVzdWx0IC49ICJWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdU
ZW1wbGF0ZSgmVjgke3R5cGV9OjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSI7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAkcmVzdWx0IC49ICJ2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpIjsKQEAgLTQyNDMsNiArNDMzMCw3IEBAIHN1YiBOYXRp
dmVUb0pTVmFsdWUKICAgICBteSAkZ2V0U2NyaXB0V3JhcHBhYmxlQXJnID0gJGdldFNjcmlwdFdy
YXBwYWJsZSA/ICIsICRnZXRTY3JpcHRXcmFwcGFibGUiIDogIiI7CiAgICAgbXkgJHJldHVybkhh
bmRsZVR5cGUgPSBzaGlmdDsKICAgICBteSAkcmV0dXJuSGFuZGxlVHlwZUFyZyA9ICRyZXR1cm5I
YW5kbGVUeXBlID8gIiwgJHJldHVybkhhbmRsZVR5cGUiIDogIiI7CisgICAgbXkgJGZvck1haW5X
b3JsZFN1ZmZpeCA9IHNoaWZ0OwogCiAgICAgbXkgJHR5cGUgPSAkc2lnbmF0dXJlLT50eXBlOwog
CkBAIC00MzAwLDcgKzQzODgsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAKICAgICBpZiAoSXNE
T01Ob2RlVHlwZSgkdHlwZSkgfHwgJHR5cGUgZXEgIkV2ZW50VGFyZ2V0IikgewogICAgICAgaWYg
KCRnZXRTY3JpcHRXcmFwcGFibGUpIHsKLSAgICAgICAgICByZXR1cm4gInRvVjhGYXN0KCR2YWx1
ZSRnZXRIb2xkZXJDb250YWluZXJBcmckZ2V0U2NyaXB0V3JhcHBhYmxlQXJnKSI7CisgICAgICAg
ICAgcmV0dXJuICJ0b1Y4RmFzdCR7Zm9yTWFpbldvcmxkU3VmZml4fSgkdmFsdWUkZ2V0SG9sZGVy
Q29udGFpbmVyQXJnJGdldFNjcmlwdFdyYXBwYWJsZUFyZykiOwogICAgICAgfQogICAgICAgcmV0
dXJuICJ0b1Y4KCR2YWx1ZSwgJGdldENyZWF0aW9uQ29udGV4dCwgJGdldElzb2xhdGUpIjsKICAg
ICB9CkBAIC00MzIwLDcgKzQ0MDgsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoInd0Zi9HZXRQdHIuaCIpOwogCiAgICAgaWYgKCRnZXRTY3JpcHRXcmFwcGFi
bGUpIHsKLSAgICAgICAgICByZXR1cm4gInRvVjhGYXN0KCR2YWx1ZSRnZXRIb2xkZXJDb250YWlu
ZXJBcmckZ2V0U2NyaXB0V3JhcHBhYmxlQXJnKSI7CisgICAgICAgICAgcmV0dXJuICJ0b1Y4RmFz
dCRmb3JNYWluV29ybGRTdWZmaXgoJHZhbHVlJGdldEhvbGRlckNvbnRhaW5lckFyZyRnZXRTY3Jp
cHRXcmFwcGFibGVBcmcpIjsKICAgICB9CiAgICAgcmV0dXJuICJ0b1Y4KCR2YWx1ZSwgJGdldENy
ZWF0aW9uQ29udGV4dCwgJGdldElzb2xhdGUpIjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCmluZGV4
IDIxYWJmNGRmOTE2YTAzMTBlMTY3ZGQyMmJlNzA3MTg1OWQ2ZTFlN2IuLjdlMWU5OWY3NGVmZmMz
YmNhOTZhNTY4MzdmYmI1N2JjNWJhOGNlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApAQCAtMTM1
LDEyICsxMzUsMTIgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RmxvYXQ2NEFycmF5Ojpjb25z
dHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICByZXR1cm4gRmxvYXQ2
NEFycmF5VjhJbnRlcm5hbDo6Y29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1w
bGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOEZsb2F0NjRBcnJheVRlbXBs
YXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRl
c2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4g
ZGVmYXVsdFNpZ25hdHVyZTsKLSAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0
aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiRmxvYXQ2NEFycmF5IiwgVjhBcnJheUJ1ZmZl
clZpZXc6OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSksIFY4RmxvYXQ2NEFycmF5Ojpp
bnRlcm5hbEZpZWxkQ291bnQsCisgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJh
dGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIkZsb2F0NjRBcnJheSIsIFY4QXJyYXlCdWZm
ZXJWaWV3OjpHZXRUZW1wbGF0ZShpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSwgVjhGbG9hdDY0
QXJyYXk6OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgMCwgMCwKICAgICAgICAgVjhGbG9h
dDY0QXJyYXlNZXRob2RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4RmxvYXQ2NEFycmF5TWV0aG9kcyks
IGlzb2xhdGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29t
ZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KQEAgLTE1MSw5ICsxNTEsMTIgQEAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOEZsb2F0NjRB
cnJheVRlbXBsYXRlKHY4OjoKICAgICBVTlVTRURfUEFSQU0ocHJvdG8pOyAvLyBJbiBzb21lIGNh
c2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIAogCisgICAgaWYgKGN1cnJlbnRXb3JsZFR5
cGUgPT0gTWFpbldvcmxkKQorICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmFkZFRvVGVtcGxh
dGUoZGVzYywgMCwgMCwgMCwgMCwgaXNvbGF0ZSwgZGVmYXVsdFNpZ25hdHVyZSk7CisKICAgICAv
LyBDdXN0b20gU2lnbmF0dXJlICdmb28nCiAgICAgY29uc3QgaW50IGZvb0FyZ2MgPSAxOwotICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZvb0FyZ3ZbZm9vQXJnY10gPSB7IFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOEZsb2F0MzJBcnJh
eTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGZvb0FyZ3ZbZm9vQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSkt
PnJhd1RlbXBsYXRlKCZWOEZsb2F0MzJBcnJheTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGZvb1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1
cmU6Ok5ldyhkZXNjLCBmb29BcmdjLCBmb29Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJp
bmc6Ok5ld1N5bWJvbCgiZm9vIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoRmxvYXQ2NEFy
cmF5VjhJbnRlcm5hbDo6Zm9vTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGZvb1NpZ25h
dHVyZSkpOwogCkBAIC0xNjIsMjMgKzE2NSwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6Ogog
ICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gVjhGbG9hdDY0QXJyYXk6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFw
cGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBWOEZsb2F0NjRBcnJheTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRh
KiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xh
dGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZp
bmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdv
cmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6
OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxh
dGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlw
ZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsK
KyAgICAgICAgQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0
ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwor
ICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwp
OwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOEZsb2F0NjRBcnJheTo6SGFzSW5zdGFu
Y2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3Jh
cHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4RmxvYXQ2NEFycmF5OjpIYXNJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFw
cGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBl
KTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFu
Y2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5o
CmluZGV4IDQzMzdkZDI2ZGIxYmViZWIyNDllM2RhMzAwMmNiNGUzMDJhZGQxYjMuLjhhMGE4NjFj
ZWRjN2VmZWI1ZDM4ODI4NTNmYmNhMGVlMDU0NTNmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCkBAIC03
Nyw2ICs3NywyNCBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KEZsb2F0
NjRBcnJheSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJgogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoRmxvYXQ2NEFycmF5KiBpbXBsLCBjb25zdCBI
b2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAg
aWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIuR2V0
SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRh
U3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwg
Y29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwordGVtcGxh
dGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IEZsb2F0NjRB
cnJheSA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUq
IHdyYXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQo
KSwgY29udGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNv
bnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4RmFzdChQYXNzUmVmUHRyPCBGbG9hdDY0QXJyYXkgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250
YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRv
VjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFj
dGl2ZURPTU9iamVjdC5jcHAKaW5kZXggM2E4NjE3YWJkOTU1ODc0OTU3YmFmODI1MmMyMGFkNmJh
MGM2MjAyNC4uM2U0MjJlNDQ2ZWNjYzcwZGQxNDBjMGRlMjQwNTEyNGJhNTA2YmVmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2
ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTgyLDYgKzgyLDE3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXhjaXRpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpM
b2NhbDx2ODo6U3RyaW5nCiAgICAgcmV0dXJuIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFs
OjpleGNpdGluZ0F0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGV4Y2l0aW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wID0gVjhUZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+ZXhjaXRpbmdB
dHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBleGNpdGluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
cmV0dXJuIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpleGNpdGluZ0F0dHJBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBib29sIGluZGV4ZWRTZWN1cml0eUNo
ZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB1aW50MzJfdCBpbmRleCwgdjg6OkFjY2Vz
c1R5cGUgdHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4pCiB7CiAgICAgVGVzdEFjdGl2ZURPTU9i
amVjdCogaW1wID0gIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6dG9OYXRpdmUoaG9zdCk7CkBAIC0x
NzgsNyArMTg5LDEyIEBAIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRB
dHRyaWJ1dGUgVjhUZXN0QWN0aXZlRE9NT2JqZWN0QXR0cnNbXSA9CiAgICAgeyJleGNpdGluZ0F0
dHIiLCBUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhjaXRpbmdBdHRyQXR0ckdldHRl
ckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKIH07CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0VGVt
cGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29s
YXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0YXRpYyBjb25zdCBW
OERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0QWN0aXZlRE9NT2JqZWN0
QXR0cnNGb3JNYWluV29ybGRbXSA9IHsKKyAgICAvLyBBdHRyaWJ1dGUgJ2V4Y2l0aW5nQXR0cicg
KFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsiZXhjaXRpbmdB
dHRyIiwgVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4Y2l0aW5nQXR0ckF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCit9OworCitzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEFjdGl2
ZURPTU9iamVjdFRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBk
ZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRU
eXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKQEAgLTE5Myw5ICsyMDks
MTIgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1
cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGEKICAgICBVTlVTRURfUEFSQU0ocHJvdG8pOyAv
LyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIGluc3RhbmNlLT5TZXRB
Y2Nlc3NDaGVja0NhbGxiYWNrcyhUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6bmFtZWRT
ZWN1cml0eUNoZWNrLCBUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6aW5kZXhlZFNlY3Vy
aXR5Q2hlY2ssIHY4OjpFeHRlcm5hbDo6TmV3KCZWOFRlc3RBY3RpdmVET01PYmplY3Q6OmluZm8p
KTsKIAorICAgIGlmIChjdXJyZW50V29ybGRUeXBlID09IE1haW5Xb3JsZCkKKyAgICAgICAgVjhE
T01Db25maWd1cmF0aW9uOjphZGRUb1RlbXBsYXRlKGRlc2MsIFY4VGVzdEFjdGl2ZURPTU9iamVj
dEF0dHJzRm9yTWFpbldvcmxkLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdEFjdGl2ZURPTU9iamVj
dEF0dHJzRm9yTWFpbldvcmxkKSwgMCwgMCwgaXNvbGF0ZSwgZGVmYXVsdFNpZ25hdHVyZSk7CisK
ICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdleGNpdGluZ0Z1bmN0aW9uJwogICAgIGNvbnN0IGlu
dCBleGNpdGluZ0Z1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gZXhjaXRpbmdGdW5jdGlvbkFyZ3ZbZXhjaXRpbmdGdW5jdGlvbkFyZ2NdID0geyBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZv
LCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZXhj
aXRpbmdGdW5jdGlvbkFyZ3ZbZXhjaXRpbmdGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCBjdXJyZW50V29y
bGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gZXhjaXRpbmdGdW5jdGlv
blNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBleGNpdGluZ0Z1bmN0aW9uQXJn
YywgZXhjaXRpbmdGdW5jdGlvbkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3
U3ltYm9sKCJleGNpdGluZ0Z1bmN0aW9uIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVz
dEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4Y2l0aW5nRnVuY3Rpb25NZXRob2RDYWxsYmFj
aywgdjhVbmRlZmluZWQoKSwgZXhjaXRpbmdGdW5jdGlvblNpZ25hdHVyZSkpOwogCkBAIC0yMDcs
MjMgKzIyNiwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYQogICAgIHJldHVybiBkZXNjOwog
fQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0QWN0aXZlRE9N
T2JqZWN0OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0
QWN0aXZlRE9NT2JqZWN0OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBl
cldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRh
dGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURh
dGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3Js
ZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgm
aW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRU
eXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFu
ZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0VGVt
cGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxk
VHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBs
KTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0VGVtcGxhdGUoZGF0YS0+
cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29y
bGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmlu
Zm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0QWN0aXZlRE9N
T2JqZWN0OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29s
YXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0QWN0
aXZlRE9NT2JqZWN0OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7
Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNl
KCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBl
KTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggYzgwZWZhNjlmMzJk
OTQyMTU5ZGYzZTJmNzM3NTI2NmIzNDQ0N2ZhNC4uMDhjZjZlNjU3MzA1YzU1ZmU2NTc4ODI1ZTg3
MWE1ODRhNmQ1ZTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaApAQCAtODAsNiAr
ODAsMjQgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0QWN0aXZl
RE9NT2JqZWN0KiBpbXBsLCBjb25zdCBIb2xkZXJDb24KIH0KIAogdGVtcGxhdGU8Y2xhc3MgSG9s
ZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRlc3RBY3RpdmVET01PYmplY3QqIGltcGwsIGNvbnN0
IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAg
ICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5H
ZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURh
dGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIu
SXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBs
LCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdEFj
dGl2ZURPTU9iamVjdCA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBX
cmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQo
aW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNz
IEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0QWN0aXZlRE9NT2JqZWN0ID4gaW1wbCwg
Y29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQog
ewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCBlZTVlMzcyZWY0Yzc4
Y2U0ODZmODNkMGQ5M2Y4MDkwY2YwZDhmZjg4Li5iNzQ0MzFiMmJhMTUyMjdiYjhkYmQzMTZjYTI3
OTM3MzlkNzQxOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAg
LTkxLDcgKzkxLDcgQEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZE1l
dGhvZCBWOFRlc3RDdXN0b21OYW1lZEdldHRlck1ldGhvZHNbXQogICAgIHsiYW5vdGhlckZ1bmN0
aW9uIiwgVGVzdEN1c3RvbU5hbWVkR2V0dGVyVjhJbnRlcm5hbDo6YW5vdGhlckZ1bmN0aW9uTWV0
aG9kQ2FsbGJhY2t9LAogfTsKIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBDb25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRlbXBsYXRlKHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyVGVtcGxhdGUo
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+
UmVhZE9ubHlQcm90b3R5cGUoKTsKIApAQCAtMTA3LDI4ICsxMDcsMzEgQEAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RDdXN0b21OYW1l
ZEdldHRlclRlbXAKICAgICAKICAgICBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldE5hbWVk
UHJvcGVydHlIYW5kbGVyKFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpuYW1lZFByb3BlcnR5R2V0
dGVyLCAwLCAwLCAwLCAwKTsKIAorICAgIGlmIChjdXJyZW50V29ybGRUeXBlID09IE1haW5Xb3Js
ZCkKKyAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjphZGRUb1RlbXBsYXRlKGRlc2MsIDAsIDAs
IDAsIDAsIGlzb2xhdGUsIGRlZmF1bHRTaWduYXR1cmUpOworCiAgICAgLy8gQ3VzdG9tIHRvU3Ry
aW5nIHRlbXBsYXRlCiAgICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgidG9TdHJp
bmciKSwgVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT50b1N0cmluZ1RlbXBsYXRlKCkpOwog
ICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6R2V0VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAg
ICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0g
ZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0
ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRl
RGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1
cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVt
cGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQt
PnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdv
cmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29y
bGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXJUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxk
VHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFw
KGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsK
IH0KIAotYm9vbCBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpIYXNJbnN0YW5jZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsK
KyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2Uo
JmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0
b21OYW1lZEdldHRlci5oCmluZGV4IDJhNTFjZGVkOWFlNzk2Yzc1Yzk5MjFlMDhkYWE4NDAyYzRh
MjNhM2IuLmQ0ZDkyZmEwNDBlNTNlZDhmNTY3YTAxNzRlYjI4NmNlNTIyZWU3ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21O
YW1lZEdldHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCkBAIC04MSw2ICs4MSwyNCBAQCBpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RDdXN0b21OYW1lZEdldHRlciogaW1wbCwg
Y29uc3QgSG9sZGVyQwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNz
IFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWlu
V29ybGQoVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgaWYgKFVOTElLRUxZKCFp
bXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBw
ZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRl
cigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVy
Q29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IFRlc3RDdXN0b21OYW1lZEdldHRlciA+
IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBw
YWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29u
dGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5l
ciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFz
dChQYXNzUmVmUHRyPCBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIgPiBpbXBsLCBjb25zdCBIb2xkZXJD
b250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJu
IHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCAyYzY4ZWU5NGJmM2FmMTQ4ZjU1NjBhYjVmYzlj
MDgwYjc0N2M5ZmJmLi5kMzA1MWE0MjVmOTgwZjc3MjMzNGIyZGRiMzY3ZmI3MDcxNGU4YTYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC04MSw2ICs4MSwxNyBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHIxQXR0ckdldHRlckNhbGxiYWNrKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogICAgIHJldHVybiBUZXN0RXZlbnRDb25zdHJ1Y3RvclY4
SW50ZXJuYWw6OmF0dHIxQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhdHRyMUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dEV2ZW50Q29uc3RydWN0b3IqIGltcCA9IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmF0dHIxKCksIGluZm8u
R2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGF0dHIxQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IHJldHVybiBUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWw6OmF0dHIxQXR0ckdldHRlckZv
ck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBhdHRyMkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcCA9IFY4
VGVzdEV2ZW50Q29uc3RydWN0b3I6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtOTIsNiAr
MTAzLDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cjJBdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAgICAgcmV0dXJuIFRlc3RFdmVudENv
bnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHIyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3sKKyAgICBUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wID0gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rv
cjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+YXR0
cjIoKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhhbmRsZSk7Cit9CisKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgcmV0dXJuIFRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjJB
dHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQpAQCAtMTIwLDYgKzE0MiwxMyBAQCBzdGF0aWMgY29u
c3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdEV2ZW50Q29uc3Ry
dWN0b3JBdHRyc1tdCiAgICAgeyJhdHRyMiIsIFRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5h
bDo6YXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsKIAorc3Rh
dGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RFdmVu
dENvbnN0cnVjdG9yQXR0cnNGb3JNYWluV29ybGRbXSA9IHsKKyAgICAvLyBBdHRyaWJ1dGUgJ2F0
dHIxJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJhdHRy
MSIsIFRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjFBdHRyR2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnYXR0
cjInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnSW5pdGlhbGl6ZWRCeUV2
ZW50Q29uc3RydWN0b3InKQorICAgIHsiYXR0cjIiLCBUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50
ZXJuYWw6OmF0dHIyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKK307CisKIGJvb2wgZmlsbFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdChUZXN0RXZlbnRD
b25zdHJ1Y3RvckluaXQmIGV2ZW50SW5pdCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucykKIHsK
ICAgICBvcHRpb25zLmdldCgiYXR0cjIiLCBldmVudEluaXQuYXR0cjIpOwpAQCAtMTM3LDcgKzE2
Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpjb25z
dHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1CiAgICAgcmV0dXJuIFRlc3RFdmVudENvbnN0
cnVjdG9yVjhJbnRlcm5hbDo6Y29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1
Y3RvclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50
Q29uc3RydWN0b3JUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
ZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxk
VHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCkBAIC0xNDksMjggKzE3
OCwzMSBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZp
Z3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbAogICAgIGRlc2MtPlNldENhbGxIYW5kbGVy
KFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwogICAgIAogCisg
ICAgaWYgKGN1cnJlbnRXb3JsZFR5cGUgPT0gTWFpbldvcmxkKQorICAgICAgICBWOERPTUNvbmZp
Z3VyYXRpb246OmFkZFRvVGVtcGxhdGUoZGVzYywgVjhUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHJz
Rm9yTWFpbldvcmxkLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdEV2ZW50Q29uc3RydWN0b3JBdHRy
c0Zvck1haW5Xb3JsZCksIDAsIDAsIGlzb2xhdGUsIGRlZmF1bHRTaWduYXR1cmUpOworCiAgICAg
Ly8gQ3VzdG9tIHRvU3RyaW5nIHRlbXBsYXRlCiAgICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgidG9TdHJpbmciKSwgVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT50b1N0cmlu
Z1RlbXBsYXRlKCkpOwogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFRl
bXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3Js
ZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJh
dG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0g
ICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAg
IFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50
ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0
ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAgICAgICBy
ZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsK
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAg
ICBDb25maWd1cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxh
dGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVt
cGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJl
VjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBj
dXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+
dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0
dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6Okhhc0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpIYXNJ
bnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29y
bGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFz
SW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV2ZW50Q29uc3RydWN0b3IuaAppbmRleCBlY2QxNTliYWNkOGNlNGNhOTkxYjVmNTA3NTNk
MmIyZTM2NGJkYTA5Li5iNDcwYWNhZjg1Mjg4MTk4MzdlZjg2NWFlYjVjMDk2Y2VlMjFmNTkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKQEAgLTgyLDYgKzgyLDI0IEBAIGlubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdEV2ZW50Q29uc3RydWN0b3IqIGlt
cGwsIGNvbnN0IEhvbGRlckNvCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwg
Y2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZv
ck1haW5Xb3JsZChUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFp
bmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIGlmIChVTkxJS0VM
WSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7
CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRX
cmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5I
b2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhv
bGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0RXZlbnRDb25zdHJ1Y3Rv
ciA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdy
YXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwg
Y29udGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRh
aW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
RmFzdChQYXNzUmVmUHRyPCBUZXN0RXZlbnRDb25zdHJ1Y3RvciA+IGltcGwsIGNvbnN0IEhvbGRl
ckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKICAgICByZXR1
cm4gdG9WOEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFy
Z2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudFRhcmdldC5jcHAKaW5kZXggODI1MzcwMDFjYzk3NWI3MWYzYmIwOWVmMWJjN2VhMzUwMDcy
MmJkYy4uZjJhMDdjODgxNWU1OTAxMDIzNmUyYzIxY2MxYzMwNGRkY2I3ODZjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFy
Z2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgc3RhdGljIGNvbnN0IFY4RE9N
Q29uZmlndXJhdGlvbjo6QmF0Y2hlZE1ldGhvZCBWOFRlc3RFdmVudFRhcmdldE1ldGhvZHNbXSA9
IHsKICAgICB7InJlbW92ZUV2ZW50TGlzdGVuZXIiLCBUZXN0RXZlbnRUYXJnZXRWOEludGVybmFs
OjpyZW1vdmVFdmVudExpc3RlbmVyTWV0aG9kQ2FsbGJhY2t9LAogfTsKIAotc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdl
dFRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFy
Z2V0VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7
CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIApAQCAtMTc3LDkgKzE3NywxMiBAQCBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVz
dEV2ZW50VGFyZ2V0VGVtcGxhdGUodgogICAgIGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKS0+U2V0
TmFtZWRQcm9wZXJ0eUhhbmRsZXIoVjhUZXN0RXZlbnRUYXJnZXQ6Om5hbWVkUHJvcGVydHlHZXR0
ZXIsIDAsIDAsIDAsIDApOwogICAgIGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKS0+TWFya0FzVW5k
ZXRlY3RhYmxlKCk7CiAKKyAgICBpZiAoY3VycmVudFdvcmxkVHlwZSA9PSBNYWluV29ybGQpCisg
ICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YWRkVG9UZW1wbGF0ZShkZXNjLCAwLCAwLCAwLCAw
LCBpc29sYXRlLCBkZWZhdWx0U2lnbmF0dXJlKTsKKwogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUg
J2Rpc3BhdGNoRXZlbnQnCiAgICAgY29uc3QgaW50IGRpc3BhdGNoRXZlbnRBcmdjID0gMTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkaXNwYXRjaEV2ZW50QXJndltkaXNw
YXRjaEV2ZW50QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1Rl
bXBsYXRlKCZWOEV2ZW50OjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gZGlzcGF0Y2hFdmVudEFyZ3ZbZGlzcGF0Y2hFdmVudEFyZ2NdID0g
eyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhFdmVudDo6
aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+
IGRpc3BhdGNoRXZlbnRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZGlzcGF0
Y2hFdmVudEFyZ2MsIGRpc3BhdGNoRXZlbnRBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJp
bmc6Ok5ld1N5bWJvbCgiZGlzcGF0Y2hFdmVudCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFRlc3RFdmVudFRhcmdldFY4SW50ZXJuYWw6OmRpc3BhdGNoRXZlbnRNZXRob2RDYWxsYmFjaywg
djhVbmRlZmluZWQoKSwgZGlzcGF0Y2hFdmVudFNpZ25hdHVyZSkpOwogCkBAIC0xODgsMjMgKzE5
MSwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZp
Z3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUodgogICAgIHJldHVybiBkZXNjOwogfQogCi12
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRUYXJnZXQ6Okdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFdmVudFRhcmdl
dDo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3Vy
cmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1h
cDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZp
bmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5k
KCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9
IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlm
IChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAg
ICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRs
ZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9
Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUoZGF0YS0+cmF3VGVt
cGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+
dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmln
dXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3Vy
cmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRl
bXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVy
biB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RFdmVudFRhcmdldDo6SGFzSW5zdGFuY2Uodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdEV2ZW50VGFyZ2V0OjpIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAg
ICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmlu
Zm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogRXZlbnRUYXJnZXQqIFY4VGVzdEV2
ZW50VGFyZ2V0Ojp0b0V2ZW50VGFyZ2V0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRUYXJnZXQuaAppbmRleCAzZDM2NjJhMGI2MzQyNDdkMTBmYTc2OGQ0ZmY1M2I3
ZGU3NjFjNTRhLi45ZWVlODA1YTUwYjIwMGJlODQyMDY1ZDk3ZDkwZTcyMzM3MDEwZmQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZl
bnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRUYXJnZXQuaApAQCAtODQsNiArODQsMjQgQEAgaW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0RXZlbnRUYXJnZXQqIGltcGwsIGNvbnN0IEhvbGRlckNv
bnRhaW4KIH0KIAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFi
bGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRl
c3RFdmVudFRhcmdldCogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdy
YXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAg
IHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxk
KGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFw
cGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVy
LkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xh
c3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1h
aW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0RXZlbnRUYXJnZXQgPiBpbXBsLCBjb25zdCBIb2xkZXJD
b250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJu
IHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsK
K30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4K
IGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdEV2
ZW50VGFyZ2V0ID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBw
YWJsZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250
YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCmluZGV4IDQ3Y2YxZmU4MmI2
Y2VmNTcyZDc5MTVkZWUzMzY5YTNkNWM0YzViZmEuLjUzMDgwY2Y3ZmIxYjY3ZjhlYzRiYjUxMmY1
OTE5MjJlYjdkMGM2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCkBAIC04MCw2ICs4MCwxNyBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAgICAgcmV0dXJuIFRlc3RFeGNlcHRpb25WOEludGVy
bmFsOjpuYW1lQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBuYW1lQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0RXhjZXB0
aW9uKiBpbXAgPSBWOFRlc3RFeGNlcHRpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAg
IHJldHVybiB2OFN0cmluZyhpbXAtPm5hbWUoKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVu
c2FmZUhhbmRsZSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbmFtZUF0dHJH
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdEV4Y2VwdGlvblY4
SW50ZXJuYWw6Om5hbWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiB9
IC8vIG5hbWVzcGFjZSBUZXN0RXhjZXB0aW9uVjhJbnRlcm5hbAogCiBzdGF0aWMgY29uc3QgVjhE
T01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdEV4Y2VwdGlvbkF0dHJzW10g
PSB7CkBAIC04Nyw3ICs5OCwxMiBAQCBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpC
YXRjaGVkQXR0cmlidXRlIFY4VGVzdEV4Y2VwdGlvbkF0dHJzW10gPSB7CiAgICAgeyJuYW1lIiwg
VGVzdEV4Y2VwdGlvblY4SW50ZXJuYWw6Om5hbWVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAogfTsKIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3Js
ZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hl
ZEF0dHJpYnV0ZSBWOFRlc3RFeGNlcHRpb25BdHRyc0Zvck1haW5Xb3JsZFtdID0geworICAgIC8v
IEF0dHJpYnV0ZSAnbmFtZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcn
KQorICAgIHsibmFtZSIsIFRlc3RFeGNlcHRpb25WOEludGVybmFsOjpuYW1lQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKK307CisKK3N0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXhjZXB0aW9u
VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAg
ICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIApAQCAtOTgsMjggKzExNCwzMSBAQCBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV4
Y2VwdGlvblRlbXBsYXRlKHY4OgogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsg
Ly8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICAKIAorICAgIGlmIChj
dXJyZW50V29ybGRUeXBlID09IE1haW5Xb3JsZCkKKyAgICAgICAgVjhET01Db25maWd1cmF0aW9u
OjphZGRUb1RlbXBsYXRlKGRlc2MsIFY4VGVzdEV4Y2VwdGlvbkF0dHJzRm9yTWFpbldvcmxkLCBX
VEZfQVJSQVlfTEVOR1RIKFY4VGVzdEV4Y2VwdGlvbkF0dHJzRm9yTWFpbldvcmxkKSwgMCwgMCwg
aXNvbGF0ZSwgZGVmYXVsdFNpZ25hdHVyZSk7CisKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVt
cGxhdGUKICAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCBW
OFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5nVGVtcGxhdGUoKSk7CiAgICAgcmV0
dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRl
c3RFeGNlcHRpb246OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBW
OFRlc3RFeGNlcHRpb246OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0
YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0
YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVy
YXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZp
bmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5
cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5k
bGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZShk
YXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsK
LSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAg
ICAgICBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgm
aW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAg
IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwog
ICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RFeGNlcHRpb246Okhhc0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RFeGNlcHRpb246Okhhc0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUp
OworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5j
ZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24u
aAppbmRleCA5Y2Y4MzE5NTAyMGY2MGUwMjRiNjYwYjQ0ZDJiMGFlMzdiMWU0MDcwLi5hNDI5YWJi
MTEzYjM0MTdmMjY1YjU4ZmE5YjA0Njc5Zjg0OWI5Y2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCkBA
IC04MCw2ICs4MCwyNCBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRl
c3RFeGNlcHRpb24qIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lcgogfQogCiB0ZW1wbGF0ZTxj
bGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVzdEV4Y2VwdGlvbiogaW1wbCwgY29u
c3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQorewor
ICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVy
LkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9N
RGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBl
ci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGlt
cGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0
RXhjZXB0aW9uID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBw
YWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBs
LmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9s
ZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RFeGNlcHRpb24gPiBpbXBsLCBjb25zdCBIb2xk
ZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0
dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdElu
dGVyZmFjZS5jcHAKaW5kZXggZTBmOGNjYWI2ZTkxMzdiZGRlNjQ3YWRmNTU2NTdlOGJmNWJjMGJk
YS4uZmU2MjNkMDAzODE5Y2NjZjhkMzM2ZGQ1N2IwMDUzYjkxNTA2YjhlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdElu
dGVyZmFjZS5jcHAKQEAgLTk3LDYgKzk3LDI0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gc3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4CiAK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHJBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiB2OEludGVnZXIoVGVzdFN1cHBsZW1l
bnRhbDo6c3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgp
KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlB
dHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0SW50
ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyQXR0ckdldHRl
ckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3Vw
cGxlbWVudGFsU3RhdGljQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgcmV0dXJuIHY4U3RyaW5nKFRl
c3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoKSwgaW5mby5HZXRJc29sYXRl
KCksIFJldHVyblVuc2FmZUhhbmRsZSk7CkBAIC0xMTUsNiArMTMzLDI0IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJHZXR0ZXJDYWxsYmFj
ayh2ODo6TG9jYWw8CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRp
b24xMikKIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxTdGF0aWNB
dHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gdjhTdHJpbmcoVGVzdFN1
cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RhdGljQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSwg
UmV0dXJuVW5zYWZlSGFuZGxlKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMTIpCisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVu
dGFsU3RhdGljQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1
cm4gVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRp
dGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKKwogc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3RhdGlj
QXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFY4VFJZ
Q0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPD4sIHYsIHZh
bHVlKTsKQEAgLTEzNSw2ICsxNzEsMjYgQEAgc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3RhdGlj
QXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKIAogI2lm
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogCitzdGF0aWMgdm9p
ZCBzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJD
RV9WT0lEKFY4U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOworICAgIFRlc3RTdXBwbGVtZW50
YWw6OnNldFN1cHBsZW1lbnRhbFN0YXRpY0F0dHIodik7CisgICAgcmV0dXJuOworfQorCisjZW5k
aWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworc3RhdGljIHZvaWQg
c3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6
OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVl
LCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RyMUF0dHJH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7CiAgICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE1NCw2ICsyMTAsMjUgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxTdHIxQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2Nh
bDx2ODo6U3QKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEy
KQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjFBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVy
ZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKFRlc3RT
dXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0cjEoaW1wKSwgaW5mby5HZXRJc29sYXRlKCksIFJl
dHVyblVuc2FmZUhhbmRsZSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8
IEVOQUJMRShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjEyKQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRh
bFN0cjFBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RJ
bnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIxQXR0ckdldHRlckZvck1haW5Xb3Js
ZChuYW1lLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTIpCisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3Ry
MkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7CiAgICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNl
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE3Myw2ICsyNDgsMjUgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxTdHIyQXR0ckdldHRlckNhbGxiYWNrKHY4
OjpMb2NhbDx2ODo6U3QKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjJB
dHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVz
dEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5n
KFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0cjIoaW1wKSwgaW5mby5HZXRJc29sYXRl
KCksIFJldHVyblVuc2FmZUhhbmRsZSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBs
ZW1lbnRhbFN0cjJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJu
IFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIyQXR0ckdldHRlckZvck1h
aW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMTIpCisKIHN0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbFN0cjJBdHRyU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0SW50ZXJmYWNlKiBpbXAg
PSBWOFRlc3RJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTk0LDYgKzI4
OCwyNyBAQCBzdGF0aWMgdm9pZCBzdXBwbGVtZW50YWxTdHIyQXR0clNldHRlckNhbGxiYWNrKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TAogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAKK3N0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbFN0cjJB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmlu
Z1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKKyAgICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVt
ZW50YWxTdHIyKGltcCwgdik7CisgICAgcmV0dXJuOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENv
bmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3Ry
MkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENv
bmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RyM0F0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICByZXR1
cm4gVjhUZXN0SW50ZXJmYWNlOjpzdXBwbGVtZW50YWxTdHIzQXR0ckdldHRlckN1c3RvbShuYW1l
LCBpbmZvKTsKQEAgLTIwMyw2ICszMTgsMTUgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBzdXBwbGVtZW50YWxTdHIzQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKIAog
I2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjNBdHRyR2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFY4VGVzdEludGVyZmFjZTo6c3VwcGxlbWVudGFs
U3RyM0F0dHJHZXR0ZXJDdXN0b20obmFtZSwgaW5mbyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCiBzdGF0aWMgdm9pZCBzdXBwbGVtZW50YWxT
dHIzQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBWOFRlc3RJbnRlcmZhY2U6OnN1cHBsZW1lbnRhbFN0cjNBdHRyU2V0dGVyQ3VzdG9tKG5hbWUs
IHZhbHVlLCBpbmZvKTsKQEAgLTIxMiw2ICszMzYsMTUgQEAgc3RhdGljIHZvaWQgc3VwcGxlbWVu
dGFsU3RyM0F0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkwKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogCitz
dGF0aWMgdm9pZCBzdXBwbGVtZW50YWxTdHIzQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBWOFRlc3RJbnRlcmZhY2U6OnN1
cHBsZW1lbnRhbFN0cjNBdHRyU2V0dGVyQ3VzdG9tKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsTm9kZUF0dHJHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAg
VGVzdEludGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKQEAgLTIzMSw2ICszNjQsMjUgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBz
dXBwbGVtZW50YWxOb2RlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKIAogI2lm
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE5vZGVBdHRyR2V0dGVyRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRlc3RTdXBw
bGVtZW50YWw6OnN1cHBsZW1lbnRhbE5vZGUoaW1wKSwgaW5mbywgaW1wKTsKK30KKworI2VuZGlm
IC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5B
QkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsTm9kZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICByZXR1cm4gVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRh
bE5vZGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCisjZW5kaWYgLy8g
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKwogc3RhdGljIHZvaWQgc3VwcGxl
bWVudGFsTm9kZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CkBAIC0yNTIsNiArNDA0LDI3IEBAIHN0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbE5vZGVB
dHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMCiAKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIAorc3RhdGljIHZv
aWQgc3VwcGxlbWVudGFsTm9kZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFj
ZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgTm9kZSogdiA9IFY4Tm9kZTo6SGFzSW5z
dGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRl
KCkpKSA/IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1
ZSkpIDogMDsKKyAgICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxOb2RlKGltcCwg
V1RGOjpnZXRQdHIodikpOworICAgIHJldHVybjsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKK3N0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbE5vZGVB
dHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0clNl
dHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHN1cHBsZW1lbnRhbE1ldGhvZDFNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRlcmZhY2U6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwpAQCAtMzgxLDYgKzU1NCwzMyBAQCBzdGF0aWMgY29uc3QgVjhET01D
b25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdEludGVyZmFjZUF0dHJzW10gPSB7
CiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiB9
OwogCitzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4
VGVzdEludGVyZmFjZUF0dHJzRm9yTWFpbldvcmxkW10gPSB7CisjaWYgRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgLy8gQXR0cmlidXRlICdzdXBwbGVtZW50
YWxTdGF0aWNSZWFkT25seUF0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRy
OiAnQ29uZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCisgICAgeyJzdXBwbGVtZW50YWxTdGF0aWNS
ZWFkT25seUF0dHIiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGlj
UmVhZE9ubHlBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICAv
LyBBdHRyaWJ1dGUgJ3N1cHBsZW1lbnRhbFN0YXRpY0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBF
eHRBdHRyOiAnQ29uZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCisgICAgeyJzdXBwbGVtZW50YWxT
dGF0aWNBdHRyIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0
dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RJbnRlcmZhY2VWOEludGVybmFs
OjpzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKKyAgICAvLyBBdHRyaWJ1dGUgJ3N1cHBsZW1lbnRhbFN0cjEnIChUeXBlOiAncmVhZG9ubHkg
YXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCisgICAgeyJz
dXBwbGVtZW50YWxTdHIxIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0
cjFBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorI2Vu
ZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIC8vIEF0dHJpYnV0
ZSAnc3VwcGxlbWVudGFsU3RyMicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDb25kaXRp
b25hbCBJbXBsZW1lbnRlZEJ5JykKKyAgICB7InN1cHBsZW1lbnRhbFN0cjIiLCBUZXN0SW50ZXJm
YWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRyU2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorI2VuZGlmIC8vIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorI2lmIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIC8vIEF0dHJpYnV0ZSAnc3VwcGxlbWVudGFs
U3RyMycgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDdXN0b21TZXR0ZXIgQ3VzdG9tR2V0
dGVyIENvbmRpdGlvbmFsIEltcGxlbWVudGVkQnknKQorICAgIHsic3VwcGxlbWVudGFsU3RyMyIs
IFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIzQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3Ry
M0F0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisjZW5kaWYg
Ly8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisjaWYgRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgLy8gQXR0cmlidXRlICdz
dXBwbGVtZW50YWxOb2RlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFs
IEltcGxlbWVudGVkQnknKQorICAgIHsic3VwcGxlbWVudGFsTm9kZSIsIFRlc3RJbnRlcmZhY2VW
OEludGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
LCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTm9kZUF0dHJTZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisjZW5kaWYgLy8gRU5BQkxFKENvbmRp
dGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCit9OworCiBzdGF0aWMgY29uc3QgVjhET01D
b25maWd1cmF0aW9uOjpCYXRjaGVkTWV0aG9kIFY4VGVzdEludGVyZmFjZU1ldGhvZHNbXSA9IHsK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICB7InN1
cHBsZW1lbnRhbE1ldGhvZDEiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFs
TWV0aG9kMU1ldGhvZENhbGxiYWNrfSwKQEAgLTQxOCw3ICs2MTgsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmCiAgICAgcmV0dXJuIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpjb25zdHJ1Y3Rv
cihhcmdzKTsKIH0KIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5
cGUgd29ybGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5
cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwog
CkBAIC00MzYsOSArNjM2LDEyIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6CiAgICAgVU5VU0VE
X1BBUkFNKHByb3RvKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAg
ICAKIAorICAgIGlmIChjdXJyZW50V29ybGRUeXBlID09IE1haW5Xb3JsZCkKKyAgICAgICAgVjhE
T01Db25maWd1cmF0aW9uOjphZGRUb1RlbXBsYXRlKGRlc2MsIFY4VGVzdEludGVyZmFjZUF0dHJz
Rm9yTWFpbldvcmxkLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdEludGVyZmFjZUF0dHJzRm9yTWFp
bldvcmxkKSwgMCwgMCwgaXNvbGF0ZSwgZGVmYXVsdFNpZ25hdHVyZSk7CisKICAgICAvLyBDdXN0
b20gU2lnbmF0dXJlICdzdXBwbGVtZW50YWxNZXRob2QyJwogICAgIGNvbnN0IGludCBzdXBwbGVt
ZW50YWxNZXRob2QyQXJnYyA9IDI7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gc3VwcGxlbWVudGFsTWV0aG9kMkFyZ3Zbc3VwcGxlbWVudGFsTWV0aG9kMkFyZ2NdID0geyB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5cGUpIH07Cisg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3VwcGxlbWVudGFsTWV0aG9kMkFy
Z3Zbc3VwcGxlbWVudGFsTWV0aG9kMkFyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgm
VjhUZXN0T2JqOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6
OlNpZ25hdHVyZT4gc3VwcGxlbWVudGFsTWV0aG9kMlNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6
Ok5ldyhkZXNjLCBzdXBwbGVtZW50YWxNZXRob2QyQXJnYywgc3VwcGxlbWVudGFsTWV0aG9kMkFy
Z3YpOwogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAg
IHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdXBwbGVtZW50YWxNZXRob2QyIiks
IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBs
ZW1lbnRhbE1ldGhvZDJNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgc3VwcGxlbWVudGFs
TWV0aG9kMlNpZ25hdHVyZSkpOwpAQCAtNDUzLDIzICs2NTYsMjMgQEAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1w
bGF0ZSh2ODoKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBl
cklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAg
ICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+
dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRh
dGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6
VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRX
b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVN
YXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVl
OwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdElu
dGVyZmFjZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29s
YXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZp
bmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKGRh
dGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVu
dFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRk
KCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdEludGVy
ZmFjZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdEludGVy
ZmFjZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIHJl
dHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywg
dmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAK
IEFjdGl2ZURPTU9iamVjdCogVjhUZXN0SW50ZXJmYWNlOjp0b0FjdGl2ZURPTU9iamVjdCh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAppbmRleCAwNjE5NjI4
NmM2MTMzZmM2NDM1Y2MwOWZiNzJkOTc0NzY5YWI0YzliLi5lYTAxY2UyYzliZDQyOTA2ZDJiMTI4
YWViMjljNjA3Mzg5NGM5Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCkBAIC04NCw2ICs4NCwyNCBA
QCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RJbnRlcmZhY2UqIGlt
cGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lcgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250
YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OEZhc3RGb3JNYWluV29ybGQoVGVzdEludGVyZmFjZSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFp
bmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIGlmIChVTkxJS0VM
WSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7
CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRX
cmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5I
b2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhv
bGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0SW50ZXJmYWNlID4gaW1w
bCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxl
KQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWlu
ZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBj
bGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBh
c3NSZWZQdHI8IFRlc3RJbnRlcmZhY2UgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNv
bnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGlt
cGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCBkMTQ3YzdiZmU0YTM2NDcxYjk4NDZkNjViZTUy
YTBjNGFhNTZlZDljLi41OWE4N2VjMmNhMmM3MzU4N2Y4MWU5NDVjYThmNDUxOTk1NWQzMWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC05Miw3
ICs5Miw3IEBAIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRNZXRob2Qg
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lck1ldGhvCiAgICAgeyJtZXRob2QiLCBUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lclY4SW50ZXJuYWw6Om1ldGhvZE1ldGhvZENhbGxiYWNrfSwKIH07
CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJl
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUZW1wbGF0ZSh2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUs
IFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25s
eVByb3RvdHlwZSgpOwogCkBAIC0xMDcsMjggKzEwNywzMSBAQCBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZQogICAgIFVOVVNFRF9QQVJBTShwcm90byk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwg
bm90IGJlIHVzZWQuCiAgICAgCiAKKyAgICBpZiAoY3VycmVudFdvcmxkVHlwZSA9PSBNYWluV29y
bGQpCisgICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YWRkVG9UZW1wbGF0ZShkZXNjLCAwLCAw
LCAwLCAwLCBpc29sYXRlLCBkZWZhdWx0U2lnbmF0dXJlKTsKKwogICAgIC8vIEN1c3RvbSB0b1N0
cmluZyB0ZW1wbGF0ZQogICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInRvU3Ry
aW5nIiksIFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+dG9TdHJpbmdUZW1wbGF0ZSgpKTsK
ICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRl
KiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRU
eXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRv
ciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVt
cGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAh
PSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAg
Q29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRlbXBsYXRlKGRhdGEtPnJhd1Rl
bXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEt
PnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZp
Z3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0
ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwor
ICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwp
OwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRl
KiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVl
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBl
KQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0
YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxk
VHlwZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgK
aW5kZXggMzBiNWRlMDRkNjlmZGMyODRlMjc4MmM3YTc4Nzc5M2NiOTU5MTdmZS4uY2MzMjg3YjMy
YWI4YWZlNjExMGU4NTAxNmM4NTQzMGFlNGQ3YmM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5oCkBAIC04MCw2ICs4MCwyNCBAQCBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBpbXBsLCBj
b25zdCBIbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBw
YWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQo
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYg
Y29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBpZiAoVU5MSUtFTFkoIWlt
cGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBl
ckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVy
KCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJD
b250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3
cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCks
IGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250
YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OEZhc3QoUGFzc1JlZlB0cjwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgPiBpbXBsLCBjb25z
dCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAg
ICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RO
YW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCAxZWNjNDRiN2UxNGY1NmRmZGI2
MWY5N2MxNzA3ODNkNGNmY2FkYTRjLi4xYTY1YWFiZGU0ZjFjMTg1ODQ2YjcxYjg0NGExMTkxODcw
YzMwOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0xMDksNyAr
MTA5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3ROYW1lZENvbnN0cnVj
dG9yQ29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODoKICAgICByZXR1cm4gc2V0RE9NRXhjZXB0
aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkdldFRlbXBs
YXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9y
Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBjYWNoZWRUZW1wbGF0ZTsKICAgICBpZiAoIWNhY2hlZFRlbXBs
YXRlLklzRW1wdHkoKSkKQEAgLTEyMSwxMyArMTIxLDEzIEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkdldFRl
bXBsCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSByZXN1bHQt
Pkluc3RhbmNlVGVtcGxhdGUoKTsKICAgICBpbnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50
KFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OmludGVybmFsRmllbGRDb3VudCk7CiAgICAgcmVzdWx0
LT5TZXRDbGFzc05hbWUodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJUZXN0TmFtZWRDb25zdHJ1Y3Rv
ciIpKTsKLSAgICByZXN1bHQtPkluaGVyaXQoVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0VGVt
cGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSk7CisgICAgcmVzdWx0LT5Jbmhlcml0KFY4VGVzdE5h
bWVkQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpKTsK
IAogICAgIGNhY2hlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+OjpOZXcoaXNvbGF0ZSwgcmVzdWx0KTsKICAgICByZXR1cm4gY2FjaGVkVGVtcGxhdGU7CiB9
CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJl
VjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3
b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3Js
ZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgp
OwogCkBAIC0xMzgsMjggKzEzOCwzMSBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbAogICAgIFVO
VVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBu
b3QgYmUgdXNlZC4KICAgICAKIAorICAgIGlmIChjdXJyZW50V29ybGRUeXBlID09IE1haW5Xb3Js
ZCkKKyAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjphZGRUb1RlbXBsYXRlKGRlc2MsIDAsIDAs
IDAsIDAsIGlzb2xhdGUsIGRlZmF1bHRTaWduYXR1cmUpOworCiAgICAgLy8gQ3VzdG9tIHRvU3Ry
aW5nIHRlbXBsYXRlCiAgICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgidG9TdHJp
bmciKSwgVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT50b1N0cmluZ1RlbXBsYXRlKCkpOwog
ICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xh
dGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29s
YXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAg
VjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7
Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRh
dGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAh
PSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURh
dGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJy
ZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBs
YXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52
YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRl
c3ROYW1lZENvbnN0cnVjdG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxk
VHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRU
eXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0TmFtZWRDb25z
dHJ1Y3RvclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBl
KSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3Vy
cmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQog
Ci1ib29sIFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29y
bGRUeXBlKQorYm9vbCBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRU
eXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICBy
ZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8s
IHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogQWN0aXZlRE9NT2JqZWN0KiBWOFRlc3RO
YW1lZENvbnN0cnVjdG9yOjp0b0FjdGl2ZURPTU9iamVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCmluZGV4IDM5NDM2NGE1N2Ri
Y2RiYzEyZWI2MjU4ZTg2ODQzMTQ4M2U0MWVhZTkuLjljYjUyMDk3YzVhYTgxM2M0YmNhYThmYmRj
YzBkNjI3NTU4MzZlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaApAQCAtODcs
NiArODcsMjQgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0TmFt
ZWRDb25zdHJ1Y3RvciogaW1wbCwgY29uc3QgSG9sZGVyQ28KIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
SG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBsLCBj
b25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7
CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWlu
ZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBE
T01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFw
cGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAo
aW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IFRl
c3ROYW1lZENvbnN0cnVjdG9yID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWlu
ZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5X
b3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8
Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3ROYW1lZENvbnN0cnVjdG9yID4g
aW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBh
YmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBw
YWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Tm9kZS5jcHAKaW5kZXggZjM3ZjY2N2EyMjBiY2EwZmRjNTZkMWYwYWE2M2FlODU4
OWU1OGUxZS4uOTk0MTNkZDE4MDliZWEyNzkxYzQ0YzQ1Y2E2Mjg4MDlkZDU3ZTA0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RO
b2RlLmNwcApAQCAtOTMsNDAgKzkzLDQzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RO
b2RlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAg
cmV0dXJuIFRlc3ROb2RlVjhJbnRlcm5hbDo6Y29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0Tm9k
ZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1w
bGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBk
ZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+
IGRlZmF1bHRTaWduYXR1cmU7Ci0gICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJh
dGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3ROb2RlIiwgVjhOb2RlOjpHZXRUZW1w
bGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpLCBWOFRlc3ROb2RlOjppbnRlcm5hbEZpZWxkQ291bnQs
CisgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVt
cGxhdGUoZGVzYywgIlRlc3ROb2RlIiwgVjhOb2RlOjpHZXRUZW1wbGF0ZShpc29sYXRlLCBjdXJy
ZW50V29ybGRUeXBlKSwgVjhUZXN0Tm9kZTo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICAw
LCAwLAogICAgICAgICAwLCAwLCBpc29sYXRlKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNp
Z25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAgICAgZGVz
Yy0+U2V0Q2FsbEhhbmRsZXIoVjhUZXN0Tm9kZTo6Y29uc3RydWN0b3JDYWxsYmFjayk7CiAgICAg
CiAKKyAgICBpZiAoY3VycmVudFdvcmxkVHlwZSA9PSBNYWluV29ybGQpCisgICAgICAgIFY4RE9N
Q29uZmlndXJhdGlvbjo6YWRkVG9UZW1wbGF0ZShkZXNjLCAwLCAwLCAwLCAwLCBpc29sYXRlLCBk
ZWZhdWx0U2lnbmF0dXJlKTsKKwogICAgIC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQogICAg
IGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInRvU3RyaW5nIiksIFY4UGVySXNvbGF0
ZURhdGE6OmN1cnJlbnQoKS0+dG9TdHJpbmdUZW1wbGF0ZSgpKTsKICAgICByZXR1cm4gZGVzYzsK
IH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5vZGU6Okdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROb2RlOjpHZXRU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29y
bGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVy
YXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwot
ICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKKyAg
ICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+
dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3Vs
dCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAg
cmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7
CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAg
ICAgQ29uZmlndXJlVjhUZXN0Tm9kZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3
b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdv
cmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE5vZGVU
ZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xh
dGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3Js
ZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBW
OFRlc3ROb2RlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0
Tm9kZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIHJl
dHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywg
dmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAK
IEV2ZW50VGFyZ2V0KiBWOFRlc3ROb2RlOjp0b0V2ZW50VGFyZ2V0KHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROb2RlLmgKaW5kZXggNTg2MGU5MTE1YzBiMDM0YmM1MWNhNTA5MzU2NTc3
ODBjYzNjYmE1OC4uOWUwYzJmOWMwZDRhZjE1MDk2N2U3ZmY4Y2E2YTU5NTVkNGI5NWNkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
Tm9kZS5oCkBAIC04Miw2ICs4MiwyNCBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjhGYXN0KFRlc3ROb2RlKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbgogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVzdE5vZGUqIGltcGws
IGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkK
K3sKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRh
aW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdy
YXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3Jh
cChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwg
VGVzdE5vZGUgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBh
YmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwu
Z2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xk
ZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdE5vZGUgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250
YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRv
VjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXgg
MDc4OTIxMGY5ZmM5NjQwNjZkZmZmM2Q2ODc1MWRkMWQyOGRhOWI4OS4uOTRlZDM2NTA2NmYyNjAy
OTkyZTA3NGZlZTRiNGNmZjZiNTkzNjdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTEyMyw2ICsxMjMsMTcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWFkT25seUxvbmdBdHRyQXR0ckdldHRl
ckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6
OnJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPnJlYWRPbmx5TG9uZ0F0dHIoKSwgaW5mby5H
ZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRPbmx5
TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRl
c3RPYmpWOEludGVybmFsOjpyZWFkT25seUxvbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChu
YW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWFkT25seVN0
cmluZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMzQsNiArMTQ1LDE3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gcmVhZE9ubHlTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpM
b2NhbDx2ODo6CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVN0cmluZ0F0
dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJlYWRPbmx5U3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1
cm4gdjhTdHJpbmcoaW1wLT5yZWFkT25seVN0cmluZ0F0dHIoKSwgaW5mby5HZXRJc29sYXRlKCks
IFJldHVyblVuc2FmZUhhbmRsZSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
cmVhZE9ubHlTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlTdHJpbmdBdHRyQXR0ckdldHRlckZv
ck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiByZWFkT25seVRlc3RPYmpBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTUyLDYgKzE3NCwyNCBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRPbmx5VGVzdE9iakF0dHJBdHRyR2V0dGVy
Q2FsbGJhY2sodjg6OkxvY2FsPHY4OgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVh
ZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKKyAgICBSZWZQdHI8VGVzdE9iaj4gcmVzdWx0ID0gaW1wLT5yZWFkT25seVRlc3RPYmpB
dHRyKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSByZXN1bHQuZ2V0KCkg
PyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyKHJlc3VsdC5n
ZXQoKSwgaW5mby5HZXRJc29sYXRlKCkpKSA6IHY4VW5kZWZpbmVkKCk7CisgICAgaWYgKHdyYXBw
ZXIuSXNFbXB0eSgpKSB7CisgICAgICAgIHdyYXBwZXIgPSB0b1Y4KHJlc3VsdC5nZXQoKSwgaW5m
by5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgICAgICBpZiAoIXdyYXBwZXIuSXNF
bXB0eSgpKQorICAgICAgICAgICAgVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OnNldE5hbWVkSGlkZGVu
UmVmZXJlbmNlKGluZm8uSG9sZGVyKCksICJyZWFkT25seVRlc3RPYmpBdHRyIiwgd3JhcHBlcik7
CisgICAgfQorICAgIHJldHVybiB3cmFwcGVyOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHJlYWRPbmx5VGVzdE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVRlc3RPYmpBdHRyQXR0
ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBzdGF0aWNSZWFkT25seUxvbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICByZXR1
cm4gdjhJbnRlZ2VyKFRlc3RPYmo6OnN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIoKSwgaW5mby5HZXRJ
c29sYXRlKCkpOwpAQCAtMTYyLDYgKzIwMiwxNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHN0YXRpY1JlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPAog
ICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljUmVhZE9ubHlMb25nQXR0ckF0dHJH
ZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3Rh
dGljUmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJu
IHY4SW50ZWdlcihUZXN0T2JqOjpzdGF0aWNSZWFkT25seUxvbmdBdHRyKCksIGluZm8uR2V0SXNv
bGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdGF0aWNSZWFkT25s
eUxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBU
ZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljUmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3Rh
dGljU3RyaW5nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgcmV0dXJuIHY4U3RyaW5nKFRlc3RPYmo6
OnN0YXRpY1N0cmluZ0F0dHIoKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhhbmRs
ZSk7CkBAIC0xNzIsNiArMjIyLDE2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3Rh
dGljU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0CiAgICAgcmV0
dXJuIFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNTdHJpbmdBdHRyQXR0ckdldHRlcihuYW1lLCBp
bmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdGF0aWNTdHJpbmdBdHRy
QXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gdjhTdHJpbmcoVGVzdE9iajo6
c3RhdGljU3RyaW5nQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFuZGxl
KTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdGF0aWNTdHJpbmdBdHRyQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6c3RhdGljU3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7
Cit9CisKIHN0YXRpYyB2b2lkIHN0YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNF
X1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CkBAIC0xODQsNiArMjQ0LDE4IEBA
IHN0YXRpYyB2b2lkIHN0YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0
cmluZ0F0dHJBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQg
c3RhdGljU3RyaW5nQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChW
OFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKKyAgICBUZXN0T2JqOjpzZXRTdGF0aWNTdHJp
bmdBdHRyKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgc3RhdGljU3RyaW5nQXR0
ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBlbnVtQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE5NSw2ICsyNjcsMTcgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnVtQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmEKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVudW1B
dHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBlbnVtQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhTdHJp
bmcoaW1wLT5lbnVtQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFuZGxl
KTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnVtQXR0ckF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVu
dW1BdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZv
aWQgZW51bUF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAt
MjExLDYgKzI5NCwyMiBAQCBzdGF0aWMgdm9pZCBlbnVtQXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OgogICAgIFRlc3RPYmpWOElu
dGVybmFsOjplbnVtQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0
aWMgdm9pZCBlbnVtQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lEKFY4
U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOworICAgIFN0cmluZyBzdHJpbmcgPSB2OworICAg
IGlmICghKHN0cmluZyA9PSAiIiB8fCBzdHJpbmcgPT0gIkVudW1WYWx1ZTEiIHx8IHN0cmluZyA9
PSAiRW51bVZhbHVlMiIgfHwgc3RyaW5nID09ICJFbnVtVmFsdWUzIikpCisgICAgICAgIHJldHVy
bjsKKyAgICBpbXAtPnNldEVudW1BdHRyKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZv
aWQgZW51bUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjplbnVtQXR0ckF0dHJTZXR0
ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHNob3J0QXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTIyMiw2ICszMjEsMTcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzaG9ydEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2so
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnNo
b3J0QXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gc2hvcnRBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2
OEludGVnZXIoaW1wLT5zaG9ydEF0dHIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNob3J0QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnNob3J0QXR0ckF0dHJH
ZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHNob3J0QXR0
ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0yMzUsNiArMzQ1
LDE5IEBAIHN0YXRpYyB2b2lkIHNob3J0QXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4CiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OnNo
b3J0QXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBz
aG9ydEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRTaG9ydEF0dHIo
dik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBzaG9ydEF0dHJBdHRyU2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RPYmpWOEludGVybmFsOjpzaG9ydEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZh
bHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1bnNpZ25lZFNo
b3J0QXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTI0Niw2ICszNjksMTcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB1bnNpZ25lZFNob3J0QXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djg6OlMKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkU2hvcnRBdHRy
QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB1bnNpZ25lZFNob3J0QXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4g
djhJbnRlZ2VyKGltcC0+dW5zaWduZWRTaG9ydEF0dHIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwor
fQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHVuc2lnbmVkU2hvcnRBdHRyQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5h
bDo6dW5zaWduZWRTaG9ydEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOwor
fQorCiBzdGF0aWMgdm9pZCB1bnNpZ25lZFNob3J0QXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0yNTksNiArMzkzLDE5IEBAIHN0YXRpYyB2b2lkIHVuc2ln
bmVkU2hvcnRBdHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6CiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkU2hvcnRBdHRyQXR0clNldHRl
cihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHVuc2lnbmVkU2hvcnRBdHRy
QXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAg
ICBpbnQgdiA9IHRvVUludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNldFVuc2lnbmVkU2hvcnRBdHRy
KHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgdW5zaWduZWRTaG9ydEF0dHJBdHRy
U2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZFNob3J0QXR0ckF0dHJTZXR0ZXJGb3JN
YWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGxvbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMjcwLDYgKzQxNywxNyBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYQogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0dHJB
dHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGxvbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OEludGVnZXIo
aW1wLT5sb25nQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gbG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGxvbmdBdHRyQXR0clNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTI4Myw2ICs0NDEsMTkgQEAgc3RhdGlj
IHZvaWQgbG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODoKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0dHJBdHRyU2V0
dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgbG9uZ0F0dHJBdHRyU2V0
dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2
ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRMb25nQXR0cih2KTsKKyAgICByZXR1cm47
Cit9CisKK3N0YXRpYyB2b2lkIGxvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6
bG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwog
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBsb25nTG9uZ0F0dHJBdHRyR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBA
IC0yOTQsNiArNDY1LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbG9uZ0xvbmdB
dHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nCiAgICAgcmV0dXJuIFRl
c3RPYmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQog
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGxvbmdMb25nQXR0ckF0dHJHZXR0ZXJGb3JN
YWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KHN0YXRpY19jYXN0PGRvdWJs
ZT4oaW1wLT5sb25nTG9uZ0F0dHIoKSkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGxvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBy
ZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29y
bGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGxvbmdMb25nQXR0ckF0dHJTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0zMDcsNiArNDg5LDE5IEBAIHN0YXRp
YyB2b2lkIGxvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0
dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBsb25nTG9uZ0F0
dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIGxvbmcgbG9uZyB2ID0gdG9JbnQ2NCh2YWx1ZSk7CisgICAgaW1wLT5zZXRMb25nTG9uZ0F0
dHIodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBsb25nTG9uZ0F0dHJBdHRyU2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIFRlc3RPYmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1
bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTMxOCw2ICs1MTMsMTcgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYWw8djgKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnVuc2ln
bmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKKyAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KHN0YXRpY19jYXN0PGRvdWJsZT4oaW1w
LT51bnNpZ25lZExvbmdMb25nQXR0cigpKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0
dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHVuc2ln
bmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
QEAgLTMzMSw2ICs1MzcsMTkgQEAgc3RhdGljIHZvaWQgdW5zaWduZWRMb25nTG9uZ0F0dHJBdHRy
U2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHYKICAgICBUZXN0T2Jq
VjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBp
bmZvKTsKIH0KIAorc3RhdGljIHZvaWQgdW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyB2ID0gdG9JbnQ2NCh2YWx1ZSk7CisgICAgaW1wLT5zZXRVbnNpZ25lZExvbmdMb25n
QXR0cih2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHVuc2lnbmVkTG9uZ0xvbmdB
dHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMzQyLDYgKzU2MSwx
NyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFs
OjpzdHJpbmdBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJl
dHVybiB2OFN0cmluZyhpbXAtPnN0cmluZ0F0dHIoKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVy
blVuc2FmZUhhbmRsZSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5n
QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9i
alY4SW50ZXJuYWw6OnN0cmluZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8p
OworfQorCiBzdGF0aWMgdm9pZCBzdHJpbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKQEAgLTM1NSw2ICs1ODUsMTkgQEAgc3RhdGljIHZvaWQgc3RyaW5nQXR0
ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHYKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFs
dWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBzdHJpbmdBdHRyQXR0clNldHRlckZvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBWOFRSWUNBVENIX0ZPUl9W
OFNUUklOR1JFU09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CisgICAg
aW1wLT5zZXRTdHJpbmdBdHRyKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgc3Ry
aW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJBdHRyU2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0ZXN0T2JqQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTM2Nyw2ICs2MTAsMTggQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0ZXN0T2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFj
ayh2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnRl
c3RPYmpBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0ZXN0T2JqQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1
cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wLT50ZXN0T2JqQXR0cigpLCBpbmZvLCBpbXApOwor
fQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRlc3RPYmpBdHRyQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIEZlYXR1cmVPYnNlcnZlcjo6b2JzZXJ2ZShhY3Rp
dmVET01XaW5kb3coQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpKSwgRmVhdHVyZU9ic2VydmVyOjpU
ZXN0RmVhdHVyZSk7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp0ZXN0T2JqQXR0ckF0
dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RP
YmpBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTM4MSw2
ICs2MzYsMjAgQEAgc3RhdGljIHZvaWQgdGVzdE9iakF0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDwKICAgICBUZXN0T2JqVjhJbnRlcm5h
bDo6dGVzdE9iakF0dHJBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGlj
IHZvaWQgdGVzdE9iakF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZh
bHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBW
OFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6
IDA7CisgICAgaW1wLT5zZXRUZXN0T2JqQXR0cihXVEY6OmdldFB0cih2KSk7CisgICAgcmV0dXJu
OworfQorCitzdGF0aWMgdm9pZCB0ZXN0T2JqQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgRmVhdHVyZU9ic2VydmVy
OjpvYnNlcnZlKGFjdGl2ZURPTVdpbmRvdyhCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCkpLCBGZWF0
dXJlT2JzZXJ2ZXI6OlRlc3RGZWF0dXJlKTsKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9i
akF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBYTUxPYmpBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMzky
LDYgKzY2MSwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFhNTE9iakF0dHJBdHRy
R2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJuIFRlc3RPYmpW
OEludGVybmFsOjpYTUxPYmpBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBYTUxPYmpBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXAtPnhtbE9iakF0dHIoKSwgaW5m
bywgaW1wKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBYTUxPYmpBdHRyQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6WE1MT2JqQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisK
IHN0YXRpYyB2b2lkIFhNTE9iakF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOwpAQCAtNDA1LDYgKzY4NSwxOSBAQCBzdGF0aWMgdm9pZCBYTUxPYmpBdHRyQXR0clNl
dHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8dgogICAg
IFRlc3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5m
byk7CiB9CiAKK3N0YXRpYyB2b2lkIFhNTE9iakF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6
Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0
SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QodmFsdWUpKSA6IDA7CisgICAgaW1wLT5zZXRYTUxPYmpBdHRyKFdURjo6Z2V0UHRyKHYp
KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIFhNTE9iakF0dHJBdHRyU2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2
YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlQXR0
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwpAQCAtNDE2LDYgKzcwOSwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNyZWF0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZQog
ICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0ckdldHRlcihuYW1lLCBpbmZv
KTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4Qm9vbGVhbihpbXAtPmlzQ3JlYXRlKCksIGluZm8u
R2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOElu
dGVybmFsOjpjcmVhdGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBz
dGF0aWMgdm9pZCBjcmVhdGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwpAQCAtNDI5LDYgKzczMywxOSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVBdHRyU2V0dGVyQ2FsbGJh
Y2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VgogICAgIFRlc3RP
YmpWOEludGVybmFsOjpjcmVhdGVBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAor
c3RhdGljIHZvaWQgY3JlYXRlQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICBib29sIHYgPSB2YWx1ZS0+Qm9vbGVhblZhbHVlKCk7CisgICAg
aW1wLT5zZXRDcmVhdGUodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBjcmVhdGVB
dHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpjcmVhdGVBdHRyU2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBy
ZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNDQwLDYgKzc1NywxNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVj
dGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKKyAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5mYXN0R2V0QXR0cmlidXRlKFdlYkNvcmU6OkhU
TUxOYW1lczo6cmVmbGVjdGVkc3RyaW5nYXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0
dXJuVW5zYWZlSGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZs
ZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJl
dHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JN
YWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFN0cmluZ0F0
dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNDUzLDYgKzc4
MSwxOSBAQCBzdGF0aWMgdm9pZCByZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNr
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2OAogICAgIFRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0
YXRpYyB2b2lkIHJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVT
T1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hlY2s+LCB2LCB2YWx1ZSk7Cisg
ICAgaW1wLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJpbmdh
dHRyQXR0ciwgdik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRTdHJp
bmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0
dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAg
LTQ2NCw3ICs4MDUsMTggQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRJ
bnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHYKICAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5m
byk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBy
ZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJu
IHY4SW50ZWdlcihpbXAtPmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6
cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0ciksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOwor
fQorCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CkBAIC00
NzcsNiArODI5LDE5IEBAIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKICAgICBUZXN0T2JqVjhJbnRl
cm5hbDo6cmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7
CiB9CiAKK3N0YXRpYyB2b2lkIHJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0ZXJGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMy
KHZhbHVlKTsKKyAgICBpbXAtPnNldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0ciwgdik7CisgICAgcmV0dXJuOworfQorCitzdGF0
aWMgdm9pZCByZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFs
OjpyZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVl
LCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRVbnNp
Z25lZEludGVncmFsQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTQ4OCw2ICs4NTMsMTcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFjayh2ODoKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJH
ZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhVbnNpZ25lZEludGVnZXIoc3RkOjpt
YXgoMCwgaW1wLT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxl
Y3RlZHVuc2lnbmVkaW50ZWdyYWxhdHRyQXR0cikpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0
dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpW
OEludGVybmFsOjpyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFVuc2lnbmVkSW50
ZWdyYWxBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTUw
MSw2ICs4NzcsMTkgQEAgc3RhdGljIHZvaWQgcmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJB
dHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmcKICAgICBUZXN0T2JqVjhJbnRl
cm5hbDo6cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyKG5hbWUsIHZhbHVl
LCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgcmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAg
IHVuc2lnbmVkIHYgPSB0b1VJbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRVbnNpZ25lZEludGVn
cmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdW5zaWduZWRpbnRlZ3Jh
bGF0dHJBdHRyLCB2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHJlZmxlY3RlZFVu
c2lnbmVkSW50ZWdyYWxBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVk
VW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBp
bmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRCb29sZWFu
QXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKQEAgLTUxMiw2ICs5MDEsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiByZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djgKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRy
QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiByZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1
cm4gdjhCb29sZWFuKGltcC0+ZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJl
ZmxlY3RlZGJvb2xlYW5hdHRyQXR0ciksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxl
Y3RlZEJvb2xlYW5BdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwog
c3RhdGljIHZvaWQgcmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwpAQCAtNTI1LDYgKzkyNSwxOSBAQCBzdGF0aWMgdm9pZCByZWZsZWN0
ZWRCb29sZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdgogICAgIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJTZXR0
ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRCb29sZWFu
QXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CisgICAgYm9vbCB2ID0gdmFsdWUtPkJvb2xlYW5WYWx1ZSgpOworICAgIGltcC0+c2V0Qm9vbGVh
bkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGJvb2xlYW5hdHRyQXR0ciwg
dik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRCb29sZWFuQXR0ckF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0clNldHRl
ckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gcmVmbGVjdGVkVVJMQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTUzNiw2ICs5NDks
MTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRVUkxBdHRyQXR0ckdl
dHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZFVSTEF0dHJBdHRyR2V0dGVyRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+Z2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6
OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0
dXJuVW5zYWZlSGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZs
ZWN0ZWRVUkxBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVy
biBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29y
bGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFVSTEF0dHJBdHRyU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNTQ5LDYgKzk3MywxOSBAQCBz
dGF0aWMgdm9pZCByZWZsZWN0ZWRVUkxBdHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TAogICAgIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRV
UkxBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHJl
ZmxlY3RlZFVSTEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0
cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hlY2s+LCB2LCB2YWx1ZSk7CisgICAgaW1wLT5zZXRBdHRy
aWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0ciwgdik7CisgICAg
cmV0dXJuOworfQorCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRVUkxBdHRyQXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFt
ZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxl
Y3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC01NjAsNiArOTk3LDE3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFj
ayh2ODo6TG9jYWw8djg6CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRT
dHJpbmdBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiByZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmZhc3RHZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5h
bWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0
dXJuVW5zYWZlSGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZs
ZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJl
dHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JN
YWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFN0cmluZ0F0
dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNTczLDYgKzEw
MjEsMTkgQEAgc3RhdGljIHZvaWQgcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFj
ayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjgKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6
cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitz
dGF0aWMgdm9pZCByZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JF
U09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTxXaXRoTnVsbENoZWNrPiwgdiwgdmFsdWUpOwor
ICAgIGltcC0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFN0
cmluZ0F0dHJBdHRyLCB2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHJlZmxlY3Rl
ZFN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdB
dHRyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0ckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOwpAQCAtNTg0LDYgKzEwNDUsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiByZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkwKICAg
ICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0
dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
cmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAg
IHJldHVybiB2OEludGVnZXIoaW1wLT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1M
TmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJBdHRyKSwgaW5mby5HZXRJc29sYXRlKCkp
OworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZEN1c3RvbUludGVn
cmFsQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJHZXR0ZXJGb3JN
YWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbUlu
dGVncmFsQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC01
OTcsNiArMTA2OSwxOSBAQCBzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJB
dHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgVGVzdE9ialY4SW50
ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUs
IGluZm8pOwogfQogCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGlu
dCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJD
b3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJBdHRyLCB2KTsKKyAgICBy
ZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0ckdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpA
QCAtNjA4LDYgKzEwOTMsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0
ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG8KICAgICByZXR1cm4g
VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0ckdldHRlcihu
YW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRD
dXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhC
b29sZWFuKGltcC0+ZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNv
bnRlbnRCb29sZWFuQXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5m
byk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTYyMSw2ICsxMTE3LDE5IEBAIHN0
YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlckNhbGxiYWNrKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1
c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRp
YyB2b2lkIHJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBib29sIHYgPSB2YWx1ZS0+Qm9vbGVh
blZhbHVlKCk7CisgICAgaW1wLT5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0ciwgdik7CisgICAgcmV0dXJuOworfQorCitz
dGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4
SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlckZvck1haW5Xb3Js
ZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTYzMiw2ICsxMTQxLDE3IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0ckdldHRlckZv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmdldFVSTEF0dHJpYnV0ZShX
ZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0ciksIGluZm8uR2V0SXNv
bGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxB
dHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQg
cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CkBAIC02NDUsNiArMTE2NSwxOSBAQCBzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21V
UkxBdHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogICAg
IFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlcihuYW1l
LCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbVVSTEF0dHJB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAg
IFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPFdp
dGhOdWxsQ2hlY2s+LCB2LCB2YWx1ZSk7CisgICAgaW1wLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6
SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIsIHYpOworICAgIHJldHVybjsKK30K
Kworc3RhdGljIHZvaWQgcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4
SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5h
bWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0eXBl
ZEFycmF5QXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTY1Niw2ICsxMTg5LDE3IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdHlwZWRBcnJheUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6Okxv
Y2FsPHY4OjpTdHJpCiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5QXR0
ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdHlwZWRBcnJheUF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHRv
VjhGYXN0Rm9yTWFpbldvcmxkKGltcC0+dHlwZWRBcnJheUF0dHIoKSwgaW5mbywgaW1wKTsKK30K
Kworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0eXBlZEFycmF5QXR0ckF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnR5
cGVkQXJyYXlBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3Rh
dGljIHZvaWQgdHlwZWRBcnJheUF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOwpAQCAtNjY5LDYgKzEyMTMsMTkgQEAgc3RhdGljIHZvaWQgdHlwZWRBcnJheUF0dHJB
dHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2MKICAg
ICBUZXN0T2JqVjhJbnRlcm5hbDo6dHlwZWRBcnJheUF0dHJBdHRyU2V0dGVyKG5hbWUsIHZhbHVl
LCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgdHlwZWRBcnJheUF0dHJBdHRyU2V0dGVyRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIEZsb2F0MzJBcnJheSog
diA9IFY4RmxvYXQzMkFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhGbG9hdDMyQXJyYXk6OnRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgaW1wLT5zZXRU
eXBlZEFycmF5QXR0cihXVEY6OmdldFB0cih2KSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMg
dm9pZCB0eXBlZEFycmF5QXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJy
YXlBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CkBAIC02ODQsNiArMTI0MSwyMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbAogICAg
IHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0
dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIGludCB2ID0gaW1wLT5hdHRyV2l0aEdldHRlckV4Y2VwdGlvbihl
Yyk7CisgICAgaWYgKFVOTElLRUxZKGVjKSkKKyAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlv
bihlYywgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB2OEludGVnZXIodiwgaW5mby5H
ZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJl
dHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBhdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC02
OTcsNiArMTI2OSwxOSBAQCBzdGF0aWMgdm9pZCBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJT
ZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZQogICAgIFRlc3RPYmpWOElu
dGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGlu
Zm8pOwogfQogCitzdGF0aWMgdm9pZCBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJG
b3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0
b0ludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKHYpOwor
ICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRy
U2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0
ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNzA4
LDYgKzEyOTMsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWwKICAgICByZXR1cm4gVGVzdE9i
alY4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcihuYW1lLCBpbmZv
KTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+
YXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6
YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8p
OworfQorCiBzdGF0aWMgdm9pZCBhdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC03MjQsNiArMTMyMCwyMiBAQCBzdGF0aWMg
dm9pZCBhdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZQogICAgIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4
Y2VwdGlvbkF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBh
dHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXAtPnNldEF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKHYs
IGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAgICAgICBzZXRET01FeGNlcHRpb24oZWMs
IGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsK
K30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTczOSw2ICsxMzUxLDIxIEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU3RyaW5nIHYgPSBp
bXAtPnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKTsKKyAgICBpZiAoVU5MSUtFTFko
ZWMpKQorICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xhdGUo
KSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKHYsIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNh
ZmVIYW5kbGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25B
dHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBzdHJp
bmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CkBAIC03NTIsNiArMTM3OSwxOSBAQCBzdGF0aWMgdm9pZCBzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZwog
ICAgIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJT
ZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lEKFY4
U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOworICAgIGltcC0+c2V0U3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24odik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBzdHJpbmdB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmlu
Z0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1
ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC03NjMsNiArMTQwMywxNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0
ckdldHRlckNhbGxiYWNrKHY4OgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0
ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPnN0cmluZ0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVI
YW5kbGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJl
dHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRy
R2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBzdHJpbmdB
dHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CkBAIC03NzksMTYgKzE0MzAsNDIgQEAgc3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmcKICAg
ICBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0
dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0
cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBpbXAtPnNldFN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKHYsIGVjKTsKKyAgICBpZiAo
VU5MSUtFTFkoZWMpKQorICAgICAgICBzZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0
ZSgpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30K
Kwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXN0b21BdHRyQXR0ckdldHRlckNhbGxi
YWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIHJldHVybiBWOFRlc3RPYmo6OmN1c3RvbUF0dHJBdHRyR2V0dGVyQ3VzdG9t
KG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGN1c3RvbUF0
dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFY4VGVzdE9i
ajo6Y3VzdG9tQXR0ckF0dHJHZXR0ZXJDdXN0b20obmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2
b2lkIGN1c3RvbUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIFY4VGVzdE9iajo6Y3VzdG9tQXR0ckF0dHJTZXR0ZXJDdXN0b20obmFtZSwg
dmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBjdXN0b21BdHRyQXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBWOFRl
c3RPYmo6OmN1c3RvbUF0dHJBdHRyU2V0dGVyQ3VzdG9tKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30K
Kwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVB
dHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CkBAIC04MDQsNiArMTQ4MSwyMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YQogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAg
U2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAg
aWYgKCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworICAgIFNj
cmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CisgICAgcmV0dXJuIHY4SW50ZWdlcihp
bXAtPndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgmc3RhdGUpLCBpbmZvLkdldElzb2xhdGUoKSk7
Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2Jq
VjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3Js
ZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTgyMyw2ICsxNTE1
LDI1IEBAIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxs
YmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6Ondp
dGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQog
CitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2ID0gdG9JbnQzMih2
YWx1ZSk7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJy
ZW50KCk7CisgICAgaWYgKCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBTY3Jp
cHRTdGF0ZSYgc3RhdGUgPSAqY3VycmVudFN0YXRlOworICAgIGltcC0+c2V0V2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlKCZzdGF0ZSwgdik7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpLCBpbmZvLkdldElzb2xhdGUoKSk7
CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVB
dHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKQEAgLTgzNSw2ICsxNTQ2LDE4IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhCiAg
ICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9
IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWlu
V29ybGQoaW1wLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShzY3JpcHRDb250
ZXh0KSwgaW5mbywgaW1wKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30K
Kwogc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtODQ5LDYgKzE1NzIsMjAgQEAg
c3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVy
Q2FsbGJhY2sodjg6OkxvY2FsPHY4OjoKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsK
IH0KIAorc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFRl
c3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUo
KSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
KyAgICBpbXAtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKHNjcmlwdENv
bnRleHQsIFdURjo6Z2V0UHRyKHYpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRl
cm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFp
bldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC04NzAs
NiArMTYwNywyNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFjayh2OAogICAgIHJldHVybiBUZXN0T2Jq
VjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlcihuYW1l
LCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRl
OjpjdXJyZW50KCk7CisgICAgaWYgKCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOworICAgIFNjcmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CisgICAg
UmVmUHRyPFRlc3RPYmo+IHYgPSBpbXAtPndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygm
c3RhdGUsIGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAgICAgICByZXR1cm4gc2V0RE9N
RXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgaW5m
by5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZCh2LnJlbGVh
c2UoKSwgaW5mbywgaW1wKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXNBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMg
dm9pZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtODg5LDYgKzE2NDcsMjUgQEAgc3RhdGljIHZvaWQgd2l0
aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2
ODo6U3RyaW4KICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHdp
dGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFz
SW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29s
YXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh2YWx1ZSkpIDogMDsKKyAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3Rh
dGU6OmN1cnJlbnQoKTsKKyAgICBpZiAoIWN1cnJlbnRTdGF0ZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIFNjcmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CisgICAgaW1wLT5zZXRXaXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoJnN0YXRlLCBXVEY6OmdldFB0cih2KSk7CisgICAg
aWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQorICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLmV4Y2Vw
dGlvbigpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9p
ZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAg
LTkwNSw2ICsxNjgyLDIyIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyCiAgICAgcmV0dXJuIFRl
c3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNl
c0F0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
KyAgICBSZWZQdHI8VGVzdE9iaj4gdiA9IGltcC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
dHRyaWJ1dGVSYWlzZXMoc2NyaXB0Q29udGV4dCwgZWMpOworICAgIGlmIChVTkxJS0VMWShlYykp
CisgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTsK
KyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQodi5yZWxlYXNlKCksIGluZm8sIGltcCk7
Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0
YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0clNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTkxOSw2ICsxNzEyLDIwIEBA
IHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0
clNldHRlckNhbGxiYWNrKHY4OjpMb2NhCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0clNldHRlcihuYW1lLCB2YWx1ZSwg
aW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5m
by5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2Jq
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CisgICAgaW1wLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZVJhaXNlcyhzY3JpcHRDb250ZXh0LCBXVEY6OmdldFB0cih2KSk7CisgICAgcmV0dXJuOwor
fQorCitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNl
c0F0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlUmFpc2VzQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7
Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTkzNSw2ICsxNzQy
LDIyIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0
ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRl
ckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOworICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRT
dGF0ZTo6Y3VycmVudCgpOworICAgIGlmICghY3VycmVudFN0YXRlKQorICAgICAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKKyAgICBTY3JpcHRTdGF0ZSYgc3RhdGUgPSAqY3VycmVudFN0YXRlOwor
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcC0+d2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgmc3RhdGUsIHNj
cmlwdENvbnRleHQpLCBpbmZvLCBpbXApOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0
ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC05NTUsNiArMTc3OCwyNiBAQCBzdGF0aWMg
dm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0
clNldHRlckNhbGxiYWNrKAogICAgIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlcihuYW1lLCB2YWx1ZSwg
aW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZh
bHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBW
OFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6
IDA7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50
KCk7CisgICAgaWYgKCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBTY3JpcHRT
dGF0ZSYgc3RhdGUgPSAqY3VycmVudFN0YXRlOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaW1wLT5z
ZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKCZzdGF0
ZSwgc2NyaXB0Q29udGV4dCwgV1RGOjpnZXRQdHIodikpOworICAgIGlmIChzdGF0ZS5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgaW5mby5HZXRJ
c29sYXRlKCkpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50
ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtOTc3LDYgKzE4MjAsMjggQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlUmEKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0
dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU2NyaXB0
U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAgaWYgKCFj
dXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworICAgIFNjcmlwdFN0
YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBSZWZQdHI8
VGVzdE9iaj4gdiA9IGltcC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlcygmc3RhdGUsIHNjcmlwdENvbnRleHQsIGVjKTsKKyAgICBpZiAoVU5M
SUtFTFkoZWMpKQorICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElz
b2xhdGUoKSk7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJl
dHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZCh2LnJlbGVhc2UoKSwgaW5mbywgaW1wKTsKK30KKwor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJGb3JNYWluV29ybGQo
bmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwpAQCAtOTk3LDYgKzE4NjIsMjYgQEAgc3RhdGljIHZvaWQgd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJD
YWwKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwog
fQogCitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1
ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhU
ZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAw
OworICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgp
OworICAgIGlmICghY3VycmVudFN0YXRlKQorICAgICAgICByZXR1cm47CisgICAgU2NyaXB0U3Rh
dGUmIHN0YXRlID0gKmN1cnJlbnRTdGF0ZTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGltcC0+c2V0
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygm
c3RhdGUsIHNjcmlwdENvbnRleHQsIFdURjo6Z2V0UHRyKHYpKTsKKyAgICBpZiAoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCksIGluZm8u
R2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7
Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0x
MDEzLDYgKzE4OTgsMjIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0EKICAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVX
aXRoU3BhY2VzQXR0cmlidXRlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBTY3Jp
cHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKKyAgICBpZiAo
IWN1cnJlbnRTdGF0ZSkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgU2NyaXB0
U3RhdGUmIHN0YXRlID0gKmN1cnJlbnRTdGF0ZTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIHJldHVy
biB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXAtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCZzdGF0ZSwgc2NyaXB0Q29udGV4dCksIGlu
Zm8sIGltcCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRl
QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEwMzMsNiArMTkz
NCwyNiBAQCBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJTZXR0ZQogICAgIFRlc3RPYmpWOEludGVybmFsOjp3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCB3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgVGVz
dE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgp
LCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBTY3JpcHRTdGF0ZSog
Y3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKKyAgICBpZiAoIWN1cnJlbnRT
dGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIFNjcmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50
U3RhdGU7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpbXAtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCZzdGF0ZSwgc2NyaXB0Q29u
dGV4dCwgV1RGOjpnZXRQdHIodikpOworICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkpOwor
ICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0
dHJpYnV0ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3Rh
Y2tBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMDQ0LDYgKzE5NjUsMTcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmli
dXRlQXR0ckdldHRlckMKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRB
cmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQog
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxs
U3RhY2tBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHRvVjhG
YXN0Rm9yTWFpbldvcmxkKGltcC0+d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJp
YnV0ZSgpLCBpbmZvLCBpbXApOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdp
dGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0
QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1l
LCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFj
a0F0dHJpYnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0x
MDU3LDYgKzE5ODksMTkgQEAgc3RhdGljIHZvaWQgd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxT
dGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWwKICAgICBUZXN0T2JqVjhJ
bnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJTZXR0
ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0QXJndW1l
bnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0
YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUo
KSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZh
bHVlKSkgOiAwOworICAgIGltcC0+c2V0V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0
dHJpYnV0ZShXVEY6OmdldFB0cih2KSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCB3
aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNr
Rm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2Jq
VjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxBdHRy
MUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCkBAIC0xMDc4LDYgKzIwMjMsMjUgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjb25kaXRpb25hbEF0dHIxQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6
U3QKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNvbmRpdGlvbmFsQXR0cjFBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJu
IHY4SW50ZWdlcihpbXAtPmNvbmRpdGlvbmFsQXR0cjEoKSwgaW5mby5HZXRJc29sYXRlKCkpOwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9u
MSkKKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRpb25hbEF0dHIxQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5h
bDo6Y29uZGl0aW9uYWxBdHRyMUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkKKworI2lmIEVOQUJMRShDb25kaXRpb24x
KQorCiBzdGF0aWMgdm9pZCBjb25kaXRpb25hbEF0dHIxQXR0clNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEwOTcsNiArMjA2MSwyNyBAQCBzdGF0aWMgdm9pZCBjb25k
aXRpb25hbEF0dHIxQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TAogCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpCiAKKyNpZiBFTkFCTEUoQ29u
ZGl0aW9uMSkKKworc3RhdGljIHZvaWQgY29uZGl0aW9uYWxBdHRyMUF0dHJTZXR0ZXJGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMy
KHZhbHVlKTsKKyAgICBpbXAtPnNldENvbmRpdGlvbmFsQXR0cjEodik7CisgICAgcmV0dXJuOwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9u
MSkKKworc3RhdGljIHZvaWQgY29uZGl0aW9uYWxBdHRyMUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50
ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjFBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVl
LCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKQorCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGNvbmRpdGlvbmFsQXR0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtMTExOCw2ICsyMTAzLDI1
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxBdHRyMkF0dHJHZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYg
RU5BQkxFKENvbmRpdGlvbjIpCiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0
aW9uYWxBdHRyMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2Vy
KGltcC0+Y29uZGl0aW9uYWxBdHRyMigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCisKKyNpZiBFTkFC
TEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCisKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxBdHRyMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENv
bmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjEp
ICYmIEVOQUJMRShDb25kaXRpb24yKQorCiBzdGF0aWMgdm9pZCBjb25kaXRpb25hbEF0dHIyQXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTExMzcsNiArMjE0MSwy
NyBAQCBzdGF0aWMgdm9pZCBjb25kaXRpb25hbEF0dHIyQXR0clNldHRlckNhbGxiYWNrKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TAogCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlv
bjEpICYmIEVOQUJMRShDb25kaXRpb24yKQogCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVO
QUJMRShDb25kaXRpb24yKQorCitzdGF0aWMgdm9pZCBjb25kaXRpb25hbEF0dHIyQXR0clNldHRl
ckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBpbnQgdiA9
IHRvSW50MzIodmFsdWUpOworICAgIGltcC0+c2V0Q29uZGl0aW9uYWxBdHRyMih2KTsKKyAgICBy
ZXR1cm47Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRp
dGlvbjIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCisK
K3N0YXRpYyB2b2lkIGNvbmRpdGlvbmFsQXR0cjJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFs
Ojpjb25kaXRpb25hbEF0dHIyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5m
byk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlv
bjIpCisKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBA
IC0xMTU4LDYgKzIxODMsMjUgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRp
b25hbEF0dHIzQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKIAogI2lmIEVOQUJM
RShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKIAorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjb25kaXRpb25hbEF0dHIzQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAg
IHJldHVybiB2OEludGVnZXIoaW1wLT5jb25kaXRpb25hbEF0dHIzKCksIGluZm8uR2V0SXNvbGF0
ZSgpKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKKwor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRpb25hbEF0dHIzQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6Y29u
ZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisKIHN0YXRpYyB2b2lkIGNv
bmRpdGlvbmFsQXR0cjNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpA
QCAtMTE3Nyw2ICsyMjIxLDI3IEBAIHN0YXRpYyB2b2lkIGNvbmRpdGlvbmFsQXR0cjNBdHRyU2V0
dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMCiAKICNlbmRpZiAv
LyBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisKK3N0YXRpYyB2b2lkIGNvbmRpdGlv
bmFsQXR0cjNBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRDb25kaXRpb25h
bEF0dHIzKHYpOworICAgIHJldHVybjsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24x
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMikKKworc3RhdGljIHZvaWQgY29uZGl0aW9uYWxBdHRyM0F0dHJTZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
VGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjNBdHRyU2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMikKKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNo
ZWRBdHRyaWJ1dGUxQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTE4OCw2ICsyMjUzLDE3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FjaGVkQXR0cmlidXRlMUF0dHJHZXR0ZXJDYWxsYmFjayh2
ODo6TG9jYWw8djg6OlN0CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpjYWNoZWRBdHRy
aWJ1dGUxQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjYWNoZWRBdHRyaWJ1dGUxQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJl
dHVybiBpbXAtPmNhY2hlZEF0dHJpYnV0ZTEoKS52OFZhbHVlKCk7Cit9CisKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY2FjaGVkQXR0cmlidXRlMUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0
ZTFBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMTk5LDYg
KzIyNzUsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRBdHRyaWJ1dGUy
QXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKICAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIGltcC0+Y2FjaGVkQXR0cmlidXRlMigpLnY4VmFsdWUo
KTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRBdHRyaWJ1dGUyQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6Y2FjaGVkQXR0cmlidXRlMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7
Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYW55QXR0cmlidXRlQXR0ckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwpAQCAtMTIxMCw2ICsyMjk3LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
YW55QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nCiAgICAg
cmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjphbnlBdHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGlu
Zm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFueUF0dHJpYnV0ZUF0dHJH
ZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gaW1wLT5hbnlBdHRyaWJ1dGUoKS52OFZh
bHVlKCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYW55QXR0cmlidXRlQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6YW55QXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30K
Kwogc3RhdGljIHZvaWQgYW55QXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKQEAgLTEyMjMsNiArMjMyMSwxOSBAQCBzdGF0aWMgdm9pZCBhbnlBdHRyaWJ1
dGVBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bAogICAgIFRlc3RPYmpWOEludGVybmFsOjphbnlBdHRyaWJ1dGVBdHRyU2V0dGVyKG5hbWUsIHZh
bHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgYW55QXR0cmlidXRlQXR0clNldHRlckZvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBTY3JpcHRWYWx1ZSB2
ID0gU2NyaXB0VmFsdWUodmFsdWUpOworICAgIGltcC0+c2V0QW55QXR0cmlidXRlKFdURjo6Z2V0
UHRyKHYpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGFueUF0dHJpYnV0ZUF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OmFueUF0dHJpYnV0ZUF0dHJTZXR0ZXJGb3JNYWluV29y
bGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEyMzQsNiArMjM0NSwxNyBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJH
ZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8dgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6
ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPmVuYWJsZWRBdFJ1bnRpbWVB
dHRyMSgpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIx
QXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgZW5h
YmxlZEF0UnVudGltZUF0dHIxQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKQEAgLTEyNDcsNiArMjM2OSwxOSBAQCBzdGF0aWMgdm9pZCBlbmFibGVkQXRSdW50aW1lQXR0
cjFBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAgICAgVGVz
dE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXIobmFtZSwgdmFs
dWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBlbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyU2V0
dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2
ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRFbmFibGVkQXRSdW50aW1lQXR0cjEodik7
CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBlbmFibGVkQXRSdW50aW1lQXR0cjFBdHRy
U2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyU2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBlbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMjU4LDYg
KzIzOTMsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkQXRSdW50aW1l
QXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHYKICAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9
CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0
ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5lbmFibGVk
QXRSdW50aW1lQXR0cjIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1
bnRpbWVBdHRyMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRp
YyB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CkBAIC0xMjcxLDYgKzI0MTcsMTkgQEAgc3RhdGljIHZvaWQgZW5hYmxlZEF0
UnVudGltZUF0dHIyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LAogICAgIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyU2V0dGVy
KG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGltZUF0
dHIyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
KyAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOworICAgIGltcC0+c2V0RW5hYmxlZEF0UnVudGlt
ZUF0dHIyKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGlt
ZUF0dHIyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIy
QXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
QEAgLTEzMzAsNiArMjQ4OSwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGZsb2F0
QXJyYXlBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJu
IFRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFycmF5QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0K
IAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmbG9hdEFycmF5QXR0ckdldHRlckZvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIHJldHVybiB2OEFycmF5KGltcC0+ZmxvYXRBcnJheSgpLCBpbmZvLkdl
dElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZmxvYXRBcnJh
eUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOwor
fQorCiBzdGF0aWMgdm9pZCBmbG9hdEFycmF5QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKQEAgLTEzNDMsNiArMjUxMywxOSBAQCBzdGF0aWMgdm9pZCBmbG9hdEFycmF5
QXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
dgogICAgIFRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFycmF5QXR0clNldHRlcihuYW1lLCB2YWx1
ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIGZsb2F0QXJyYXlBdHRyU2V0dGVyRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFZlY3RvcjxmbG9hdD4gdiA9
IHRvTmF0aXZlQXJyYXk8ZmxvYXQ+KHZhbHVlKTsKKyAgICBpbXAtPnNldEZsb2F0QXJyYXkodik7
CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBmbG9hdEFycmF5QXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqVjhJbnRlcm5hbDo6ZmxvYXRBcnJheUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFs
dWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRvdWJsZUFycmF5
QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwpAQCAtMTM1NCw2ICsyNTM3LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZG91YmxlQXJyYXlBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJp
bmc+CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0dHJHZXR0ZXIo
bmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZG91YmxlQXJy
YXlBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4QXJyYXkoaW1wLT5kb3Vi
bGVBcnJheSgpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZG91YmxlQXJyYXlBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGRvdWJsZUFycmF5QXR0clNldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEzNjcsNiArMjU2MSwxOSBAQCBz
dGF0aWMgdm9pZCBkb3VibGVBcnJheUF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPAogICAgIFRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJh
eUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBkb3VibGVB
cnJheUF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CisgICAgVmVjdG9yPGRvdWJsZT4gdiA9IHRvTmF0aXZlQXJyYXk8ZG91YmxlPih2YWx1ZSk7Cisg
ICAgaW1wLT5zZXREb3VibGVBcnJheSh2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lk
IGRvdWJsZUFycmF5QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6ZG91YmxlQXJyYXlBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBjb250ZW50RG9jdW1lbnRBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMzgxLDYg
KzI1ODgsMjAgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb250ZW50RG9jdW1lbnRB
dHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHIKICAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6OmNvbnRlbnREb2N1bWVudEF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udGVudERvY3VtZW50QXR0ckdldHRlckZvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1Rv
Tm9kZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+Y29udGVudERvY3VtZW50KCkpKQor
ICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4TnVsbChpbmZvLkdldElzb2xh
dGUoKSkpOworCisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcC0+Y29udGVudERv
Y3VtZW50KCksIGluZm8sIGltcCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
Y29udGVudERvY3VtZW50QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJl
dHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6Y29udGVudERvY3VtZW50QXR0ckdldHRlckZvck1haW5X
b3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtdXRh
YmxlUG9pbnRBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMzkyLDYgKzI2MTMsMTcgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBtdXRhYmxlUG9pbnRBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2Fs
PHY4OjpTdHJpbmcKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0
dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
bXV0YWJsZVBvaW50QXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB0b1Y4RmFz
dEZvck1haW5Xb3JsZChXVEY6OmdldFB0cihTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8VGVzdE9i
aiwgRmxvYXRQb2ludD46OmNyZWF0ZShpbXAsIGltcC0+bXV0YWJsZVBvaW50KCksICZUZXN0T2Jq
Ojp1cGRhdGVNdXRhYmxlUG9pbnQpKSwgaW5mbywgaW1wKTsKK30KKworc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBtdXRhYmxlUG9pbnRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBtdXRhYmxlUG9pbnRB
dHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTQwNSw2ICsyNjM3
LDE5IEBAIHN0YXRpYyB2b2lkIG11dGFibGVQb2ludEF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6Om11
dGFibGVQb2ludEF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9p
ZCBtdXRhYmxlUG9pbnRBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIFJlZlB0cjxTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD4gPiB2
ID0gVjhTVkdQb2ludDo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3Js
ZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4U1ZHUG9pbnQ6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgaW1wLT5zZXRNdXRhYmxlUG9p
bnQoV1RGOjpnZXRQdHIodikpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgbXV0YWJs
ZVBvaW50QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50QXR0clNldHRl
ckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gaW1tdXRhYmxlUG9pbnRBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNDE2LDYgKzI2NjEs
MTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbW11dGFibGVQb2ludEF0dHJHZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmkKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJu
YWw6OmltbXV0YWJsZVBvaW50QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBpbW11dGFibGVQb2ludEF0dHJHZXR0ZXJGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoV1RGOjpnZXRQdHIoU1ZHUHJvcGVy
dHlUZWFyT2ZmPEZsb2F0UG9pbnQ+OjpjcmVhdGUoaW1wLT5pbW11dGFibGVQb2ludCgpKSksIGlu
Zm8sIGltcCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW1tdXRhYmxlUG9p
bnRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpW
OEludGVybmFsOjppbW11dGFibGVQb2ludEF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5m
byk7Cit9CisKIHN0YXRpYyB2b2lkIGltbXV0YWJsZVBvaW50QXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE0MjksNiArMjY4NSwxOSBAQCBzdGF0aWMgdm9pZCBp
bW11dGFibGVQb2ludEF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvYwogICAgIFRlc3RPYmpWOEludGVybmFsOjppbW11dGFibGVQb2ludEF0dHJTZXR0
ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBpbW11dGFibGVQb2ludEF0
dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAg
UmVmUHRyPFNWR1Byb3BlcnR5VGVhck9mZjxGbG9hdFBvaW50PiA+IHYgPSBWOFNWR1BvaW50OjpI
YXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElz
b2xhdGUoKSkpID8gVjhTVkdQb2ludDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBpbXAtPnNldEltbXV0YWJsZVBvaW50KFdURjo6Z2V0UHRy
KHYpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGltbXV0YWJsZVBvaW50QXR0clNl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRyU2V0dGVyRm9yTWFpbldv
cmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBzdHJhd2JlcnJ5QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTQ0MCw2ICsyNzA5LDE3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyYXdiZXJyeUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djg6OlN0cmluZz4KICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnN0cmF3YmVycnlB
dHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHN0cmF3YmVycnlBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdl
cihpbXAtPmJsdWViZXJyeSgpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc3RyYXdiZXJyeUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnN0cmF3YmVycnlBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBzdHJhd2JlcnJ5QXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE0NTMsNiArMjczMywx
OSBAQCBzdGF0aWMgdm9pZCBzdHJhd2JlcnJ5QXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8dgogICAgIFRlc3RPYmpWOEludGVybmFsOjpzdHJh
d2JlcnJ5QXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHN0
cmF3YmVycnlBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRCbHVlYmVycnko
dik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBzdHJhd2JlcnJ5QXR0clNldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJyeUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwg
dmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmljdEZs
b2F0QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwpAQCAtMTQ2NCw2ICsyNzU3LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gc3RyaWN0RmxvYXRBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpT
dHJpbmc+CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGbG9hdEF0dHJHZXR0
ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaWN0
RmxvYXRBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5l
dyhpbXAtPnN0cmljdEZsb2F0KCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHN0cmljdEZsb2F0QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVy
biBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5h
bWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBzdHJpY3RGbG9hdEF0dHJTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNDc3LDYgKzI3ODEsMTkgQEAgc3RhdGljIHZv
aWQgc3RyaWN0RmxvYXRBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDwKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRyU2V0
dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgc3RyaWN0RmxvYXRBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGZs
b2F0IHYgPSBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUtPk51bWJlclZhbHVlKCkpOworICAgIGlt
cC0+c2V0U3RyaWN0RmxvYXQodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBzdHJp
Y3RGbG9hdEF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZsb2F0QXR0clNldHRl
ckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gZGVzY3JpcHRpb25BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNDg4LDYgKzI4MDUsMTcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkZXNjcmlwdGlvbkF0dHJHZXR0ZXJDYWxs
YmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6
OmRlc2NyaXB0aW9uQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBkZXNjcmlwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBy
ZXR1cm4gdjhJbnRlZ2VyKGltcC0+ZGVzY3JpcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkpOwor
fQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2NyaXB0aW9uQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZGVz
Y3JpcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGlkQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTQ5OSw2ICsyODI3LDE3
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaWRBdHRyR2V0dGVyQ2FsbGJhY2sodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvCiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFs
OjppZEF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gaWRBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcihp
bXAtPmlkKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBpZEF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4g
VGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsK
K30KKwogc3RhdGljIHZvaWQgaWRBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwpAQCAtMTUxMiw2ICsyODUxLDE5IEBAIHN0YXRpYyB2b2lkIGlkQXR0clNldHRlckNhbGxi
YWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlCiAgICAg
VGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAK
K3N0YXRpYyB2b2lkIGlkQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKKyAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOworICAgIGltcC0+c2V0SWQo
dik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBpZEF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4
SW50ZXJuYWw6OmlkQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9
CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaGFzaEF0dHJHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE1
MjMsNiArMjg3NSwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhc2hBdHRyR2V0
dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAgICAgcmV0dXJuIFRlc3RP
YmpWOEludGVybmFsOjpoYXNoQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBoYXNoQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJl
dHVybiB2OFN0cmluZyhpbXAtPmhhc2goKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2Fm
ZUhhbmRsZSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaGFzaEF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6
Omhhc2hBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHJlcGxhY2VhYmxlQXR0cmlidXRlQXR0ckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAt
MTUzNCw2ICsyODk3LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVwbGFjZWFi
bGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4CiAgICAgcmV0dXJuIFRl
c3RPYmpWOEludGVybmFsOjpyZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5m
byk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVwbGFjZWFibGVBdHRyaWJ1
dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPnJl
cGxhY2VhYmxlQXR0cmlidXRlKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiByZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlcGxhY2Vh
YmxlQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEgPSBpbmZvLkRhdGEoKTsKQEAgLTI5MzYsNiAr
NDMxMCwxMzkgQEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJp
YnV0ZSBWOFRlc3RPYmpBdHRyc1tdID0gewogICAgIHsicmVwbGFjZWFibGVBdHRyaWJ1dGUiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6cmVwbGFjZWFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqUmVwbGFjZWFibGVBdHRyU2V0dGVyQ2FsbGJhY2ss
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAogfTsKIAorc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6
QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RPYmpBdHRyc0Zvck1haW5Xb3JsZFtdID0geworICAgIC8v
IEF0dHJpYnV0ZSAncmVhZE9ubHlMb25nQXR0cicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUn
IEV4dEF0dHI6ICcnKQorICAgIHsicmVhZE9ubHlMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFs
OjpyZWFkT25seUxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3JlYWRPbmx5U3RyaW5nQXR0cicgKFR5cGU6
ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsicmVhZE9ubHlTdHJpbmdB
dHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5U3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdy
ZWFkT25seVRlc3RPYmpBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjog
JycpCisgICAgeyJyZWFkT25seVRlc3RPYmpBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRP
bmx5VGVzdE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnc3RhdGljUmVhZE9ubHlMb25nQXR0cicgKFR5cGU6
ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsic3RhdGljUmVhZE9ubHlM
b25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNSZWFkT25seUxvbmdBdHRyQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRy
aWJ1dGUgJ3N0YXRpY1N0cmluZ0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykK
KyAgICB7InN0YXRpY1N0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljU3RyaW5n
QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OnN0
YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAorICAgIC8vIEF0dHJpYnV0ZSAnVGVzdFN1Yk9iaicgKFR5cGU6ICdyZWFkb25seSBhdHRy
aWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsiVGVzdFN1Yk9iaiIsIFRlc3RPYmpWOEludGVybmFs
OjpUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIsIDAsICZWOFRlc3RTdWJPYmo6OmluZm8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAv
LyBBdHRyaWJ1dGUgJ2VudW1BdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisg
ICAgeyJlbnVtQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjplbnVtQXR0ckF0dHJHZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmVudW1BdHRyQXR0clNldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3No
b3J0QXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsic2hvcnRBdHRy
IiwgVGVzdE9ialY4SW50ZXJuYWw6OnNob3J0QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OnNob3J0QXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICd1bnNpZ25lZFNob3J0
QXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsidW5zaWduZWRTaG9y
dEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRTaG9ydEF0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZFNob3J0QXR0ckF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0
cmlidXRlICdsb25nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsi
bG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdsb25nTG9u
Z0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7ImxvbmdMb25nQXR0
ciIsIFRlc3RPYmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAndW5zaWdu
ZWRMb25nTG9uZ0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7InVu
c2lnbmVkTG9uZ0xvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdB
dHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6dW5z
aWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnc3RyaW5nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUn
IEV4dEF0dHI6ICcnKQorICAgIHsic3RyaW5nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJp
bmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6
c3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CisgICAgLy8gQXR0cmlidXRlICd0ZXN0T2JqQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0
dHI6ICdWOE1lYXN1cmVBcycpCisgICAgeyJ0ZXN0T2JqQXR0ciIsIFRlc3RPYmpWOEludGVybmFs
Ojp0ZXN0T2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50
ZXJuYWw6OnRlc3RPYmpBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ1hNTE9iakF0dHInIChUeXBlOiAnYXR0cmlidXRl
JyBFeHRBdHRyOiAnJykKKyAgICB7IlhNTE9iakF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6WE1M
T2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6
OlhNTE9iakF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAorICAgIC8vIEF0dHJpYnV0ZSAnY3JlYXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjog
JycpCisgICAgeyJjcmVhdGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0clNldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3Jl
ZmxlY3RlZFN0cmluZ0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnUmVmbGVjdCcp
CisgICAgeyJyZWZsZWN0ZWRTdHJpbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZFN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVy
bmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3JlZmxlY3RlZEludGVncmFsQXR0cicg
KFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykKKyAgICB7InJlZmxlY3RlZElu
dGVncmFsQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRJ
bnRlZ3JhbEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAorICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHInIChUeXBl
OiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnUmVmbGVjdCcpCisgICAgeyJyZWZsZWN0ZWRVbnNpZ25l
ZEludGVncmFsQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRVbnNpZ25lZEludGVn
cmFsQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6
OnJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3JlZmxlY3RlZEJvb2xlYW5B
dHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1JlZmxlY3QnKQorICAgIHsicmVmbGVj
dGVkQm9vbGVhbkF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQm9vbGVhbkF0dHJB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0
ZWRCb29sZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCisgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRVUkxBdHRyJyAoVHlwZTogJ2F0dHJpYnV0
ZScgRXh0QXR0cjogJ1VSTCBSZWZsZWN0JykKKyAgICB7InJlZmxlY3RlZFVSTEF0dHIiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVj
dGVkU3RyaW5nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykKKyAg
ICB7InJlZmxlY3RlZFN0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3Ry
aW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6
OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRy
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1JlZmxlY3QnKQorICAgIHsicmVmbGVjdGVk
Q3VzdG9tSW50ZWdyYWxBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUlu
dGVncmFsQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRDdXN0b21C
b29sZWFuQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykKKyAgICB7
InJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZEN1c3RvbUJvb2xlYW5BdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVk
Q3VzdG9tVVJMQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdVUkwgUmVmbGVjdCcp
CisgICAgeyJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxl
Y3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpW
OEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3R5cGVkQXJyYXlBdHRy
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJ0eXBlZEFycmF5QXR0ciIs
IFRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJyYXlBdHRyQXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ2F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAg
eyJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50
ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ2F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJhdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlv
bkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJzdHJpbmdBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6
OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3N0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJzdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9i
alY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ2N1c3Rv
bUF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ3VzdG9tJykKKyAgICB7ImN1c3Rv
bUF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3VzdG9tQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmN1c3RvbUF0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnd2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRo
JykKKyAgICB7IndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjp3
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRl
c3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRy
OiAnQ2FsbFdpdGgnKQorICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQorICAg
IHsid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgVGVzdE9ialY4SW50ZXJuYWw6Ondp
dGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmli
dXRlICd3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcycgKFR5cGU6ICdh
dHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcpCisgICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZVJhaXNlcyIsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAg
ICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQorICAgIHsi
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIsIFRlc3RP
YmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRl
ICd3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRoJykKKyAgICB7IndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJu
YWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8v
IEF0dHJpYnV0ZSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhT
cGFjZXNBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQor
ICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNB
dHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0QXJndW1lbnRz
QW5kQ2FsbFN0YWNrQXR0cmlidXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxX
aXRoJykKKyAgICB7IndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0
ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhT
Y3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorI2lmIEVOQUJMRShDb25kaXRpb24xKQorICAgIC8v
IEF0dHJpYnV0ZSAnY29uZGl0aW9uYWxBdHRyMScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6
ICdDb25kaXRpb25hbCcpCisgICAgeyJjb25kaXRpb25hbEF0dHIxIiwgVGVzdE9ialY4SW50ZXJu
YWw6OmNvbmRpdGlvbmFsQXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RP
YmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIxQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCisgICAgLy8gQXR0cmlidXRl
ICdjb25kaXRpb25hbEF0dHIyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlv
bmFsJykKKyAgICB7ImNvbmRpdGlvbmFsQXR0cjIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0
aW9uYWxBdHRyMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJu
YWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0
aW9uMikKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisgICAg
Ly8gQXR0cmlidXRlICdjb25kaXRpb25hbEF0dHIzJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0
cjogJ0NvbmRpdGlvbmFsJykKKyAgICB7ImNvbmRpdGlvbmFsQXR0cjMiLCBUZXN0T2JqVjhJbnRl
cm5hbDo6Y29uZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVz
dE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAorI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMikKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKKyAgICAvLyBBdHRyaWJ1
dGUgJ2NvbmRpdGlvbmFsQXR0cjQnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0
aW9uYWwnKQorICAgIHsiY29uZGl0aW9uYWxBdHRyNCIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0
T2JqQ29uc3RydWN0b3JHZXR0ZXIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqUmVwbGFjZWFi
bGVBdHRyU2V0dGVyQ2FsbGJhY2ssICZWOFRlc3RPYmplY3RBOjppbmZvLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisjZW5kaWYgLy8gRU5B
QkxFKENvbmRpdGlvbjEpCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRp
b24yKQorICAgIC8vIEF0dHJpYnV0ZSAnY29uZGl0aW9uYWxBdHRyNScgKFR5cGU6ICdhdHRyaWJ1
dGUnIEV4dEF0dHI6ICdDb25kaXRpb25hbCcpCisgICAgeyJjb25kaXRpb25hbEF0dHI1IiwgVGVz
dE9ialY4SW50ZXJuYWw6OlRlc3RPYmpDb25zdHJ1Y3RvckdldHRlciwgVGVzdE9ialY4SW50ZXJu
YWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJTZXR0ZXJDYWxsYmFjaywgJlY4VGVzdE9iamVjdEI6
OmluZm8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIp
CisjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorICAgIC8vIEF0
dHJpYnV0ZSAnY29uZGl0aW9uYWxBdHRyNicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdD
b25kaXRpb25hbCcpCisgICAgeyJjb25kaXRpb25hbEF0dHI2IiwgVGVzdE9ialY4SW50ZXJuYWw6
OlRlc3RPYmpDb25zdHJ1Y3RvckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpSZXBs
YWNlYWJsZUF0dHJTZXR0ZXJDYWxsYmFjaywgJlY4VGVzdE9iamVjdEM6OmluZm8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyNlbmRpZiAv
LyBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisgICAgLy8gQXR0cmli
dXRlICdjYWNoZWRBdHRyaWJ1dGUxJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0
cjogJ0NhY2hlZEF0dHJpYnV0ZScpCisgICAgeyJjYWNoZWRBdHRyaWJ1dGUxIiwgVGVzdE9ialY4
SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTFBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQs
IDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnY2FjaGVkQXR0cmlidXRlMicg
KFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWNoZWRBdHRyaWJ1dGUnKQor
ICAgIHsiY2FjaGVkQXR0cmlidXRlMiIsIFRlc3RPYmpWOEludGVybmFsOjpjYWNoZWRBdHRyaWJ1
dGUyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAg
ICAvLyBBdHRyaWJ1dGUgJ2FueUF0dHJpYnV0ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6
ICcnKQorICAgIHsiYW55QXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OmFueUF0dHJpYnV0
ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmFueUF0
dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisg
ICAgLy8gQXR0cmlidXRlICdmbG9hdEFycmF5JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjog
JycpCisgICAgeyJmbG9hdEFycmF5IiwgVGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFycmF5
QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBB
dHRyaWJ1dGUgJ2RvdWJsZUFycmF5JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisg
ICAgeyJkb3VibGVBcnJheSIsIFRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0
clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRy
aWJ1dGUgJ2NvbnRlbnREb2N1bWVudCcgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0
dHI6ICdDaGVja1NlY3VyaXR5Rm9yTm9kZScpCisgICAgeyJjb250ZW50RG9jdW1lbnQiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6Y29udGVudERvY3VtZW50QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ211dGFibGVQb2ludCcg
KFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsibXV0YWJsZVBvaW50IiwgVGVz
dE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgVGVzdE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0dHJTZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdpbW11dGFibGVQb2lu
dCcgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdJbW11dGFibGUnKQorICAgIHsiaW1tdXRh
YmxlUG9pbnQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjppbW11dGFibGVQb2ludEF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmli
dXRlICdzdHJhd2JlcnJ5JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0ltcGxlbWVudGVk
QXMnKQorICAgIHsic3RyYXdiZXJyeSIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJhd2JlcnJ5QXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJy
eUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8g
QXR0cmlidXRlICdzdHJpY3RGbG9hdCcgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdTdHJp
Y3RUeXBlQ2hlY2tpbmcnKQorICAgIHsic3RyaWN0RmxvYXQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
c3RyaWN0RmxvYXRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVy
bmFsOjpzdHJpY3RGbG9hdEF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdkZXNjcmlwdGlvbicgKFR5cGU6ICdyZWFkb25seSBh
dHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsiZGVzY3JpcHRpb24iLCBUZXN0T2JqVjhJbnRl
cm5hbDo6ZGVzY3JpcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnaWQnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRB
dHRyOiAnJykKKyAgICB7ImlkIiwgVGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6aWRBdHRyU2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnaGFzaCcgKFR5
cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsiaGFzaCIsIFRlc3RP
YmpWOEludGVybmFsOjpoYXNoQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3JlcGxhY2VhYmxlQXR0cmlidXRlJyAoVHlw
ZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ1JlcGxhY2VhYmxlJykKKyAgICB7InJl
cGxhY2VhYmxlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlcGxhY2VhYmxlQXR0cmli
dXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVz
dE9ialJlcGxhY2VhYmxlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKK307CisK
IHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRNZXRob2QgVjhUZXN0T2Jq
TWV0aG9kc1tdID0gewogICAgIHsidm9pZE1ldGhvZCIsIFRlc3RPYmpWOEludGVybmFsOjp2b2lk
TWV0aG9kTWV0aG9kQ2FsbGJhY2t9LAogICAgIHsibG9uZ01ldGhvZCIsIFRlc3RPYmpWOEludGVy
bmFsOjpsb25nTWV0aG9kTWV0aG9kQ2FsbGJhY2t9LApAQCAtMzAzMiw3ICs0NTM5LDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE9iajo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uc3Ry
dWN0b3IoYXJncyk7CiB9CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
Q29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJl
bnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIApAQCAtMzA1
Miw0MSArNDU1OSw1NiBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQogICAgICAgICAvLyBBdHRy
aWJ1dGUgJ2VuYWJsZWRBdFJ1bnRpbWVBdHRyMScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6
ICdWOEVuYWJsZWRBdFJ1bnRpbWUnKQogICAgICAgICB7ImVuYWJsZWRBdFJ1bnRpbWVBdHRyMSIs
IFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyR2V0dGVyQ2FsbGJh
Y2ssIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyU2V0dGVyQ2Fs
bGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99OwogICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZp
Z3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhLCBpc29sYXRlKTsKKyAgICAg
ICAgaWYgKGN1cnJlbnRXb3JsZFR5cGUgPT0gTWFpbldvcmxkKSB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhRm9y
TWFpbldvcmxkID1cCisgICAgICAgIC8vIEF0dHJpYnV0ZSAnZW5hYmxlZEF0UnVudGltZUF0dHIx
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1Y4RW5hYmxlZEF0UnVudGltZScpCisgICAg
ICAgIHsiZW5hYmxlZEF0UnVudGltZUF0dHIxIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRB
dFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50
ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL307CisgICAgICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZp
Z3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhRm9yTWFpbldvcmxkLCBpc29s
YXRlKTsKKyAgICAgICAgfQogICAgIH0KICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
ZmVhdHVyZU5hbWVFbmFibGVkKCkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmln
dXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XAogICAgICAgICAvLyBBdHRyaWJ1
dGUgJ2VuYWJsZWRBdFJ1bnRpbWVBdHRyMicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdW
OEVuYWJsZWRBdFJ1bnRpbWUnKQogICAgICAgICB7ImVuYWJsZWRBdFJ1bnRpbWVBdHRyMiIsIFRl
c3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyU2V0dGVyQ2FsbGJh
Y2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99OwogICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3Vy
ZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhLCBpc29sYXRlKTsKKyAgICAgICAg
aWYgKGN1cnJlbnRXb3JsZFR5cGUgPT0gTWFpbldvcmxkKSB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhRm9yTWFp
bldvcmxkID1cCisgICAgICAgIC8vIEF0dHJpYnV0ZSAnZW5hYmxlZEF0UnVudGltZUF0dHIyJyAo
VHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1Y4RW5hYmxlZEF0UnVudGltZScpCisgICAgICAg
IHsiZW5hYmxlZEF0UnVudGltZUF0dHIyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1
bnRpbWVBdHRyMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJu
YWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL307CisgICAgICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3Vy
ZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhRm9yTWFpbldvcmxkLCBpc29sYXRl
KTsKKyAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChjdXJyZW50V29ybGRUeXBlID09IE1haW5X
b3JsZCkKKyAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjphZGRUb1RlbXBsYXRlKGRlc2MsIFY4
VGVzdE9iakF0dHJzRm9yTWFpbldvcmxkLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdE9iakF0dHJz
Rm9yTWFpbldvcmxkKSwgMCwgMCwgaXNvbGF0ZSwgZGVmYXVsdFNpZ25hdHVyZSk7CisKICAgICAv
LyBDdXN0b20gU2lnbmF0dXJlICd2b2lkTWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50IHZv
aWRNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHZvaWRNZXRob2RXaXRoQXJnc0FyZ3Zbdm9pZE1ldGhvZFdpdGhBcmdzQXJnY10gPSB7
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBs
YXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiB2b2lkTWV0aG9kV2l0aEFyZ3NBcmd2W3ZvaWRNZXRob2RXaXRoQXJn
c0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAg
IHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gdm9pZE1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlID0g
djg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHZvaWRNZXRob2RXaXRoQXJnc0FyZ2MsIHZvaWRNZXRo
b2RXaXRoQXJnc0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ2
b2lkTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJ
bnRlcm5hbDo6dm9pZE1ldGhvZFdpdGhBcmdzTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCks
IHZvaWRNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVy
ZSAnbG9uZ01ldGhvZFdpdGhBcmdzJwogICAgIGNvbnN0IGludCBsb25nTWV0aG9kV2l0aEFyZ3NB
cmdjID0gMzsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBsb25nTWV0aG9k
V2l0aEFyZ3NBcmd2W2xvbmdNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjpp
bmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
bG9uZ01ldGhvZFdpdGhBcmdzQXJndltsb25nTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4
VGVzdE9iajo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpT
aWduYXR1cmU+IGxvbmdNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5l
dyhkZXNjLCBsb25nTWV0aG9kV2l0aEFyZ3NBcmdjLCBsb25nTWV0aG9kV2l0aEFyZ3NBcmd2KTsK
ICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibG9uZ01ldGhvZFdpdGhBcmdz
IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdNZXRo
b2RXaXRoQXJnc01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBsb25nTWV0aG9kV2l0aEFy
Z3NTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ29iak1ldGhvZFdpdGhB
cmdzJwogICAgIGNvbnN0IGludCBvYmpNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOwotICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG9iak1ldGhvZFdpdGhBcmdzQXJndltvYmpNZXRo
b2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5cGUpIH07Cisg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gb2JqTWV0aG9kV2l0aEFyZ3NBcmd2
W29iak1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIGN1cnJlbnRX
b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBvYmpNZXRob2RXaXRo
QXJnc1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBvYmpNZXRob2RXaXRoQXJn
c0FyZ2MsIG9iak1ldGhvZFdpdGhBcmdzQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5n
OjpOZXdTeW1ib2woIm9iak1ldGhvZFdpdGhBcmdzIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpO
ZXcoVGVzdE9ialY4SW50ZXJuYWw6Om9iak1ldGhvZFdpdGhBcmdzTWV0aG9kQ2FsbGJhY2ssIHY4
VW5kZWZpbmVkKCksIG9iak1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0
b20gU2lnbmF0dXJlICdtZXRob2RXaXRoU2VxdWVuY2VBcmcnCiAgICAgY29uc3QgaW50IG1ldGhv
ZFdpdGhTZXF1ZW5jZUFyZ0FyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3ZbbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJn
Y10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOHNl
cXVlbmNlPFNjcmlwdFByb2ZpbGU+OjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRob2RX
aXRoU2VxdWVuY2VBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
cmF3VGVtcGxhdGUoJlY4c2VxdWVuY2U8U2NyaXB0UHJvZmlsZT46OmluZm8sIGN1cnJlbnRXb3Js
ZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RXaXRoU2VxdWVu
Y2VBcmdTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbWV0aG9kV2l0aFNlcXVl
bmNlQXJnQXJnYywgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndik7CiAgICAgcHJvdG8tPlNldCh2
ODo6U3RyaW5nOjpOZXdTeW1ib2woIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoU2VxdWVuY2VBcmdN
ZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0
dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdtZXRob2RUaGF0UmVxdWlyZXNBbGxB
cmdzQW5kVGhyb3dzJwogICAgIGNvbnN0IGludCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5k
VGhyb3dzQXJnYyA9IDI7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0
aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ3ZbbWV0aG9kVGhhdFJlcXVpcmVzQWxs
QXJnc0FuZFRocm93c0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigp
LCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2Jq
OjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ3ZbbWV0aG9kVGhhdFJlcXVp
cmVzQWxsQXJnc0FuZFRocm93c0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhU
ZXN0T2JqOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNp
Z25hdHVyZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c1NpZ25hdHVyZSA9IHY4
OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dz
QXJnYywgbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ3YpOwogICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5k
VGhyb3dzIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6Om1l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmlu
ZWQoKSwgbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c1NpZ25hdHVyZSkpOwogICAg
IGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN0YXRpY01ldGhvZFdpdGhDYWxsYmFj
a0FuZE9wdGlvbmFsQXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50
ZXJuYWw6OnN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnTWV0aG9kQ2FsbGJh
Y2ssIHY4VW5kZWZpbmVkKCksIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpKSk7CkBAIC0zMTA0
LDQzICs0NjI2LDQzIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNpCiAKICAgICAvLyBDdXN0b20g
U2lnbmF0dXJlICdzdHJpbmdBcnJheUZ1bmN0aW9uJwogICAgIGNvbnN0IGludCBzdHJpbmdBcnJh
eUZ1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
c3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6
aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2W3N0cmluZ0FycmF5RnVuY3Rpb25BcmdjXSA9IHsgVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106
OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJl
PiBzdHJpbmdBcnJheUZ1bmN0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2Ms
IHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjLCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndik7CiAgICAg
cHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN0cmluZ0FycmF5RnVuY3Rpb24iKSwg
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXJyYXlG
dW5jdGlvbk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdHJpbmdBcnJheUZ1bmN0aW9u
U2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdkb21TdHJpbmdMaXN0RnVu
Y3Rpb24nCiAgICAgY29uc3QgaW50IGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ2MgPSAxOwotICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFy
Z3ZbZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ0xpc3Q6OmluZm8sIHdvcmxkVHlwZSkg
fTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkb21TdHJpbmdMaXN0RnVu
Y3Rpb25Bcmd2W2RvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdMaXN0OjppbmZvLCBjdXJy
ZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gZG9tU3RyaW5n
TGlzdEZ1bmN0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGRvbVN0cmlu
Z0xpc3RGdW5jdGlvbkFyZ2MsIGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ3YpOwogICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKSwgdjg6
OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6ZG9tU3RyaW5nTGlzdEZ1
bmN0aW9uTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGRvbVN0cmluZ0xpc3RGdW5jdGlv
blNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnY29udmVydDEnCiAgICAg
Y29uc3QgaW50IGNvbnZlcnQxQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gY29udmVydDFBcmd2W2NvbnZlcnQxQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGE6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0MUFyZ3ZbY29udmVydDFB
cmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4
YTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1
cmU+IGNvbnZlcnQxU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGNvbnZlcnQx
QXJnYywgY29udmVydDFBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJv
bCgiY29udmVydDEiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5h
bDo6Y29udmVydDFNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVydDFTaWduYXR1
cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZlcnQyJwogICAgIGNvbnN0IGlu
dCBjb252ZXJ0MkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IGNvbnZlcnQyQXJndltjb252ZXJ0MkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhiOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDJBcmd2W2NvbnZlcnQyQXJnY10gPSB7
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGI6OmluZm8s
IGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBjb252
ZXJ0MlNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBjb252ZXJ0MkFyZ2MsIGNv
bnZlcnQyQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNvbnZl
cnQyIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZl
cnQyTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGNvbnZlcnQyU2lnbmF0dXJlKSk7CiAK
ICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdjb252ZXJ0NCcKICAgICBjb25zdCBpbnQgY29udmVy
dDRBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0
NEFyZ3ZbY29udmVydDRBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
cmF3VGVtcGxhdGUoJlY4ZDo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQ0QXJndltjb252ZXJ0NEFyZ2NdID0geyBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhkOjppbmZvLCBjdXJyZW50
V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDRTaWdu
YXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgY29udmVydDRBcmdjLCBjb252ZXJ0NEFy
Z3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0NCIpLCB2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0NE1ldGhv
ZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0NFNpZ25hdHVyZSkpOwogCiAgICAgLy8g
Q3VzdG9tIFNpZ25hdHVyZSAnY29udmVydDUnCiAgICAgY29uc3QgaW50IGNvbnZlcnQ1QXJnYyA9
IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDVBcmd2W2Nv
bnZlcnQ1QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBs
YXRlKCZWOGU6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBjb252ZXJ0NUFyZ3ZbY29udmVydDVBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4ZTo6aW5mbywgY3VycmVudFdvcmxkVHlw
ZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZlcnQ1U2lnbmF0dXJlID0g
djg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGNvbnZlcnQ1QXJnYywgY29udmVydDVBcmd2KTsKICAg
ICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVydDUiKSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDVNZXRob2RDYWxsYmFj
aywgdjhVbmRlZmluZWQoKSwgY29udmVydDVTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBT
aWduYXR1cmUgJ3ZhcmlhZGljTm9kZU1ldGhvZCcKICAgICBjb25zdCBpbnQgdmFyaWFkaWNOb2Rl
TWV0aG9kQXJnYyA9IDI7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdmFy
aWFkaWNOb2RlTWV0aG9kQXJndlt2YXJpYWRpY05vZGVNZXRob2RBcmdjXSA9IHsgVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbywgd29ybGRU
eXBlKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9k
ZTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IHZhcmlhZGljTm9kZU1ldGhvZEFyZ3ZbdmFyaWFkaWNOb2RlTWV0aG9kQXJnY10gPSB7IFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOE5vZGU6OmluZm8s
IGN1cnJlbnRXb3JsZFR5cGUpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdU
ZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5k
bGU8djg6OlNpZ25hdHVyZT4gdmFyaWFkaWNOb2RlTWV0aG9kU2lnbmF0dXJlID0gdjg6OlNpZ25h
dHVyZTo6TmV3KGRlc2MsIHZhcmlhZGljTm9kZU1ldGhvZEFyZ2MsIHZhcmlhZGljTm9kZU1ldGhv
ZEFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ2YXJpYWRpY05v
ZGVNZXRob2QiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6
dmFyaWFkaWNOb2RlTWV0aG9kTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHZhcmlhZGlj
Tm9kZU1ldGhvZFNpZ25hdHVyZSkpOwogICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25m
aWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8sIFY4VGVzdE9iakNvbnN0cywgV1RGX0FSUkFZX0xF
TkdUSChWOFRlc3RPYmpDb25zdHMpLCBpc29sYXRlKTsKQEAgLTMxNTAsMjMgKzQ2NzIsMjMgQEAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRl
c3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE9iajo6R2V0VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE9iajo6R2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsK
LSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9
IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0
YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJl
bnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxh
dGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZh
bHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVz
dE9ialRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRl
LCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZv
LCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKGRhdGEtPnJhd1Rl
bXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlw
ZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0
ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdE9iajo6SGFzSW5zdGFu
Y2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3Jh
cHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldv
cmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7Cisg
ICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZp
bmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIHZvaWQgVjhUZXN0T2JqOjppbnN0
YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBpbnN0YW5jZSwg
VGVzdE9iaiogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKaW5kZXggODc3YWMyNTBj
NzRkNGUxNjhjZDIxMDMzYmRjNDI5N2JhNDAyZjJkOC4uMGU1MWQ1Yzk2MGIzMDhlYTQ2MWJjN2Qx
NmZkYjU4ZTczYjY3ZDIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaApAQCAtODYsNiArODYsMjQgQEAgaW5saW5lIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0T2JqKiBpbXBsLCBjb25zdCBIb2xkZXJDb250
YWluZXImIGNvbnQKIH0KIAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBX
cmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldv
cmxkKFRlc3RPYmoqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFw
cGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICBy
ZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChp
bXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBl
cjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5H
ZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNz
IFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWlu
V29ybGQoUGFzc1JlZlB0cjwgVGVzdE9iaiA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYg
Y29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RG
b3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3Rl
bXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0T2JqID4gaW1wbCwg
Y29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQog
ewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggZTNi
M2U0MTBmMDk4M2Y5NTc4Y2QxOTIwOGJlMDQwNWE0OGFjZDE2NS4uMjA2ZGMzOWJlMGNhMmFlZTNk
NTRjMTE2Yjg5NTViYmJmN2I0ZjRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0
IHY4CiAgICAgcmV0dXJuIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVjhJbnRlcm5hbDo6Y29u
c3RydWN0b3IoYXJncyk7CiB9CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RlbXBsYXRlKHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsK
ICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCkBAIC0xNTksMjggKzE1OSwzMSBAQCBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcgogICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwogICAgIAogCisgICAg
aWYgKGN1cnJlbnRXb3JsZFR5cGUgPT0gTWFpbldvcmxkKQorICAgICAgICBWOERPTUNvbmZpZ3Vy
YXRpb246OmFkZFRvVGVtcGxhdGUoZGVzYywgMCwgMCwgMCwgMCwgaXNvbGF0ZSwgZGVmYXVsdFNp
Z25hdHVyZSk7CisKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKICAgICBkZXNjLT5T
ZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCBWOFBlcklzb2xhdGVEYXRhOjpj
dXJyZW50KCktPnRvU3RyaW5nVGVtcGxhdGUoKSk7CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUs
IFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVE
YXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBs
YXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVN
YXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUp
LmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVu
dFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwg
aXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFk
ZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5cGUp
LCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcChjdXJy
ZW50V29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAK
LWJvb2wgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6SGFzSW5zdGFuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Okhhc0luc3Rh
bmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5
cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0
YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCmluZGV4IDMwODY4OWIzNDhmMzRhYTFjYWQ1
YzNhNTllOTg1MjQxYWIzYjljNDguLjhiOGYyZGIzNzQ4MGM2ZDFlMzY4MTlkZTkzZjFjZWVjODY2
MGMwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAt
ODEsNiArODEsMjQgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCwgY29uc3QgSG8KIH0KIAogdGVtcGxhdGU8Y2xh
c3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFw
cGFibGUpCit7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVs
bChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAg
aWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0
dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgp
KTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+
CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFBhc3NS
ZWZQdHI8IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID4gaW1wbCwgY29uc3QgSG9sZGVyQ29u
dGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0
b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9
CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWlu
ZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdl
dCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDhlNWM3YzQ1ZmQ5NWRjZDU1
MDdjOTU1YWViYzdiYjY3Y2EwNjc3YjIuLjMwZjgwMTZlMTkwMGU3NjNiNTZjYTc5NjZjYjE3ODIw
ZjBlNWI1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC04Niw2ICs4NiwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLAogICAgIHJldHVybiBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRl
cm5hbDo6dmFsdWVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiBpbXAt
PnZhbHVlKCkgPyBpbXAtPnZhbHVlKCktPmRlc2VyaWFsaXplKCkgOiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4odjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
cmV0dXJuIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjp2YWx1
ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHZh
bHVlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wID0gVjhUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTk5LDYgKzExMCwx
OSBAQCBzdGF0aWMgdm9pZCB2YWx1ZUF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYQogICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VWOEludGVybmFsOjp2YWx1ZUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8p
OwogfQogCitzdGF0aWMgdm9pZCB2YWx1ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UqIGltcCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdiA9
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSk7
CisgICAgaW1wLT5zZXRWYWx1ZShXVEY6OmdldFB0cih2KSk7CisgICAgcmV0dXJuOworfQorCitz
dGF0aWMgdm9pZCB2YWx1ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwg
aW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZG9ubHlWYWx1ZUF0
dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1w
ID0gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKQEAgLTExMCw2ICsxMzQsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiByZWFkb25seVZhbHVlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW4KICAg
ICByZXR1cm4gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnJl
YWRvbmx5VmFsdWVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcCA9IFY4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0
dXJuIGltcC0+cmVhZG9ubHlWYWx1ZSgpID8gaW1wLT5yZWFkb25seVZhbHVlKCktPmRlc2VyaWFs
aXplKCkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKSk7
Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZG9ubHlWYWx1ZUF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyRm9yTWFp
bldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNh
Y2hlZFZhbHVlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3Bl
cnR5TmFtZSA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY2FjaGVkVmFsdWUiKTsKQEAgLTEyOCw2
ICsxNjMsMjQgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRWYWx1ZUF0dHJH
ZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICByZXR1cm4gVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0ckdldHRl
cihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRW
YWx1ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5n
PiBwcm9wZXJ0eU5hbWUgPSB2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNhY2hlZFZhbHVlIik7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gaW5mby5Ib2xkZXIoKS0+R2V0SGlkZGVu
VmFsdWUocHJvcGVydHlOYW1lKTsKKyAgICBpZiAoIXZhbHVlLklzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIHZhbHVlOworICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGlt
cCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZCA9
IGltcC0+Y2FjaGVkVmFsdWUoKTsKKyAgICB2YWx1ZSA9IHNlcmlhbGl6ZWQgPyBzZXJpYWxpemVk
LT5kZXNlcmlhbGl6ZSgpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4TnVsbChpbmZvLkdldElz
b2xhdGUoKSkpOworICAgIGluZm8uSG9sZGVyKCktPlNldEhpZGRlblZhbHVlKHByb3BlcnR5TmFt
ZSwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjYWNoZWRWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICByZXR1cm4gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNh
Y2hlZFZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGlj
IHZvaWQgY2FjaGVkVmFsdWVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpA
QCAtMTQyLDYgKzE5NSwyMCBAQCBzdGF0aWMgdm9pZCBjYWNoZWRWYWx1ZUF0dHJTZXR0ZXJDYWxs
YmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPAogICAgIFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRWYWx1ZUF0dHJTZXR0
ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBjYWNoZWRWYWx1ZUF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcCA9IFY4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdiA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgaW1wLT5zZXRDYWNoZWRWYWx1ZShXVEY6
OmdldFB0cih2KSk7CisgICAgaW5mby5Ib2xkZXIoKS0+RGVsZXRlSGlkZGVuVmFsdWUodjg6OlN0
cmluZzo6TmV3U3ltYm9sKCJjYWNoZWRWYWx1ZSIpKTsgLy8gSW52YWxpZGF0ZSB0aGUgY2FjaGVk
IHZhbHVlLgorICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgY2FjaGVkVmFsdWVBdHRyU2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRW
YWx1ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvcnRzQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTYwLDYgKzIyNywy
NCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvcnRzQXR0ckdldHRlckNhbGxiYWNr
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogICAgIHJldHVybiBUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6cG9ydHNBdHRyR2V0dGVyKG5hbWUsIGluZm8p
OwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvcnRzQXR0ckdldHRlckZvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXAg
PSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOworICAgIE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzID0gaW1wLT5wb3J0cygpOworICAg
IGlmICghcG9ydHMpCisgICAgICAgIHJldHVybiB2ODo6QXJyYXk6Ok5ldygwKTsKKyAgICBNZXNz
YWdlUG9ydEFycmF5IHBvcnRzQ29weSgqcG9ydHMpOworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+
IHBvcnRBcnJheSA9IHY4OjpBcnJheTo6TmV3KHBvcnRzQ29weS5zaXplKCkpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcG9ydHNDb3B5LnNpemUoKTsgKytpKQorICAgICAgICBwb3J0QXJy
YXktPlNldCh2OEludGVnZXIoaSwgaW5mby5HZXRJc29sYXRlKCkpLCB0b1Y4RmFzdEZvck1haW5X
b3JsZChwb3J0c0NvcHlbaV0uZ2V0KCksIGluZm8sIGltcCkpOworICAgIHJldHVybiBwb3J0QXJy
YXk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9ydHNBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VWOEludGVybmFsOjpwb3J0c0F0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwg
aW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FjaGVkUmVhZG9ubHlW
YWx1ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBwcm9wZXJ0eU5h
bWUgPSB2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNhY2hlZFJlYWRvbmx5VmFsdWUiKTsKQEAgLTE3
OCw2ICsyNjMsMjQgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRSZWFkb25s
eVZhbHVlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODoKICAgICByZXR1cm4gVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFJlYWRvbmx5VmFs
dWVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHY4
OjpIYW5kbGU8djg6OlN0cmluZz4gcHJvcGVydHlOYW1lID0gdjg6OlN0cmluZzo6TmV3U3ltYm9s
KCJjYWNoZWRSZWFkb25seVZhbHVlIik7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVl
ID0gaW5mby5Ib2xkZXIoKS0+R2V0SGlkZGVuVmFsdWUocHJvcGVydHlOYW1lKTsKKyAgICBpZiAo
IXZhbHVlLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZCA9IGltcC0+Y2FjaGVkUmVhZG9ubHlWYWx1ZSgpOwor
ICAgIHZhbHVlID0gc2VyaWFsaXplZCA/IHNlcmlhbGl6ZWQtPmRlc2VyaWFsaXplKCkgOiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4odjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKSk7CisgICAgaW5mby5I
b2xkZXIoKS0+U2V0SGlkZGVuVmFsdWUocHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJu
IHZhbHVlOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZFJlYWRvbmx5
VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRSZWFkb25seVZh
bHVlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhY2NlcHRUcmFuc2Zlckxpc3RNZXRob2QoY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCkBAIC0yOTIsNiArMzk1
LDE5IEBAIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUg
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50CiAgICAgeyJjYWNoZWRSZWFkb25seVZhbHVl
IiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFJl
YWRvbmx5VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsKIAor
c3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VBdHRyc0Zvck1haW5Xb3JsZFtdID0geworICAg
IC8vIEF0dHJpYnV0ZSAndmFsdWUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAg
ICB7InZhbHVlIiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6
OnZhbHVlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6dmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAncmVhZG9ubHlWYWx1ZScg
KFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsicmVhZG9ubHlW
YWx1ZSIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpyZWFk
b25seVZhbHVlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKKyAgICAvLyBBdHRyaWJ1dGUgJ2NhY2hlZFZhbHVlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0
QXR0cjogJ0NhY2hlZEF0dHJpYnV0ZScpCisgICAgeyJjYWNoZWRWYWx1ZSIsIFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRWYWx1ZUF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4
SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3BvcnRzJyAoVHlwZTogJ3JlYWRvbmx5IGF0
dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJwb3J0cyIsIFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpwb3J0c0F0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdjYWNoZWRSZWFkb25s
eVZhbHVlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ0NhY2hlZEF0dHJp
YnV0ZScpCisgICAgeyJjYWNoZWRSZWFkb25seVZhbHVlIiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorfTsKKwogc3RhdGljIGNvbnN0
IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZE1ldGhvZCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VNZXRob2RzW10gPSB7CiAgICAgeyJhY2NlcHRUcmFuc2Zlckxpc3QiLCBU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6YWNjZXB0VHJhbnNm
ZXJMaXN0TWV0aG9kQ2FsbGJhY2t9LAogICAgIHsibXVsdGlUcmFuc2Zlckxpc3QiLCBUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6bXVsdGlUcmFuc2Zlckxpc3RN
ZXRob2RDYWxsYmFja30sCkBAIC0zMDgsNyArNDI0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFj
aygKICAgICByZXR1cm4gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJu
YWw6OmNvbnN0cnVjdG9yKGFyZ3MpOwogfQogCi1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAK
QEAgLTMyNCwyOCArNDQwLDMxIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlCiAgICAgVU5VU0VE
X1BBUkFNKHByb3RvKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAg
ICAKIAorICAgIGlmIChjdXJyZW50V29ybGRUeXBlID09IE1haW5Xb3JsZCkKKyAgICAgICAgVjhE
T01Db25maWd1cmF0aW9uOjphZGRUb1RlbXBsYXRlKGRlc2MsIFY4VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZUF0dHJzRm9yTWFpbldvcmxkLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUF0dHJzRm9yTWFpbldvcmxkKSwgMCwgMCwg
aXNvbGF0ZSwgZGVmYXVsdFNpZ25hdHVyZSk7CisKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVt
cGxhdGUKICAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCBW
OFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5nVGVtcGxhdGUoKSk7CiAgICAgcmV0
dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRl
KiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6
OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJl
bnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5m
byk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgp
KQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBk
YXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAo
cmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAg
ICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVT
Y29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQot
ICAgICAgICBDb25maWd1cmVWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VUZW1w
bGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRU
eXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwp
OworICAgICAgICBDb25maWd1cmVWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VU
ZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xh
dGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3Js
ZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBW
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Okhhc0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5
cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6
Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVl
LCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaApp
bmRleCA1MGRjYmYxNjFmOWEwMmQ1Zjg3NzViOTdkYzIyODdkYjQ3Y2Q2MzViLi45OGMxODBlYjFi
MTUzNzg1NmE4YjQ4NmZjMjQyMTUxMmRkN2IzMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCkBAIC04Miw2ICs4MiwyNCBAQCBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UqIGltcGwsCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5l
ciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFz
dEZvck1haW5Xb3JsZChUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXBsLCBj
b25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7
CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWlu
ZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBE
T01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFw
cGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAo
aW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250
YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRv
VjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30K
KworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlu
bGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYg
Y29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKICAgICByZXR1cm4gdG9WOEZhc3Qo
aW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAKaW5k
ZXggYzdkYjQ3OTA4NzhiMDE4MzA1NDFiOTViYjliMGEzNWY5ZTZiMTVmOC4uMTRmZTdjZjQ0MjFh
NjhjMGYwZTBlYTA1ZDk1YmRlMzFiNjJmZmZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwCkBAIC05
MSw2ICs5MSwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHVuc2lnbmVkTG9uZ0xv
bmdBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2OAogICAgIHJldHVybiBUZXN0VHlw
ZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5m
byk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdW5zaWduZWRMb25nTG9uZ0F0
dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhU
ZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2ODo6TnVt
YmVyOjpOZXcoc3RhdGljX2Nhc3Q8ZG91YmxlPihpbXAtPnVuc2lnbmVkTG9uZ0xvbmdBdHRyKCkp
KTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1bnNpZ25lZExvbmdMb25nQXR0
ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdFR5cGVk
ZWZzVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJT
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RUeXBlZGVmcyog
aW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTA0LDYg
KzExNSwxOSBAQCBzdGF0aWMgdm9pZCB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxs
YmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdgogICAgIFRlc3RUeXBlZGVmc1Y4SW50
ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7
CiB9CiAKK3N0YXRpYyB2b2lkIHVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckZvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFR5cGVkZWZzKiBp
bXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIHYgPSB0b0ludDY0KHZhbHVlKTsKKyAgICBpbXAtPnNldFVuc2lnbmVkTG9u
Z0xvbmdBdHRyKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgdW5zaWduZWRMb25n
TG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xv
bmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVl
QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKICAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTExNSw2ICsxMzksMTcgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyR2V0dGVy
Q2FsbGJhY2sodjgKICAgICByZXR1cm4gVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6aW1tdXRhYmxl
U2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlw
ZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiBpbXAtPmltbXV0YWJs
ZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpID8gaW1wLT5pbW11dGFibGVTZXJpYWxpemVkU2NyaXB0
VmFsdWUoKS0+ZGVzZXJpYWxpemUoKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OE51bGwoaW5m
by5HZXRJc29sYXRlKCkpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbW11
dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgcmV0dXJuIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmltbXV0YWJsZVNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0
YXRpYyB2b2lkIGltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0
VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTI4LDYgKzE2MywxOSBAQCBz
dGF0aWMgdm9pZCBpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyU2V0dGVyQ2FsbGJh
Y2sodjg6OkxvY2FsPHY4OjpTdHJpbgogICAgIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmltbXV0
YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwog
fQogCitzdGF0aWMgdm9pZCBpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyU2V0dGVy
Rm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0VHlw
ZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICBpbXAtPnNldEltbXV0YWJs
ZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEY6OmdldFB0cih2KSk7CisgICAgcmV0dXJuOworfQor
CitzdGF0aWMgdm9pZCBpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyU2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKQEAgLTE0Myw2ICsxOTEsMjEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBh
dHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWwKICAgICBy
ZXR1cm4gVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRy
R2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbnQgdiA9IGltcC0+YXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24oZWMpOworICAgIGlmIChVTkxJS0VMWShlYykpCisgICAgICAgIHJldHVybiBz
ZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdjhJbnRl
Z2VyKHYsIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICByZXR1cm4gVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJF
eGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMg
dm9pZCBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewogICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTU2LDYgKzIxOSwxOSBAQCBzdGF0aWMgdm9pZCBh
dHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZQogICAgIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIGF0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVm
czo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsK
KyAgICBpbXAtPnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKHYpOworICAgIHJldHVybjsKK30K
Kworc3RhdGljIHZvaWQgYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RUeXBl
ZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5X
b3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RUeXBlZGVm
cyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTY3
LDYgKzI0MywxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbAogICAgIHJldHVybiBUZXN0VHlw
ZWRlZnNWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIobmFtZSwg
aW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cldpdGhTZXR0ZXJF
eGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RUeXBlZGVmcyogaW1w
ID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2
OEludGVnZXIoaW1wLT5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpLCBpbmZvLkdldElzb2xhdGUo
KSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cldpdGhTZXR0ZXJFeGNl
cHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RU
eXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckZvck1h
aW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgYXR0cldpdGhTZXR0ZXJFeGNl
cHRpb25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0
VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
QEAgLTE4Myw2ICsyNzAsMjIgQEAgc3RhdGljIHZvaWQgYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25B
dHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUKICAgICBUZXN0VHlw
ZWRlZnNWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIobmFtZSwg
dmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBhdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0
dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisgICAgaW1wLT5zZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlvbih2LCBlYyk7CisgICAgaWYg
KFVOTElLRUxZKGVjKSkKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xh
dGUoKSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBhdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJFeGNl
cHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0
dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xOTgsNiArMzAxLDIxIEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6CiAgICAgcmV0dXJuIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0
ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVm
czo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgU3RyaW5nIHYgPSBpbXAtPnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKTsKKyAg
ICBpZiAoVU5MSUtFTFkoZWMpKQorICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBp
bmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKHYsIGluZm8uR2V0SXNvbGF0
ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIHJldHVybiBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9
CisKIHN0YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBW
OFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0yMTEsNiArMzI5LDE5
IEBAIHN0YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNh
bGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nCiAgICAgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6
c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZv
KTsKIH0KIAorc3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0
dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
KyAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJj
ZTw+LCB2LCB2YWx1ZSk7CisgICAgaW1wLT5zZXRTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlv
bih2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8p
OworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5
cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTIyMiw2ICszNTMsMTcgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0
dHJHZXR0ZXJDYWxsYmFjayh2ODoKICAgICByZXR1cm4gVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6
c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQog
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4
VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhTdHJp
bmcoaW1wLT5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpLCBpbmZvLkdldElzb2xhdGUo
KSwgUmV0dXJuVW5zYWZlSGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICByZXR1cm4gVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQor
CiBzdGF0aWMgdm9pZCBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhU
ZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMjM4LDYgKzM4MCwyMiBA
QCBzdGF0aWMgdm9pZCBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxs
YmFjayh2ODo6TG9jYWw8djg6OlN0cmluZwogICAgIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0
cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7
CiB9CiAKK3N0YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRl
ckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFR5
cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lEKFY4U3RyaW5nUmVzb3VyY2U8
PiwgdiwgdmFsdWUpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcC0+c2V0U3Ry
aW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24odiwgZWMpOworICAgIGlmIChVTkxJS0VMWShlYykp
CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihlYywgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJl
dHVybjsKK30KKworc3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRy
U2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVGVzdFR5cGVkZWZzQ29uc3RydWN0b3JHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEgPSBpbmZvLkRhdGEoKTsKQEAgLTUxMyw2
ICs2NzEsMjMgQEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJp
YnV0ZSBWOFRlc3RUeXBlZGVmc0F0dHJzW10gPSB7CiAgICAgeyJzdHJpbmdBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiB9OwogCitzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmli
dXRlIFY4VGVzdFR5cGVkZWZzQXR0cnNGb3JNYWluV29ybGRbXSA9IHsKKyAgICAvLyBBdHRyaWJ1
dGUgJ3Vuc2lnbmVkTG9uZ0xvbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycp
CisgICAgeyJ1bnNpZ25lZExvbmdMb25nQXR0ciIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnVu
c2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0VHlw
ZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdpbW11dGFibGVT
ZXJpYWxpemVkU2NyaXB0VmFsdWUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnSW1tdXRh
YmxlJykKKyAgICB7ImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIsIFRlc3RUeXBlZGVm
c1Y4SW50ZXJuYWw6OmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJHZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6aW1tdXRhYmxlU2VyaWFs
aXplZFNjcmlwdFZhbHVlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ1Rlc3RTdWJPYmonIChUeXBlOiAncmVhZG9ubHkgYXR0
cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7IlRlc3RTdWJPYmoiLCBUZXN0VHlwZWRlZnNWOElu
dGVybmFsOjpUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvckdldHRlciwgMCwgJlY4VGVzdFN1Yk9iajo6
aW5mbywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAorICAgIC8vIEF0dHJpYnV0ZSAnYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24nIChUeXBlOiAn
YXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7ImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwg
VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKKyAgICAvLyBBdHRyaWJ1dGUgJ2F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0
dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRl
c3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CisgICAgLy8gQXR0cmlidXRlICdzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbicgKFR5cGU6
ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24iLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdFR5cGVkZWZzVjhJbnRlcm5h
bDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnc3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24nIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7InN0
cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3Ry
aW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQs
IFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0
clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKK307CisKIHN0YXRp
YyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRNZXRob2QgVjhUZXN0VHlwZWRlZnNN
ZXRob2RzW10gPSB7CiAgICAgeyJmdW5jIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6ZnVuY01l
dGhvZENhbGxiYWNrfSwKICAgICB7Im11bHRpVHJhbnNmZXJMaXN0IiwgVGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6bXVsdGlUcmFuc2Zlckxpc3RNZXRob2RDYWxsYmFja30sCkBAIC01MzMsNyArNzA4
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdFR5cGVkZWZzOjpjb25zdHJ1Y3RvckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICByZXR1cm4gVGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6Y29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZSh2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xh
dGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRlKHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRP
bmx5UHJvdG90eXBlKCk7CiAKQEAgLTU0OSwyNyArNzI0LDMwIEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0
ZSh2ODo6CiAgICAgVU5VU0VEX1BBUkFNKHByb3RvKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2ls
bCBub3QgYmUgdXNlZC4KICAgICAKIAorICAgIGlmIChjdXJyZW50V29ybGRUeXBlID09IE1haW5X
b3JsZCkKKyAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjphZGRUb1RlbXBsYXRlKGRlc2MsIFY4
VGVzdFR5cGVkZWZzQXR0cnNGb3JNYWluV29ybGQsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0VHlw
ZWRlZnNBdHRyc0Zvck1haW5Xb3JsZCksIDAsIDAsIGlzb2xhdGUsIGRlZmF1bHRTaWduYXR1cmUp
OworCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbWV0aG9kV2l0aFNlcXVlbmNlQXJnJwogICAg
IGNvbnN0IGludCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhvZFdp
dGhTZXF1ZW5jZUFyZ0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5y
YXdUZW1wbGF0ZSgmVjhzZXF1ZW5jZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+OjppbmZvLCB3b3Js
ZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kV2l0
aFNlcXVlbmNlQXJnQXJndlttZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjXSA9IHsgVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4c2VxdWVuY2U8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPjo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxl
PHY4OjpTaWduYXR1cmU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSA9IHY4OjpTaWdu
YXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjLCBtZXRob2RXaXRoU2Vx
dWVuY2VBcmdBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0
aG9kV2l0aFNlcXVlbmNlQXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVk
ZWZzVjhJbnRlcm5hbDo6bWV0aG9kV2l0aFNlcXVlbmNlQXJnTWV0aG9kQ2FsbGJhY2ssIHY4VW5k
ZWZpbmVkKCksIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3Vz
dG9tIFNpZ25hdHVyZSAnbnVsbGFibGVBcnJheUFyZycKICAgICBjb25zdCBpbnQgbnVsbGFibGVB
cnJheUFyZ0FyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG51
bGxhYmxlQXJyYXlBcmdBcmd2W251bGxhYmxlQXJyYXlBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8sIHdv
cmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBudWxsYWJs
ZUFycmF5QXJnQXJndltudWxsYWJsZUFycmF5QXJnQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZvLCBjdXJyZW50
V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbnVsbGFibGVBcnJh
eUFyZ1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBudWxsYWJsZUFycmF5QXJn
QXJnYywgbnVsbGFibGVBcnJheUFyZ0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJudWxsYWJsZUFycmF5QXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXco
VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6bnVsbGFibGVBcnJheUFyZ01ldGhvZENhbGxiYWNrLCB2
OFVuZGVmaW5lZCgpLCBudWxsYWJsZUFycmF5QXJnU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0
b20gU2lnbmF0dXJlICdzdHJpbmdBcnJheUZ1bmN0aW9uJwogICAgIGNvbnN0IGludCBzdHJpbmdB
cnJheUZ1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdb
XTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2W3N0cmluZ0FycmF5RnVuY3Rpb25BcmdjXSA9IHsg
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5n
W106OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0
dXJlPiBzdHJpbmdBcnJheUZ1bmN0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRl
c2MsIHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjLCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndik7CiAg
ICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN0cmluZ0FycmF5RnVuY3Rpb24i
KSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJp
bmdBcnJheUZ1bmN0aW9uTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHN0cmluZ0FycmF5
RnVuY3Rpb25TaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmluZ0Fy
cmF5RnVuY3Rpb24yJwogICAgIGNvbnN0IGludCBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ2MgPSAx
OwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rp
b24yQXJndltzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgd29ybGRUeXBl
KSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVu
Y3Rpb24yQXJndltzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgY3VycmVu
dFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHN0cmluZ0FycmF5
RnVuY3Rpb24yU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHN0cmluZ0FycmF5
RnVuY3Rpb24yQXJnYywgc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmd2KTsKICAgICBwcm90by0+U2V0
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3RyaW5nQXJyYXlGdW5jdGlvbjIiKSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBcnJheUZ1bmN0
aW9uMk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdHJpbmdBcnJheUZ1bmN0aW9uMlNp
Z25hdHVyZSkpOwogCkBAIC01NzgsMjMgKzc1NiwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUodjg6
OgogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gVjhUZXN0VHlwZWRlZnM6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3RUeXBlZGVmczo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUs
IFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVE
YXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBs
YXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVN
YXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUp
LmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVu
dFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVt
cGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxk
VHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBs
KTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZShkYXRhLT5yYXdUZW1w
bGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUp
OworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVt
cGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RUeXBlZGVmczo6SGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdFR5cGVkZWZzOjpIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRU
eXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5z
dGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVm
cy5oCmluZGV4IGVlOWVjMmY0ZTQwZjE3MWE4NTExYjUzYTI2ZTBjNjZlZmM3ZGEzMGEuLjE4Y2Y5
MDdiMmZlYzRmMzNhNjE2MjU4MzljMjM0YmRiYTdmNzU0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5oCkBA
IC04MSw2ICs4MSwyNCBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRl
c3RUeXBlZGVmcyogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJgogfQogCiB0ZW1wbGF0ZTxj
bGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVzdFR5cGVkZWZzKiBpbXBsLCBjb25z
dCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7Cisg
ICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIu
R2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01E
YXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVy
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1w
bCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwordGVt
cGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IFRlc3RU
eXBlZGVmcyA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFi
bGUqIHdyYXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5n
ZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRl
ckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0VHlwZWRlZnMgPiBpbXBsLCBjb25zdCBIb2xkZXJD
b250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJu
IHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKaW5kZXggYzA1MDMzZjBiNmNhNWMzNjk4YWE3
NjQ1ODM5NmZhYTNjMTJmMGVhNi4uYjQwMGVlM2QzMGYyYTk1YTkxNjhmN2Y5YmMxNTI3MDRlZjY3
YjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3Jl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKQEAgLTg0
LDYgKzg0LDE2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldFdyYXBwZXJGb3JNYWluV29ybGQo
VCogb2JqZWN0KQorICAgIHsKKyAgICAgICAgaWYgKG1haW5Xb3JsZFdyYXBwZXJJc1N0b3JlZElu
T2JqZWN0KG9iamVjdCkgJiYgaXNNYWluV29ybGRPYmplY3Qob2JqZWN0KSkgeworICAgICAgICAg
ICAgaWYgKExJS0VMWSghRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBnZXRXcmFwcGVyRnJvbU9iamVjdChvYmplY3QpOworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBtYWluV29ybGRTdG9yZSgpLT5nZXQob2JqZWN0KTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lkIHNldFdyYXBw
ZXIoVCogb2JqZWN0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRl
KiBpc29sYXRlLCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAg
ICB7CiAgICAgICAgIGlmIChtYWluV29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChvYmplY3Qp
ICYmIGlzTWFpbldvcmxkT2JqZWN0KG9iamVjdCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDVmZTdiY2ZhY2RkZTU2NTcy
YjVlMjBiMGViMzY3ZTU2MGRlY2FlOWQuLmY5MjM0ZjdhMjVkYWUxOGJlOTU3NTAyNzkzNzEyZWJh
YWJkMzQ5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29u
ZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db25m
aWd1cmF0aW9uLmNwcApAQCAtNzcsNCArNzcsMTQgQEAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+
IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djgK
ICAgICByZXR1cm4gZGVmYXVsdFNpZ25hdHVyZTsKIH0KIAordm9pZCBWOERPTUNvbmZpZ3VyYXRp
b246OmFkZFRvVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZ1
bmN0aW9uRGVzY3JpcHRvciwgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSogYXR0cmlidXRlcywgc2l6
ZV90IGF0dHJpYnV0ZUNvdW50LCBjb25zdCBCYXRjaGVkTWV0aG9kKiBjYWxsYmFja3MsIHNpemVf
dCBjYWxsYmFja0NvdW50LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OkxvY2FsPHY4OjpTaWdu
YXR1cmU+IHNpZ25hdHVyZSkKK3sKKyAgICBpZiAoYXR0cmlidXRlQ291bnQpIHsKKyAgICAgICAg
djg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBmdW5jdGlvbkRlc2NyaXB0
b3ItPkluc3RhbmNlVGVtcGxhdGUoKTsKKyAgICAgICAgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVz
KGluc3RhbmNlLCBmdW5jdGlvbkRlc2NyaXB0b3ItPlByb3RvdHlwZVRlbXBsYXRlKCksIGF0dHJp
YnV0ZXMsIGF0dHJpYnV0ZUNvdW50LCBpc29sYXRlKTsKKyAgICB9CisgICAgaWYgKGNhbGxiYWNr
Q291bnQpCisgICAgICAgIGJhdGNoQ29uZmlndXJlQ2FsbGJhY2tzKGZ1bmN0aW9uRGVzY3JpcHRv
ci0+UHJvdG90eXBlVGVtcGxhdGUoKSwgc2lnbmF0dXJlLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlKSwgY2FsbGJhY2tzLCBjYWxsYmFja0NvdW50LCBp
c29sYXRlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaAppbmRleCA4ZjljOTFhMGFhMzBmOTg0
NDA4NWI4NzBiOGVjOWE1ZGNlMmExY2ZmLi5hYzAyODY4ZDcyYzIzNzI2YWQ1MDI2MTNlZTcwMzk0
YWFhYzIyNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNv
bmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZp
Z3VyYXRpb24uaApAQCAtODUsNiArODUsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgYmF0
Y2hDb25maWd1cmVDYWxsYmFja3Modjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+LCB2ODo6
SGFuZGxlPHY4OjpTaWduYXR1cmU+LCB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIGNvbnN0IEJhdGNo
ZWRNZXRob2QqLCBzaXplX3QgY2FsbGJhY2tDb3VudCwgdjg6Oklzb2xhdGUqKTsKIAogICAgIHN0
YXRpYyB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gY29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+LCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcGFyZW50Q2xhc3MsIHNpemVfdCBm
aWVsZENvdW50LCBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiwgc2l6ZV90IGF0dHJpYnV0ZUNvdW50
LCBjb25zdCBCYXRjaGVkTWV0aG9kKiwgc2l6ZV90IGNhbGxiYWNrQ291bnQsIHY4OjpJc29sYXRl
Kik7CisKKyAgICBzdGF0aWMgdm9pZCBhZGRUb1RlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiwgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSosIHNpemVfdCBhdHRyaWJ1
dGVDb3VudCwgY29uc3QgQmF0Y2hlZE1ldGhvZCosIHNpemVfdCBjYWxsYmFja0NvdW50LCB2ODo6
SXNvbGF0ZSosIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193274</attachid>
            <date>2013-03-15 03:44:08 -0700</date>
            <delta_ts>2013-03-18 16:49:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111417-20130315114003.patch</filename>
            <type>text/plain</type>
            <size>328156</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1ODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdmNTI3Y2UxYzJmODRm
MWNhM2JkN2E5Mzg1ZmE3MzBhMDZmNzE2MC4uZDM1M2FlMjEyYzA3NzMwZTEwY2QzYTc1MmRkYzNj
NmYyMzViYWJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1MCBAQAorMjAxMy0wMy0xNSAgTWFy
amEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBBZGQgbWFj
aGluZXJ5IGZvciBnZW5lcmF0aW5nIHNwZWNpYWxpemVkIGJpbmRpbmdzIGZvciB0aGUgbWFpbiB3
b3JsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEx
NDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudGFybyBIYXJhLgorCisgICAgICAgIFRoZSBu
ZXcgc3BlY2lhbGl6ZWQgYmluZGluZ3Mgd2lsbCBiZSBmYXN0ZXIsIGJlY2F1c2UgdGhleSBkb24n
dCBuZWVkIHRvCisgICAgICAgIGRvIHRoZSAibWFpbiB3b3JsZCwgaXNvbGF0ZWQgd29ybGQgb3Ig
YSB3b3JrZXIiIGNoZWNrLCBidXQgY2FuIHJpZ2h0CisgICAgICAgIGF3YXkgYXNzdW1lIHRoYXQg
d2UncmUgaW4gdGhlIG1haW4gd29ybGQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBnZW5lcmF0ZXMg
bWFpbiB3b3JsZCBiaW5kaW5ncyBmb3IgZ2V0dGVycyBhbmQgc2V0dGVycy4KKworICAgICAgICBO
byBuZXcgdGVzdHMgKHVwZGF0ZWQgZXhpc3RpbmcgYmluZGluZ3MgdGVzdHMpLgorCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0
ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJDYWxsYmFjayk6Cisg
ICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVOb3Jt
YWxBdHRyU2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVy
KToKKyAgICAgICAgKEdlbmVyYXRlTmFtZWRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChHZW5lcmF0
ZUJhdGNoZWRBdHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0
dHJpYnV0ZSk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdl
bmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9u
Q2FsbFN0cmluZyk6CisgICAgICAgIChDcmVhdGVDdXN0b21TaWduYXR1cmUpOgorICAgICAgICAo
TmF0aXZlVG9KU1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhG
bG9hdDY0QXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhGbG9hdDY0QXJy
YXlUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEZsb2F0NjRBcnJheTo6R2V0VGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJyYXk6Okhhc0luc3RhbmNlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhjaXRpbmdBdHRyQXR0ckdldHRl
ckZvck1haW5Xb3JsZCk6CisgICAgICAgIChUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhjaXRp
bmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0VGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRUZW1wbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RBY3RpdmVET01PYmplY3Q6Okhhc0luc3RhbmNl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2Jq
ZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRlbXBs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRUZW1w
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6SGFzSW5z
dGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21O
YW1lZEdldHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxkKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWw6
OmF0dHIxQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChUZXN0RXZlbnRDb25zdHJ1
Y3RvclY4SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3JW
OEludGVybmFsOjphdHRyMUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWw6OmF0dHIyQXR0ckdldHRl
ckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3RvclY4
SW50ZXJuYWw6OmF0dHIyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1
Y3RvclRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6
OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6
Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFpbldv
cmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1w
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFdmVudFRhcmdldDo6R2V0VGVtcGxhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRUYXJnZXQ6Okhhc0luc3RhbmNlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0RXhjZXB0aW9uVjhJbnRlcm5hbDo6bmFtZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoVGVzdEV4Y2VwdGlvblY4SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dEV4Y2VwdGlvblY4SW50ZXJuYWw6Om5hbWVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RF
eGNlcHRpb25UZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246Okdl
dFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV4Y2VwdGlvbjo6SGFzSW5zdGFu
Y2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljUmVhZE9u
bHlBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChUZXN0SW50ZXJmYWNlVjhJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3Vw
cGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50
YWxTdGF0aWNBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJ
bnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0
YXRpY0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjFBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpz
dXBwbGVtZW50YWxTdHIxQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIyQXR0ckdl
dHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRl
cm5hbDo6c3VwcGxlbWVudGFsU3RyMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3Ry
MkF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFj
ZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1l
bnRhbFN0cjNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjNBdHRyU2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50
ZXJuYWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZh
Y2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0clNldHRlckZvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTm9k
ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhUZXN0SW50ZXJmYWNlOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6dG9W
OEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRv
VjhGYXN0Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25m
aWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGVtcGxhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0VGVtcGxhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6SGFzSW5zdGFuY2UpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6
R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0TmFtZWRDb25z
dHJ1Y3RvclRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5hbWVkQ29uc3RydWN0
b3I6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5hbWVkQ29uc3RydWN0
b3I6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0TmFtZWRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFp
bldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3ROb2RlVGVtcGxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0Tm9kZTo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0Tm9kZTo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWlu
V29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5TG9uZ0F0dHJB
dHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFRlc3RPYmpWOEludGVybmFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seUxvbmdBdHRyQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpyZWFkT25seVN0cmluZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVN0cmluZ0F0dHJBdHRyR2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OnJlYWRPbmx5VGVzdE9iakF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVRlc3RPYmpBdHRyQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpzdGF0aWNSZWFkT25seUxvbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljUmVhZE9ubHlMb25nQXR0
ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6c3RhdGljU3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0cmluZ0F0dHJBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OnN0YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNTdHJpbmdBdHRyQXR0clNldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjplbnVtQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OmVudW1BdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbnVtQXR0ckF0dHJTZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVu
dW1BdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpzaG9ydEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzaG9ydEF0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OnNob3J0QXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OnNob3J0QXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRTaG9ydEF0dHJB
dHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjp1bnNpZ25lZFNob3J0QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRTaG9ydEF0dHJBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
Ojp1bnNpZ25lZFNob3J0QXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0dHJBdHRyR2V0dGVyRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0
dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6bG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0xvbmdB
dHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6bG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJBdHRyU2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpsb25n
TG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlckZvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRM
b25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckZv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWdu
ZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjpzdHJpbmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9i
akF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjp0ZXN0T2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9iakF0dHJBdHRyU2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp0ZXN0
T2JqQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OlhNTE9iakF0dHJBdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OlhNTE9iakF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjcmVhdGVBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpj
cmVhdGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OmNyZWF0ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNyZWF0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVj
dGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxl
Y3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNr
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZs
ZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OnJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEludGVn
cmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVW5zaWdu
ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJTZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6cmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6cmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRCb29sZWFuQXR0ckF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyR2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRVUkxBdHRyQXR0clNldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjpyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21JbnRlZ3Jh
bEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJTZXR0ZXJG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxl
Y3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tQm9vbGVh
bkF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVj
dGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0
dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyU2V0dGVyRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0
b21VUkxBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5QXR0ckF0dHJHZXR0ZXJGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJyYXlBdHRy
QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjp0eXBlZEFycmF5QXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJyYXlBdHRyQXR0clNldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0
dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0
dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0
clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjpjdXN0b21BdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjdXN0b21BdHRyQXR0clNldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
Ojp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0
ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1
dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0clNl
dHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Ondp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
Ojp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNl
dHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlc0F0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0ckdldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0
dHJpYnV0ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRo
U3BhY2VzQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0
YWNrQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0
ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0
dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRyU2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OmNvbmRpdGlvbmFsQXR0cjFBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIxQXR0ckdldHRlckNhbGxiYWNr
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb25k
aXRpb25hbEF0dHIxQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9u
YWxBdHRyMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0
cjJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpjb25kaXRpb25hbEF0dHIyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIzQXR0
ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6Y29uZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyM0F0dHJTZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNv
bmRpdGlvbmFsQXR0cjNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTFBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjYWNoZWRB
dHRyaWJ1dGUxQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjpjYWNoZWRBdHRyaWJ1dGUyQXR0ckdldHRlckZvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y2FjaGVkQXR0cmli
dXRlMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6YW55QXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6YW55QXR0cmlidXRlQXR0ckdldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjphbnlBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjphbnlBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRB
dFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5h
YmxlZEF0UnVudGltZUF0dHIxQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0clNldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6ZmxvYXRBcnJheUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyR2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0
QXJyYXlBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjpmbG9hdEFycmF5QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0dHJHZXR0ZXJG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmRvdWJs
ZUFycmF5QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0clNldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjpjb250ZW50RG9jdW1lbnRBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb250ZW50RG9jdW1lbnRBdHRyR2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om11
dGFibGVQb2ludEF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50QXR0
clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6bXV0YWJsZVBvaW50QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjppbW11dGFibGVQb2ludEF0dHJHZXR0ZXJGb3JN
YWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJs
ZVBvaW50QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjppbW11dGFibGVQb2ludEF0dHJTZXR0ZXJGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50QXR0
clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjpzdHJhd2JlcnJ5QXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJyeUF0dHJHZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdi
ZXJyeUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OnN0cmF3YmVycnlBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZsb2F0QXR0ckdldHRlckZv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0
RmxvYXRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZsb2F0QXR0clNldHRlckZvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRyU2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OmRlc2NyaXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6ZGVzY3JpcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0ckdldHRl
ckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6aWRB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OmlkQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6aWRBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Omhhc2hBdHRyR2V0dGVyRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpoYXNoQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpyZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlcGxhY2VhYmxlQXR0cmlidXRlQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6
Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
T2JqLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6dmFs
dWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VWOEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjp2YWx1ZUF0dHJHZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6dmFsdWVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVy
bmFsOjp2YWx1ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6cmVhZG9u
bHlWYWx1ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnJlYWRvbmx5VmFsdWVBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0ckdldHRl
ckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkVmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0clNldHRlckZvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRl
cm5hbDo6Y2FjaGVkVmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6
OnBvcnRzQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6cG9ydHNBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRSZWFkb25seVZhbHVlQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVGVtcGxhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpH
ZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2U6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6CisgICAgICAgIChX
ZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlw
ZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29y
bGQpOgorICAgICAgICAoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOElu
dGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0
dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dFR5cGVkZWZzVjhJbnRlcm5hbDo6aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0ckdl
dHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVy
bmFsOjppbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6aW1t
dXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjppbW11dGFibGVTZXJpYWxpemVk
U2NyaXB0VmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRy
R2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50
ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNW
OEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0
ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRy
U2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50
ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRl
cm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3Ry
aW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
QXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNW
OEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
VHlwZWRlZnM6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdFR5cGVkZWZz
OjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dFR5cGVkZWZzLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKERPTURhdGFT
dG9yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NQ29uZmlndXJhdGlvbjo6YWRkVG9UZW1wbGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24u
aDoKKyAgICAgICAgKFY4RE9NQ29uZmlndXJhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JN
YWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RXZlbnRUYXJnZXRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhJREJBbnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhN
aWNyb0RhdGFJdGVtVmFsdWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JN
YWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTMtMDMtMTQgIEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgW1RleE1hcF0g
UGFpbnRpbmcgaW50byBhcmVhIG9mIGNvbXBvc2l0ZWQgdGlsZSBub3QgY2xlYXJlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRl
eCBjNWFiMzYwMDU0NzM1NWY3MzA5Nzg2NGViM2M4M2I5M2ZiMGNiMDdkLi5mMDM4NDA0Mjc4NmFm
ODBlYTBhYjRiODcxY2NlOTg0OTdjNDNiOWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNTI0LDEyICs1MjQsMTkgQEAg
RU5ECiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKIGNsYXNzICR7bmF0aXZl
VHlwZX07CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOCgke25hdGl2ZVR5cGV9Kiwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7Cit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZCgke25hdGl2ZVR5cGV9Kiwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiAKIHRlbXBsYXRl
PGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4RmFzdCgke25hdGl2ZVR5cGV9KiBpbXBsLCBjb25zdCBIb2xkZXJD
b250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKikKIHsKICAgICByZXR1cm4gdG9WOChpbXBs
LCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOwogfQorCit0ZW1w
bGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoJHtuYXRpdmVUeXBlfSogaW1w
bCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSopCit7CisgICAg
cmV0dXJuIHRvVjhGb3JNYWluV29ybGQoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWlu
ZXIuR2V0SXNvbGF0ZSgpKTsKK30KIEVORAogICAgIH0gZWxzZSB7CiAKQEAgLTU2Nyw2ICs1NzQs
MTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KCR7bmF0aXZlVHlwZX0qIGlt
cGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3IKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjhGb3JNYWluV29ybGQoJHtuYXRpdmVUeXBlfSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VS
VCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWlt
cGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFp
bldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biAkcmV0dXJuaW5nV3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNz
IFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoJHtuYXRp
dmVUeXBlfSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJs
ZSogd3JhcHBhYmxlKQogewpAQCAtNTc3LDYgKzU5NSwyNSBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjhGYXN0KCR7bmF0aXZlVHlwZX0qIGltcGwsIGNvbnN0IEhvbGRlckNvbnRh
aW5lcgogICAgICAgICByZXR1cm4gJHJldHVybmluZ1dyYXBwZXI7CiAgICAgcmV0dXJuIHdyYXAo
aW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKIH0KKwor
dGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKCR7bmF0aXZlVHlwZX0q
IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBw
YWJsZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpID09
IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4
TnVsbChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7Cisg
ICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuICRyZXR1cm5pbmdXcmFw
cGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVy
LkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xh
c3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1h
aW5Xb3JsZChQYXNzUmVmUHRyPCAke25hdGl2ZVR5cGV9ID4gaW1wbCwgY29uc3QgSG9sZGVyQ29u
dGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0
b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9
CisKIEVORAogICAgIH0KIApAQCAtODgwLDYgKzkxNyw3IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0
dHJHZXR0ZXJDYWxsYmFjawogewogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKICAgICBteSAk
aW50ZXJmYWNlID0gc2hpZnQ7CisgICAgbXkgJGZvck1haW5Xb3JsZFN1ZmZpeCA9IHNoaWZ0Owog
CiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwogICAgIG15ICR2OElu
dGVyZmFjZU5hbWUgPSAiVjgkaW50ZXJmYWNlTmFtZSI7CkBAIC04ODksMTMgKzkyNywxMyBAQCBz
dWIgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyQ2FsbGJhY2sKICAgICBteSAkY29uZGl0aW9uYWxT
dHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmli
dXRlLT5zaWduYXR1cmUpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiI2lmICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKIAotICAgIHB1
c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAic3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAk
e2F0dHJOYW1lfUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbylcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50
SW50ZXJuYWxzLCAic3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2F0dHJOYW1lfUF0dHJH
ZXR0ZXJDYWxsYmFjayR7Zm9yTWFpbldvcmxkU3VmZml4fSh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbylcbiIpOwogICAgIHB1c2goQGltcGxD
b250ZW50SW50ZXJuYWxzLCAie1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMs
IEdlbmVyYXRlRmVhdHVyZU9ic2VydmF0aW9uKCRhdHRyRXh0LT57IlY4TWVhc3VyZUFzIn0pKTsK
ICAgICBpZiAoSGFzQ3VzdG9tR2V0dGVyKCRhdHRyRXh0KSkgewogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudEludGVybmFscywgIiAgICByZXR1cm4gJHt2OEludGVyZmFjZU5hbWV9Ojoke2F0dHJO
YW1lfUF0dHJHZXR0ZXJDdXN0b20obmFtZSwgaW5mbyk7XG4iKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gJHtpbnRlcmZhY2VO
YW1lfVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlcihuYW1lLCBpbmZvKTtcbiIpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gJHtpbnRlcmZh
Y2VOYW1lfVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlciR7Zm9yTWFpbldvcmxkU3Vm
Zml4fShuYW1lLCBpbmZvKTtcbiIpOwogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudEludGVy
bmFscywgIn1cblxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIjZW5kaWYg
Ly8gJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAt
OTA1LDYgKzk0Myw3IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIKIHsKICAgICBteSAk
YXR0cmlidXRlID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworICAgIG15ICRm
b3JNYWluV29ybGRTdWZmaXggPSBzaGlmdDsKIAogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGlu
dGVyZmFjZS0+bmFtZTsKICAgICBteSAkdjhJbnRlcmZhY2VOYW1lID0gIlY4JGludGVyZmFjZU5h
bWUiOwpAQCAtOTI0LDcgKzk2Myw3IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIKICAg
ICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRp
b25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwogICAgIHB1c2goQGltcGxDb250ZW50
SW50ZXJuYWxzLCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgPDxFTkQpOwotc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2F0dHJOYW1lfUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+ICR7YXR0ck5hbWV9QXR0ckdldHRlciR7Zm9yTWFpbldvcmxkU3Vm
Zml4fSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKIEVORAogICAgIGlmICgkc3ZnTmF0aXZlVHlwZSkgewpAQCAtMTA5MCw3ICsxMTI5
LDcgQEAgRU5ECiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOCRhdHRyVHlwZS5oIik7CiAg
ICAgICAgIG15ICRzdmdOYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5cGVOZWVk
aW5nVGVhck9mZigkYXR0clR5cGUpOwogICAgICAgICAjIENvbnZlcnQgZnJvbSBhYnN0cmFjdCBT
VkdQcm9wZXJ0eSB0byByZWFsIHR5cGUsIHNvIHRoZSByaWdodCB0b0pTKCkgbWV0aG9kIGNhbiBi
ZSBpbnZva2VkLgotICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1
cm4gdG9WOEZhc3Qoc3RhdGljX2Nhc3Q8JHN2Z05hdGl2ZVR5cGUqPigkcmVzdWx0KSwgaW5mbywg
aW1wKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1
cm4gdG9WOEZhc3QkZm9yTWFpbldvcmxkU3VmZml4KHN0YXRpY19jYXN0PCRzdmdOYXRpdmVUeXBl
Kj4oJHJlc3VsdCksIGluZm8sIGltcCk7XG4iKTsKICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRv
ci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGF0dHJUeXBlKSBhbmQgbm90ICRpbnRlcmZhY2VO
YW1lID1+IC9MaXN0JC8pIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4JGF0dHJUeXBl
LmgiKTsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNWR1Byb3BlcnR5VGVhck9mZi5oIik7
CkBAIC0xMTI4LDcgKzExNjcsNyBAQCBFTkQKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAkd3JhcHBlZFZhbHVlID0gIldURjo6Z2V0UHRyKCR7dGVhck9mZlR5cGV9OjpjcmVhdGUo
JHJlc3VsdCkpIjsKICAgICAgICAgfQotICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFs
cywgIiAgICByZXR1cm4gdG9WOEZhc3QoJHdyYXBwZWRWYWx1ZSwgaW5mbywgaW1wKTtcbiIpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gdG9WOEZhc3Qk
Zm9yTWFpbldvcmxkU3VmZml4KCR3cmFwcGVkVmFsdWUsIGluZm8sIGltcCk7XG4iKTsKICAgICB9
IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIk1lc3NhZ2VQb3J0QXJyYXki
KSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJNZXNzYWdlUG9ydC5oIik7CiAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJWOE1lc3NhZ2VQb3J0LmgiKTsKQEAgLTExNDAsNyArMTE3OSw3
IEBAIEVORAogICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHNDb3B5KCpwb3J0cyk7CiAgICAgdjg6
OkxvY2FsPHY4OjpBcnJheT4gcG9ydEFycmF5ID0gdjg6OkFycmF5OjpOZXcocG9ydHNDb3B5LnNp
emUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb3J0c0NvcHkuc2l6ZSgpOyArK2kp
Ci0gICAgICAgIHBvcnRBcnJheS0+U2V0KHY4SW50ZWdlcihpLCBpbmZvLkdldElzb2xhdGUoKSks
IHRvVjhGYXN0KHBvcnRzQ29weVtpXS5nZXQoKSwgaW5mbywgaW1wKSk7CisgICAgICAgIHBvcnRB
cnJheS0+U2V0KHY4SW50ZWdlcihpLCBpbmZvLkdldElzb2xhdGUoKSksIHRvVjhGYXN0JGZvck1h
aW5Xb3JsZFN1ZmZpeChwb3J0c0NvcHlbaV0uZ2V0KCksIGluZm8sIGltcCkpOwogICAgIHJldHVy
biBwb3J0QXJyYXk7CiBFTkQKICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5
cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIgJiYgJGF0dHJFeHQtPnsiQ2FjaGVkQXR0cmli
dXRlIn0pIHsKQEAgLTExNTIsNyArMTE5MSw3IEBAIEVORAogICAgIHJldHVybiB2YWx1ZTsKIEVO
RAogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAg
IHJldHVybiAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJHJlc3Vs
dCwgImluZm8uSG9sZGVyKCkiLCAiaW5mby5HZXRJc29sYXRlKCkiLCAiaW5mbyIsICJpbXAiLCAi
UmV0dXJuVW5zYWZlSGFuZGxlIikuIjtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudElu
dGVybmFscywgIiAgICByZXR1cm4gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWdu
YXR1cmUsICRyZXN1bHQsICJpbmZvLkhvbGRlcigpIiwgImluZm8uR2V0SXNvbGF0ZSgpIiwgImlu
Zm8iLCAiaW1wIiwgIlJldHVyblVuc2FmZUhhbmRsZSIsICRmb3JNYWluV29ybGRTdWZmaXgpLiI7
XG4iKTsKICAgICB9CiAKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIn1cblxuIik7
ICAjIGVuZCBvZiBnZXR0ZXIKQEAgLTEyMDAsNiArMTIzOSw3IEBAIHN1YiBHZW5lcmF0ZU5vcm1h
bEF0dHJTZXR0ZXJDYWxsYmFjawogewogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKICAgICBt
eSAkaW50ZXJmYWNlID0gc2hpZnQ7CisgICAgbXkgJGZvck1haW5Xb3JsZFN1ZmZpeCA9IHNoaWZ0
OwogCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwogICAgIG15ICR2
OEludGVyZmFjZU5hbWUgPSAiVjgkaW50ZXJmYWNlTmFtZSI7CkBAIC0xMjA5LDEzICsxMjQ5LDEz
IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxsYmFjawogICAgIG15ICRjb25kaXRp
b25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIj
aWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogCi0g
ICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICJzdGF0aWMgdm9pZCAke2F0dHJOYW1lfUF0
dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pXG4iKTsKKyAgICBw
dXNoKEBpbXBsQ29udGVudEludGVybmFscywgInN0YXRpYyB2b2lkICR7YXR0ck5hbWV9QXR0clNl
dHRlckNhbGxiYWNrJHtmb3JNYWluV29ybGRTdWZmaXh9KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbylcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAie1xuIik7CiAgICAg
cHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsIEdlbmVyYXRlRmVhdHVyZU9ic2VydmF0aW9uKCRh
dHRyRXh0LT57IlY4TWVhc3VyZUFzIn0pKTsKICAgICBpZiAoSGFzQ3VzdG9tU2V0dGVyKCRhdHRy
RXh0KSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAke3Y4SW50
ZXJmYWNlTmFtZX06OiR7YXR0ck5hbWV9QXR0clNldHRlckN1c3RvbShuYW1lLCB2YWx1ZSwgaW5m
byk7XG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFs
cywgIiAgICAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVy
KG5hbWUsIHZhbHVlLCBpbmZvKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVy
bmFscywgIiAgICAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0
dGVyJHtmb3JNYWluV29ybGRTdWZmaXh9KG5hbWUsIHZhbHVlLCBpbmZvKTtcbiIpOwogICAgIH0K
ICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIn1cblxuIik7CiAgICAgcHVzaChAaW1w
bENvbnRlbnRJbnRlcm5hbHMsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMTIyNSw2ICsxMjY1LDcgQEAgc3ViIEdlbmVyYXRl
Tm9ybWFsQXR0clNldHRlcgogewogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKICAgICBteSAk
aW50ZXJmYWNlID0gc2hpZnQ7CisgICAgbXkgJGZvck1haW5Xb3JsZFN1ZmZpeCA9IHNoaWZ0Owog
CiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwogICAgIG15ICR2OElu
dGVyZmFjZU5hbWUgPSAiVjgkaW50ZXJmYWNlTmFtZSI7CkBAIC0xMjM4LDcgKzEyNzksNyBAQCBz
dWIgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyCiAKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcg
PSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5z
aWduYXR1cmUpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiI2lmICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICBwdXNoKEBpbXBs
Q29udGVudEludGVybmFscywgInN0YXRpYyB2b2lkICR7YXR0ck5hbWV9QXR0clNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudEludGVy
bmFscywgInN0YXRpYyB2b2lkICR7YXR0ck5hbWV9QXR0clNldHRlciR7Zm9yTWFpbldvcmxkU3Vm
Zml4fSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pXG4iKTsKICAgICBwdXNoKEBpbXBsQ29u
dGVudEludGVybmFscywgIntcbiIpOwogCiAgICAgIyBJZiB0aGUgIlN0cmljdFR5cGVDaGVja2lu
ZyIgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHByZXNlbnQsIGFuZCB0aGUgYXR0cmlidXRlJ3MgdHlw
ZSBpcyBhbgpAQCAtMjI0OCw3ICsyMjg5LDcgQEAgRU5ECiAKICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgPDxFTkQpOwogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OElu
dGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsK
ICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNhY2hlZFRl
bXBsYXRlOwogICAgIGlmICghY2FjaGVkVGVtcGxhdGUuSXNFbXB0eSgpKQpAQCAtMjI2MCw3ICsy
MzAxLDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZh
Y2VOYW1lfUNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSgKICAgICB2ODo6TG9jYWw8djg6Ok9iamVj
dFRlbXBsYXRlPiBpbnN0YW5jZSA9IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgpOwogICAgIGlu
c3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoJHt2OEludGVyZmFjZU5hbWV9OjppbnRlcm5h
bEZpZWxkQ291bnQpOwogICAgIHJlc3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ld1N5
bWJvbCgiJHtpbnRlcmZhY2VOYW1lfSIpKTsKLSAgICByZXN1bHQtPkluaGVyaXQoJHt2OEludGVy
ZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpKTsKKyAgICByZXN1bHQt
PkluaGVyaXQoJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZShpc29sYXRlLCBjdXJyZW50
V29ybGRUeXBlKSk7CiAKICAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHJlc3VsdCk7CiAgICAgcmV0dXJuIGNhY2hl
ZFRlbXBsYXRlOwpAQCAtMjI4NiwxMiArMjMyNywxMyBAQCBzdWIgR2VuZXJhdGVCYXRjaGVkQXR0
cmlidXRlRGF0YQogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKICAgICBteSAkYXR0cmli
dXRlcyA9IHNoaWZ0OworICAgIG15ICRmb3JNYWluV29ybGRTdWZmaXggPSBzaGlmdDsKICAgICBt
eSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7CiAKICAgICBmb3JlYWNoIG15ICRh
dHRyaWJ1dGUgKEAkYXR0cmlidXRlcykgewogICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcg
PSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5z
aWduYXR1cmUpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFs
U3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICBHZW5lcmF0ZVNpbmds
ZUJhdGNoZWRBdHRyaWJ1dGUoJGludGVyZmFjZU5hbWUsICRhdHRyaWJ1dGUsICIsIiwgIiIpOwor
ICAgICAgICBHZW5lcmF0ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUoJGludGVyZmFjZU5hbWUsICRh
dHRyaWJ1dGUsICIsIiwgIiIsICRmb3JNYWluV29ybGRTdWZmaXgpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOwogICAgIH0KIH0KQEAgLTIzMDIsNiArMjM0NCw3IEBAIHN1YiBHZW5lcmF0
ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CiAgICAg
bXkgJGRlbGltaXRlciA9IHNoaWZ0OwogICAgIG15ICRpbmRlbnQgPSBzaGlmdDsKKyAgICBteSAk
Zm9yTWFpbldvcmxkU3VmZml4ID0gc2hpZnQ7CiAgICAgbXkgJGF0dHJOYW1lID0gJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5uYW1lOwogICAgIG15ICRhdHRyRXh0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXM7CiAKQEAgLTIzNTcsOCArMjQwMCw4IEBAIHN1YiBHZW5l
cmF0ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUKICAgICAgICAgJHNldHRlciA9ICIke2ludGVyZmFj
ZU5hbWV9VjhJbnRlcm5hbDo6JHtpbnRlcmZhY2VOYW1lfVJlcGxhY2VhYmxlQXR0clNldHRlckNh
bGxiYWNrIjsKICAgICB9IGVsc2UgewogICAgICAgICAjIERlZmF1bHQgR2V0dGVyIGFuZCBTZXR0
ZXIKLSAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRy
TmFtZX1BdHRyR2V0dGVyQ2FsbGJhY2siOwotICAgICAgICAkc2V0dGVyID0gIiR7aW50ZXJmYWNl
TmFtZX1WOEludGVybmFsOjoke2F0dHJOYW1lfUF0dHJTZXR0ZXJDYWxsYmFjayI7CisgICAgICAg
ICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdl
dHRlckNhbGxiYWNrJHtmb3JNYWluV29ybGRTdWZmaXh9IjsKKyAgICAgICAgJHNldHRlciA9ICIk
e2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyQ2FsbGJhY2sk
e2Zvck1haW5Xb3JsZFN1ZmZpeH0iOwogCiAgICAgICAgIGlmICghSGFzQ3VzdG9tU2V0dGVyKCRh
dHRyRXh0KSAmJiAkYXR0ckV4dC0+eyJSZXBsYWNlYWJsZSJ9KSB7CiAgICAgICAgICAgICAkc2V0
dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke2ludGVyZmFjZU5hbWV9UmVwbGFj
ZWFibGVBdHRyU2V0dGVyQ2FsbGJhY2siOwpAQCAtMjY4NCw3ICsyNzI3LDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgbXkgJHBhcmVudCA9ICRfOwogICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiVjgke3BhcmVudH0uaCIpOwogICAgICAgICAkcGFyZW50Q2xhc3MgPSAi
VjgiIC4gJHBhcmVudDsKLSAgICAgICAgJHBhcmVudENsYXNzVGVtcGxhdGUgPSAkcGFyZW50Q2xh
c3MgLiAiOjpHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpIjsKKyAgICAgICAgJHBhcmVu
dENsYXNzVGVtcGxhdGUgPSAkcGFyZW50Q2xhc3MgLiAiOjpHZXRUZW1wbGF0ZShpc29sYXRlLCBj
dXJyZW50V29ybGRUeXBlKSI7CiAgICAgICAgIGxhc3Q7CiAgICAgfQogCkBAIC0yNzYzLDE0ICsy
ODA2LDIzIEBAIEVORAogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIik7CiAgICAgICAgIH0KIAotICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJH
ZXR0ZXIoJGF0dHJpYnV0ZSwgJGludGVyZmFjZSk7Ci0gICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0
ckdldHRlckNhbGxiYWNrKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UpOworICAgICAgICBHZW5lcmF0
ZU5vcm1hbEF0dHJHZXR0ZXIoJGF0dHJpYnV0ZSwgJGludGVyZmFjZSwgIiIpOworICAgICAgICBH
ZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAi
Iik7CisKKyAgICAgICAgaWYgKCEkYXR0ckV4dC0+eyJWOEVuYWJsZWRQZXJDb250ZXh0In0pIHsK
KyAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcigkYXR0cmlidXRlLCAkaW50ZXJm
YWNlLCAiRm9yTWFpbldvcmxkIik7CisgICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0
ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiRm9yTWFpbldvcmxkIik7CisgICAg
ICAgIH0KIAogICAgICAgICBpZiAoIUhhc0N1c3RvbVNldHRlcigkYXR0ckV4dCkgJiYgJGF0dHJF
eHQtPnsiUmVwbGFjZWFibGUifSkgewogICAgICAgICAgICAgJGhhc1JlcGxhY2VhYmxlID0gMTsK
ICAgICAgICAgfSBlbHNpZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAg
IEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcigkYXR0cmlidXRlLCAkaW50ZXJmYWNlKTsKLSAgICAg
ICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlckNhbGxiYWNrKCRhdHRyaWJ1dGUsICRpbnRl
cmZhY2UpOworICAgICAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyKCRhdHRyaWJ1dGUs
ICRpbnRlcmZhY2UsICIiKTsKKyAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlckNh
bGxiYWNrKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICIiKTsKKyAgICAgICAgICAgIGlmICghJGF0
dHJFeHQtPnsiVjhFbmFibGVkUGVyQ29udGV4dCJ9KSB7CisgICAgICAgICAgICAgICAgR2VuZXJh
dGVOb3JtYWxBdHRyU2V0dGVyKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICJGb3JNYWluV29ybGQi
KTsKKyAgICAgICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxsYmFjaygkYXR0
cmlidXRlLCAkaW50ZXJmYWNlLCAiRm9yTWFpbldvcmxkIik7CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTI4ODEsNyArMjkzMywxMSBAQCBFTkQKICAgICAjIFB1dCB0aGUg
YXR0cmlidXRlcyB0aGF0IGRpc2FsbG93IHNoYWRvd2luZyBvbiB0aGUgc2hhZG93IG9iamVjdC4K
ICAgICBpZiAoQGRpc2FsbG93c1NoYWRvd2luZykgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgInN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgc2hh
ZG93QXR0cnNbXSA9IHtcbiIpOwotICAgICAgICBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1dGVEYXRh
KCRpbnRlcmZhY2UsIFxAZGlzYWxsb3dzU2hhZG93aW5nKTsKKyAgICAgICAgR2VuZXJhdGVCYXRj
aGVkQXR0cmlidXRlRGF0YSgkaW50ZXJmYWNlLCBcQGRpc2FsbG93c1NoYWRvd2luZywgIiIpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG5cbiIpOworCisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAic3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJp
YnV0ZSBzaGFkb3dBdHRyc0Zvck1haW5Xb3JsZFtdID0ge1xuIik7CisgICAgICAgIEdlbmVyYXRl
QmF0Y2hlZEF0dHJpYnV0ZURhdGEoJGludGVyZmFjZSwgXEBkaXNhbGxvd3NTaGFkb3dpbmcsICJG
b3JNYWluV29ybGQiKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuXG4iKTsKICAg
ICB9CiAKQEAgLTI4ODksNyArMjk0NSwxMiBAQCBFTkQKICAgICBpZiAoQCRhdHRyaWJ1dGVzKSB7
CiAgICAgICAgICRoYXNfYXR0cmlidXRlcyA9IDE7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAic3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSAke3Y4
SW50ZXJmYWNlTmFtZX1BdHRyc1tdID0ge1xuIik7Ci0gICAgICAgIEdlbmVyYXRlQmF0Y2hlZEF0
dHJpYnV0ZURhdGEoJGludGVyZmFjZSwgJGF0dHJpYnV0ZXMpOworICAgICAgICBHZW5lcmF0ZUJh
dGNoZWRBdHRyaWJ1dGVEYXRhKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGVzLCAiIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAifTtcblxuIik7CisKKyAgICAgICAgIyBTZXR1cCBhdHRyaWJ1
dGVzIHdpdGggc3BlY2lhbGl6ZWQgZ2V0dGVycy4KKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlICR7djhJ
bnRlcmZhY2VOYW1lfUF0dHJzRm9yTWFpbldvcmxkW10gPSB7XG4iKTsKKyAgICAgICAgR2VuZXJh
dGVCYXRjaGVkQXR0cmlidXRlRGF0YSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlcywgIkZvck1haW5X
b3JsZCIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG5cbiIpOwogICAgIH0KIApA
QCAtMjk4MSwxMCArMzA0MiwxMyBAQCBFTkQKICAgICAjIGNvbmZpZ3VyYXRpb24gbWV0aG9kLgog
ICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgPDxFTkQpOwotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1w
bGF0ZT4gQ29uZmlndXJlU2hhZG93T2JqZWN0VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdFRlbXBsYXRlPiB0ZW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBDb25maWd1cmVTaGFkb3dPYmplY3RUZW1wbGF0
ZSh2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IHRlbXBsLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4RE9N
Q29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHRlbXBsLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3RUZW1wbGF0ZT4oKSwgc2hhZG93QXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoc2hh
ZG93QXR0cnMpLCBpc29sYXRlKTsKIAorICAgIGlmIChjdXJyZW50V29ybGRUeXBlID09IE1haW5X
b3JsZCkKKyAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUF0dHJpYnV0
ZXModGVtcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPigpLCBzaGFkb3dBdHRyc0Zv
ck1haW5Xb3JsZCwgV1RGX0FSUkFZX0xFTkdUSChzaGFkb3dBdHRyc0Zvck1haW5Xb3JsZCksIGlz
b2xhdGUpOworCiAgICAgLy8gSW5zdGFsbCBhIHNlY3VyaXR5IGhhbmRsZXIgd2l0aCBWOC4KICAg
ICB0ZW1wbC0+U2V0QWNjZXNzQ2hlY2tDYWxsYmFja3MoVjhET01XaW5kb3c6Om5hbWVkU2VjdXJp
dHlDaGVja0N1c3RvbSwgVjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNoZWNrQ3VzdG9tLCB2
ODo6RXh0ZXJuYWw6Ok5ldygmVjhET01XaW5kb3c6OmluZm8pKTsKICAgICB0ZW1wbC0+U2V0SW50
ZXJuYWxGaWVsZENvdW50KFY4RE9NV2luZG93OjppbnRlcm5hbEZpZWxkQ291bnQpOwpAQCAtMjk5
OSw3ICszMDYzLDcgQEAgRU5ECiAKICAgICAjIEdlbmVyYXRlIHRoZSB0ZW1wbGF0ZSBjb25maWd1
cmF0aW9uIG1ldGhvZAogICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwotc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmUke3Y4SW50ZXJmYWNl
TmFtZX1UZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywg
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmUke3Y4SW50ZXJm
YWNlTmFtZX1UZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVz
Yywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlw
ZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCkBAIC0zMDY3LDkgKzMxMzEs
MTcgQEAgRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25h
bFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKSB7XG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246
OkJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPVxcXG4iKTsKLSAgICAgICAgR2VuZXJhdGVTaW5n
bGVCYXRjaGVkQXR0cmlidXRlKCRpbnRlcmZhY2VOYW1lLCAkcnVudGltZV9hdHRyLCAiOyIsICIg
ICAgIik7CisgICAgICAgIEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZSgkaW50ZXJmYWNl
TmFtZSwgJHJ1bnRpbWVfYXR0ciwgIjsiLCAiICAgICIsICIiKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsIDw8RU5EKTsKICAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVB
dHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSwgaXNvbGF0ZSk7CitFTkQKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmIChjdXJyZW50V29ybGRUeXBlID09IE1h
aW5Xb3JsZCkge1xuIik7CisKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJE
YXRhRm9yTWFpbldvcmxkID1cXFxuIik7CisgICAgICAgIEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0
dHJpYnV0ZSgkaW50ZXJmYWNlTmFtZSwgJHJ1bnRpbWVfYXR0ciwgIjsiLCAiICAgICIsICJGb3JN
YWluV29ybGQiKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKyAgICAgICAg
ICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90
bywgYXR0ckRhdGFGb3JNYWluV29ybGQsIGlzb2xhdGUpOworICAgICAgICB9CiAgICAgfQogRU5E
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0
cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTMwOTYsNiArMzE2OCwzNCBAQCBF
TkQKICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uQ3VzdG9tQ2FsbCgkaW50ZXJmYWNlKTsKICAg
ICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgkaW50ZXJmYWNl
KTsKIAorICAgIG15ICRhZGRUb1RlbXBsYXRlID0gIlY4RE9NQ29uZmlndXJhdGlvbjo6YWRkVG9U
ZW1wbGF0ZShkZXNjLCAiOworICAgIGlmICgkaGFzX2F0dHJpYnV0ZXMpIHsKKyAgICAgICAgJGFk
ZFRvVGVtcGxhdGUgPSAkYWRkVG9UZW1wbGF0ZSAuICIke3Y4SW50ZXJmYWNlTmFtZX1BdHRyc0Zv
ck1haW5Xb3JsZCwgV1RGX0FSUkFZX0xFTkdUSCgke3Y4SW50ZXJmYWNlTmFtZX1BdHRyc0Zvck1h
aW5Xb3JsZCksICI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgJGFkZFRvVGVtcGxhdGUgPSAkYWRk
VG9UZW1wbGF0ZSAuICIwLCAwLCAiCisgICAgfQorICAgICMgTm8gc3BlY2lhbGl6ZWQgY2FsbGJh
Y2tzIHlldC4KKyAgICAkYWRkVG9UZW1wbGF0ZSA9ICRhZGRUb1RlbXBsYXRlIC4gIjAsIDAsICI7
CisgICAgJGFkZFRvVGVtcGxhdGUgPSAkYWRkVG9UZW1wbGF0ZSAuICJpc29sYXRlLCBkZWZhdWx0
U2lnbmF0dXJlKTsiOworCisgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKworICAgIGlm
IChjdXJyZW50V29ybGRUeXBlID09IE1haW5Xb3JsZCkKK0VORAorCisgICAgaWYgKCRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEVuYWJsZWRBdFJ1bnRpbWUifSkgeworICAgICAg
ICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkaW50
ZXJmYWNlKTsKKworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgICAgICBp
ZiAoJHtlbmFibGVfZnVuY3Rpb259KCkpCisgICAgICAgICAgICAke2FkZFRvVGVtcGxhdGV9CitF
TkQKKyAgIH0gZWxzZSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisgICAg
ICAgICR7YWRkVG9UZW1wbGF0ZX0KK0VORAorICAgfQorCiAgICAgIyBEZWZpbmUgb3VyIGZ1bmN0
aW9ucyB3aXRoIFNldCgpIG9yIFNldEFjY2Vzc29yKCkKICAgICBteSAkdG90YWxfZnVuY3Rpb25z
ID0gMDsKICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQG5vcm1hbEZ1bmN0aW9ucykgewpAQCAt
MzE1MiwyMyArMzI1MiwyMyBAQCBFTkQKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdv
cmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsK
LSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisg
ICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEt
PnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1
bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAg
IHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAg
ICAgIENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRl
KCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBs
YXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZSR7
djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50
V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxh
dGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRl
bXBsOwogfQogCi1ib29sICR7djhJbnRlcmZhY2VOYW1lfTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCitib29sICR7djhJbnRlcmZhY2VOYW1lfTo6SGFzSW5zdGFuY2Uodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAg
cmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZv
LCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIEVORApAQCAtMzE4OSw3ICszMjg5LDcg
QEAgRU5ECiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2lmICR7Y29uZGl0aW9u
YWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoJHtlbmFibGVGdW5jdGlvbn0oaW1wbC0+ZG9jdW1lbnQoKSkp
IHtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHN0YXRpYyBj
b25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPVxcXG4i
KTsKLSAgICAgICAgICAgIEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZSgkaW50ZXJmYWNl
TmFtZSwgJHJ1bnRpbWVBdHRyLCAiOyIsICIgICAgIik7CisgICAgICAgICAgICBHZW5lcmF0ZVNp
bmdsZUJhdGNoZWRBdHRyaWJ1dGUoJGludGVyZmFjZU5hbWUsICRydW50aW1lQXR0ciwgIjsiLCAi
ICAgICIsICIiKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAgICAg
ICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90
bywgYXR0ckRhdGEsIGlzb2xhdGUpOwogRU5ECkBAIC0zMjY2LDE0ICszMzY2LDE0IEBAIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gVjhET01XaW5kb3c6OkdldFNoYWRvd09iamVj
dFRlbXBsYXRlKHY4OjpJc29sCiAgICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0VGVtcGxhdGU+IFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGVGb3JNYWluV29ybGQ7CiAg
ICAgICAgIGlmIChWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlRm9yTWFpbldvcmxkLklzRW1w
dHkoKSkgewogICAgICAgICAgICAgVjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZUZvck1haW5X
b3JsZCA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2
ODo6T2JqZWN0VGVtcGxhdGU6Ok5ldygpKTsKLSAgICAgICAgICAgIENvbmZpZ3VyZVNoYWRvd09i
amVjdFRlbXBsYXRlKFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGVGb3JNYWluV29ybGQsIGlz
b2xhdGUpOworICAgICAgICAgICAgQ29uZmlndXJlU2hhZG93T2JqZWN0VGVtcGxhdGUoVjhET01X
aW5kb3dTaGFkb3dPYmplY3RDYWNoZUZvck1haW5Xb3JsZCwgaXNvbGF0ZSwgY3VycmVudFdvcmxk
VHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFY4RE9NV2luZG93U2hhZG93T2JqZWN0
Q2FjaGVGb3JNYWluV29ybGQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gVjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZUZv
ck5vbk1haW5Xb3JsZDsKICAgICAgICAgaWYgKFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGVG
b3JOb25NYWluV29ybGQuSXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBWOERPTVdpbmRvd1NoYWRv
d09iamVjdENhY2hlRm9yTm9uTWFpbldvcmxkID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRl
bXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpPYmplY3RUZW1wbGF0ZTo6TmV3KCkpOwotICAgICAg
ICAgICAgQ29uZmlndXJlU2hhZG93T2JqZWN0VGVtcGxhdGUoVjhET01XaW5kb3dTaGFkb3dPYmpl
Y3RDYWNoZUZvck5vbk1haW5Xb3JsZCwgaXNvbGF0ZSk7CisgICAgICAgICAgICBDb25maWd1cmVT
aGFkb3dPYmplY3RUZW1wbGF0ZShWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlRm9yTm9uTWFp
bldvcmxkLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gVjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZUZvck5vbk1haW5Xb3JsZDsKICAgICB9
CkBAIC0zNDgzLDcgKzM1ODMsNyBAQCBFTkQKICAgICAgICAgICAgIEBhcmdzID0gKCk7CiAgICAg
ICAgICAgICBmb3JlYWNoIG15ICRwYXJhbSAoQHBhcmFtcykgewogICAgICAgICAgICAgICAgIG15
ICRwYXJhbU5hbWUgPSAkcGFyYW0tPm5hbWU7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7cGFyYW1OYW1lfUhhbmRsZSA9ICIg
LiBOYXRpdmVUb0pTVmFsdWUoJHBhcmFtLCAkcGFyYW1OYW1lLCAidjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PigpIiwgInY4Q29udGV4dC0+R2V0SXNvbGF0ZSgpIikgLiAiO1xuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7cGFy
YW1OYW1lfUhhbmRsZSA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJHBhcmFtLCAkcGFyYW1OYW1lLCAi
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpIiwgInY4Q29udGV4dC0+R2V0SXNvbGF0ZSgpIiwgIiIp
IC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgk
e3BhcmFtTmFtZX1IYW5kbGUuSXNFbXB0eSgpKSB7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgaWYgKCFpc1NjcmlwdENvbnRyb2xsZXJUZXJtaW5hdGlu
ZygpKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAg
ICBDUkFTSCgpO1xuIik7CkBAIC0zODYxLDkgKzM5NjEsOSBAQCBzdWIgR2VuZXJhdGVGdW5jdGlv
bkNhbGxTdHJpbmcKICAgICBteSAkbmF0aXZlVmFsdWU7CiAgICAgIyBGSVhNRTogVXBkYXRlIGZv
ciBhbGwgU2NyaXB0V3JhcHBhYmxlcy4KICAgICBpZiAoSXNET01Ob2RlVHlwZSgkaW50ZXJmYWNl
TmFtZSkpIHsKLSAgICAgICAgJG5hdGl2ZVZhbHVlID0gTmF0aXZlVG9KU1ZhbHVlKCRmdW5jdGlv
bi0+c2lnbmF0dXJlLCAkcmV0dXJuLCAiYXJncy5Ib2xkZXIoKSIsICJhcmdzLkdldElzb2xhdGUo
KSIsICJhcmdzIiwgImltcCIsICJSZXR1cm5VbnNhZmVIYW5kbGUiKTsKKyAgICAgICAgJG5hdGl2
ZVZhbHVlID0gTmF0aXZlVG9KU1ZhbHVlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLCAkcmV0dXJuLCAi
YXJncy5Ib2xkZXIoKSIsICJhcmdzLkdldElzb2xhdGUoKSIsICJhcmdzIiwgImltcCIsICJSZXR1
cm5VbnNhZmVIYW5kbGUiLCAiIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgJG5hdGl2ZVZhbHVl
ID0gTmF0aXZlVG9KU1ZhbHVlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLCAkcmV0dXJuLCAiYXJncy5I
b2xkZXIoKSIsICJhcmdzLkdldElzb2xhdGUoKSIsIDAsIDAsICJSZXR1cm5VbnNhZmVIYW5kbGUi
KTsKKyAgICAgICAgJG5hdGl2ZVZhbHVlID0gTmF0aXZlVG9KU1ZhbHVlKCRmdW5jdGlvbi0+c2ln
bmF0dXJlLCAkcmV0dXJuLCAiYXJncy5Ib2xkZXIoKSIsICJhcmdzLkdldElzb2xhdGUoKSIsIDAs
IDAsICJSZXR1cm5VbnNhZmVIYW5kbGUiLCAiIik7CiAgICAgfQogCiAgICAgJHJlc3VsdCAuPSAk
aW5kZW50IC4gInJldHVybiAiIC4gJG5hdGl2ZVZhbHVlIC4gIjtcbiI7CkBAIC00MDk4LDcgKzQx
OTgsNyBAQCBzdWIgQ3JlYXRlQ3VzdG9tU2lnbmF0dXJlCiAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoR2V0VjhIZWFkZXJOYW1l
KCR0eXBlKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICRyZXN1bHQgLj0g
IlY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOCR7dHlwZX06
OmluZm8sIHdvcmxkVHlwZSkiOworICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIlY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOCR7dHlwZX06OmluZm8sIGN1
cnJlbnRXb3JsZFR5cGUpIjsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICRyZXN1bHQgLj0gInY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCkiOwpA
QCAtNDI0Myw2ICs0MzQzLDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgIG15ICRnZXRTY3Jp
cHRXcmFwcGFibGVBcmcgPSAkZ2V0U2NyaXB0V3JhcHBhYmxlID8gIiwgJGdldFNjcmlwdFdyYXBw
YWJsZSIgOiAiIjsKICAgICBteSAkcmV0dXJuSGFuZGxlVHlwZSA9IHNoaWZ0OwogICAgIG15ICRy
ZXR1cm5IYW5kbGVUeXBlQXJnID0gJHJldHVybkhhbmRsZVR5cGUgPyAiLCAkcmV0dXJuSGFuZGxl
VHlwZSIgOiAiIjsKKyAgICBteSAkZm9yTWFpbldvcmxkU3VmZml4ID0gc2hpZnQ7CiAKICAgICBt
eSAkdHlwZSA9ICRzaWduYXR1cmUtPnR5cGU7CiAKQEAgLTQzMDAsNyArNDQwMSw3IEBAIHN1YiBO
YXRpdmVUb0pTVmFsdWUKIAogICAgIGlmIChJc0RPTU5vZGVUeXBlKCR0eXBlKSB8fCAkdHlwZSBl
cSAiRXZlbnRUYXJnZXQiKSB7CiAgICAgICBpZiAoJGdldFNjcmlwdFdyYXBwYWJsZSkgewotICAg
ICAgICAgIHJldHVybiAidG9WOEZhc3QoJHZhbHVlJGdldEhvbGRlckNvbnRhaW5lckFyZyRnZXRT
Y3JpcHRXcmFwcGFibGVBcmcpIjsKKyAgICAgICAgICByZXR1cm4gInRvVjhGYXN0JHtmb3JNYWlu
V29ybGRTdWZmaXh9KCR2YWx1ZSRnZXRIb2xkZXJDb250YWluZXJBcmckZ2V0U2NyaXB0V3JhcHBh
YmxlQXJnKSI7CiAgICAgICB9CiAgICAgICByZXR1cm4gInRvVjgoJHZhbHVlLCAkZ2V0Q3JlYXRp
b25Db250ZXh0LCAkZ2V0SXNvbGF0ZSkiOwogICAgIH0KQEAgLTQzMjAsNyArNDQyMSw3IEBAIHN1
YiBOYXRpdmVUb0pTVmFsdWUKICAgICBBZGRUb0ltcGxJbmNsdWRlcygid3RmL0dldFB0ci5oIik7
CiAKICAgICBpZiAoJGdldFNjcmlwdFdyYXBwYWJsZSkgewotICAgICAgICAgIHJldHVybiAidG9W
OEZhc3QoJHZhbHVlJGdldEhvbGRlckNvbnRhaW5lckFyZyRnZXRTY3JpcHRXcmFwcGFibGVBcmcp
IjsKKyAgICAgICAgICByZXR1cm4gInRvVjhGYXN0JGZvck1haW5Xb3JsZFN1ZmZpeCgkdmFsdWUk
Z2V0SG9sZGVyQ29udGFpbmVyQXJnJGdldFNjcmlwdFdyYXBwYWJsZUFyZykiOwogICAgIH0KICAg
ICByZXR1cm4gInRvVjgoJHZhbHVlLCAkZ2V0Q3JlYXRpb25Db250ZXh0LCAkZ2V0SXNvbGF0ZSki
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4RmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKaW5kZXggMjFhYmY0ZGY5MTZhMDMxMGUxNjdkZDIyYmU3
MDcxODU5ZDZlMWU3Yi4uN2UxZTk5Zjc0ZWZmYzNiY2E5NmE1NjgzN2ZiYjU3YmM1YmE4Y2VlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4Rmxv
YXQ2NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhGbG9hdDY0QXJyYXkuY3BwCkBAIC0xMzUsMTIgKzEzNSwxMiBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhGbG9hdDY0QXJyYXk6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYQogICAgIHJldHVybiBGbG9hdDY0QXJyYXlWOEludGVybmFsOjpjb25zdHJ1Y3Rv
cihhcmdzKTsKIH0KIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAog
ICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwotICAgIGRlZmF1
bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2Ms
ICJGbG9hdDY0QXJyYXkiLCBWOEFycmF5QnVmZmVyVmlldzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwg
d29ybGRUeXBlKSwgVjhGbG9hdDY0QXJyYXk6OmludGVybmFsRmllbGRDb3VudCwKKyAgICBkZWZh
dWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNj
LCAiRmxvYXQ2NEFycmF5IiwgVjhBcnJheUJ1ZmZlclZpZXc6OkdldFRlbXBsYXRlKGlzb2xhdGUs
IGN1cnJlbnRXb3JsZFR5cGUpLCBWOEZsb2F0NjRBcnJheTo6aW50ZXJuYWxGaWVsZENvdW50LAog
ICAgICAgICAwLCAwLAogICAgICAgICBWOEZsb2F0NjRBcnJheU1ldGhvZHMsIFdURl9BUlJBWV9M
RU5HVEgoVjhGbG9hdDY0QXJyYXlNZXRob2RzKSwgaXNvbGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2Vk
LgpAQCAtMTUxLDkgKzE1MSwxMiBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6OgogICAgIFVOVVNF
RF9QQVJBTShwcm90byk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAg
ICAgCiAKKyAgICBpZiAoY3VycmVudFdvcmxkVHlwZSA9PSBNYWluV29ybGQpCisgICAgICAgIFY4
RE9NQ29uZmlndXJhdGlvbjo6YWRkVG9UZW1wbGF0ZShkZXNjLCAwLCAwLCAwLCAwLCBpc29sYXRl
LCBkZWZhdWx0U2lnbmF0dXJlKTsKKwogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2ZvbycKICAg
ICBjb25zdCBpbnQgZm9vQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gZm9vQXJndltmb29BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+cmF3VGVtcGxhdGUoJlY4RmxvYXQzMkFycmF5OjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZm9vQXJndltmb29BcmdjXSA9IHsgVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RmxvYXQzMkFycmF5
OjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVy
ZT4gZm9vU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGZvb0FyZ2MsIGZvb0Fy
Z3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJmb28iKSwgdjg6OkZ1
bmN0aW9uVGVtcGxhdGU6Ok5ldyhGbG9hdDY0QXJyYXlWOEludGVybmFsOjpmb29NZXRob2RDYWxs
YmFjaywgdjhVbmRlZmluZWQoKSwgZm9vU2lnbmF0dXJlKSk7CiAKQEAgLTE2MiwyMyArMTY1LDIz
IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJl
VjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSh2ODo6CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEZsb2F0NjRBcnJheTo6R2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RmxvYXQ2NEFycmF5OjpHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRU
eXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRv
ciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVt
cGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAh
PSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAg
Q29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywg
d29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOEZsb2F0NjRB
cnJheVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwg
aXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVu
dFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1i
b29sIFY4RmxvYXQ2NEFycmF5OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jv
b2wgVjhGbG9hdDY0QXJyYXk6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlw
ZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5z
dGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3Js
ZFR5cGUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKaW5kZXggNDMzN2RkMjZkYjFiZWJlYjI0OWUz
ZGEzMDAyY2I0ZTMwMmFkZDFiMy4uMjY0NDE1NDA5YjVmN2Y1MWI2YjRhZjYzNTJmMTJiMTZlMjk4
MDI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4RmxvYXQ2NEFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKQEAgLTY1LDYgKzY1LDE3IEBAIGlubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChGbG9hdDY0QXJyYXkqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlCiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9yTWFpbldvcmxkKEZs
b2F0NjRBcnJheSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkg
PT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4g
djhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFw
cGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlm
ICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVy
biB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNs
YXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4RmFzdChGbG9hdDY0QXJyYXkqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRh
aW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTc3LDYgKzg4LDI1
IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoRmxvYXQ2NEFycmF5KiBp
bXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNv
bnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4RmFzdEZvck1haW5Xb3JsZChGbG9hdDY0QXJyYXkqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRh
aW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBBU1NFUlQod29y
bGRUeXBlKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVO
TElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIuR2V0SXNvbGF0
ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6
OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFp
bmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xh
c3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IEZsb2F0NjRBcnJheSA+
IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBw
YWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29u
dGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5l
ciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFz
dChQYXNzUmVmUHRyPCBGbG9hdDY0QXJyYXkgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0
KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURP
TU9iamVjdC5jcHAKaW5kZXggM2E4NjE3YWJkOTU1ODc0OTU3YmFmODI1MmMyMGFkNmJhMGM2MjAy
NC4uM2U0MjJlNDQ2ZWNjYzcwZGQxNDBjMGRlMjQwNTEyNGJhNTA2YmVmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTgyLDYgKzgyLDE3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gZXhjaXRpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2
ODo6U3RyaW5nCiAgICAgcmV0dXJuIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpleGNp
dGluZ0F0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGV4Y2l0aW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dEFjdGl2ZURPTU9iamVjdCogaW1wID0gVjhUZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+ZXhjaXRpbmdBdHRyKCks
IGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBl
eGNpdGluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJu
IFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpleGNpdGluZ0F0dHJBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBib29sIGluZGV4ZWRTZWN1cml0eUNoZWNrKHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB1aW50MzJfdCBpbmRleCwgdjg6OkFjY2Vzc1R5cGUg
dHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4pCiB7CiAgICAgVGVzdEFjdGl2ZURPTU9iamVjdCog
aW1wID0gIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6dG9OYXRpdmUoaG9zdCk7CkBAIC0xNzgsNyAr
MTg5LDEyIEBAIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1
dGUgVjhUZXN0QWN0aXZlRE9NT2JqZWN0QXR0cnNbXSA9CiAgICAgeyJleGNpdGluZ0F0dHIiLCBU
ZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhjaXRpbmdBdHRyQXR0ckdldHRlckNhbGxi
YWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKIH07CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0VGVtcGxhdGUo
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0YXRpYyBjb25zdCBWOERPTUNv
bmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0QWN0aXZlRE9NT2JqZWN0QXR0cnNG
b3JNYWluV29ybGRbXSA9IHsKKyAgICAvLyBBdHRyaWJ1dGUgJ2V4Y2l0aW5nQXR0cicgKFR5cGU6
ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsiZXhjaXRpbmdBdHRyIiwg
VGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4Y2l0aW5nQXR0ckF0dHJHZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCit9OworCitzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9i
amVjdFRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQog
ewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKQEAgLTE5Myw5ICsyMDksMTIgQEAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRl
c3RBY3RpdmVET01PYmplY3RUZW1wbGEKICAgICBVTlVTRURfUEFSQU0ocHJvdG8pOyAvLyBJbiBz
b21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIGluc3RhbmNlLT5TZXRBY2Nlc3ND
aGVja0NhbGxiYWNrcyhUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6bmFtZWRTZWN1cml0
eUNoZWNrLCBUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6aW5kZXhlZFNlY3VyaXR5Q2hl
Y2ssIHY4OjpFeHRlcm5hbDo6TmV3KCZWOFRlc3RBY3RpdmVET01PYmplY3Q6OmluZm8pKTsKIAor
ICAgIGlmIChjdXJyZW50V29ybGRUeXBlID09IE1haW5Xb3JsZCkKKyAgICAgICAgVjhET01Db25m
aWd1cmF0aW9uOjphZGRUb1RlbXBsYXRlKGRlc2MsIFY4VGVzdEFjdGl2ZURPTU9iamVjdEF0dHJz
Rm9yTWFpbldvcmxkLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdEFjdGl2ZURPTU9iamVjdEF0dHJz
Rm9yTWFpbldvcmxkKSwgMCwgMCwgaXNvbGF0ZSwgZGVmYXVsdFNpZ25hdHVyZSk7CisKICAgICAv
LyBDdXN0b20gU2lnbmF0dXJlICdleGNpdGluZ0Z1bmN0aW9uJwogICAgIGNvbnN0IGludCBleGNp
dGluZ0Z1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gZXhjaXRpbmdGdW5jdGlvbkFyZ3ZbZXhjaXRpbmdGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCB3b3Js
ZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZXhjaXRpbmdG
dW5jdGlvbkFyZ3ZbZXhjaXRpbmdGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCBjdXJyZW50V29ybGRUeXBl
KSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gZXhjaXRpbmdGdW5jdGlvblNpZ25h
dHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBleGNpdGluZ0Z1bmN0aW9uQXJnYywgZXhj
aXRpbmdGdW5jdGlvbkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9s
KCJleGNpdGluZ0Z1bmN0aW9uIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEFjdGl2
ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4Y2l0aW5nRnVuY3Rpb25NZXRob2RDYWxsYmFjaywgdjhV
bmRlZmluZWQoKSwgZXhjaXRpbmdGdW5jdGlvblNpZ25hdHVyZSkpOwogCkBAIC0yMDcsMjMgKzIy
NiwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZp
Z3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYQogICAgIHJldHVybiBkZXNjOwogfQogCi12
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0QWN0aXZlRE9NT2JqZWN0
OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3Js
ZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0QWN0aXZl
RE9NT2JqZWN0OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRl
bXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUp
LmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRU
eXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7
CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5l
bmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2Nv
cGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0VGVtcGxhdGUo
ZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7
Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAg
ICAgICAgQ29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0VGVtcGxhdGUoZGF0YS0+cmF3VGVt
cGxhdGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBl
KTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8sIHRl
bXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0QWN0aXZlRE9NT2JqZWN0
OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0QWN0aXZlRE9N
T2JqZWN0OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29s
YXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAg
cmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZv
LCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0K
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0QWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggYzgwZWZhNjlmMzJkOTQyMTU5
ZGYzZTJmNzM3NTI2NmIzNDQ0N2ZhNC4uNjUwZGZlNTA3NWViOWY1YTI2NGMwYzBkNDY4MzQwZmE4
M2FkOWFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaApAQCAtNjgsNiArNjgsMTcg
QEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RBY3RpdmVET01PYmplY3Qq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamUKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjhGb3JNYWluV29ybGQoVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFT
U0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFko
IWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9y
TWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBh
YmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0QWN0aXZlRE9N
T2JqZWN0KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxl
KiB3cmFwcGFibGUpCiB7CkBAIC04MCw2ICs5MSwyNSBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjhGYXN0KFRlc3RBY3RpdmVET01PYmplY3QqIGltcGwsIGNvbnN0IEhvbGRlckNv
bgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4K
K2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVzdEFj
dGl2ZURPTU9iamVjdCogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdy
YXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVyLkdl
dElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAg
ICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5X
b3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
d3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRh
aW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIs
IGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RG
b3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdEFjdGl2ZURPTU9iamVjdCA+IGltcGwsIGNvbnN0
IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAg
ICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFw
cGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3Jh
cHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRy
PCBUZXN0QWN0aXZlRE9NT2JqZWN0ID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250
YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBs
LmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVk
R2V0dGVyLmNwcAppbmRleCBlZTVlMzcyZWY0Yzc4Y2U0ODZmODNkMGQ5M2Y4MDkwY2YwZDhmZjg4
Li5iNzQ0MzFiMmJhMTUyMjdiYjhkYmQzMTZjYTI3OTM3MzlkNzQxOThkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGNvbnN0
IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZE1ldGhvZCBWOFRlc3RDdXN0b21OYW1lZEdldHRl
ck1ldGhvZHNbXQogICAgIHsiYW5vdGhlckZ1bmN0aW9uIiwgVGVzdEN1c3RvbU5hbWVkR2V0dGVy
VjhJbnRlcm5hbDo6YW5vdGhlckZ1bmN0aW9uTWV0aG9kQ2FsbGJhY2t9LAogfTsKIAotc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RDdXN0
b21OYW1lZEdldHRlclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUp
CitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1
cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIApAQCAt
MTA3LDI4ICsxMDcsMzEgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBDb25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRlbXAKICAgICAKICAgICBkZXNj
LT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldE5hbWVkUHJvcGVydHlIYW5kbGVyKFY4VGVzdEN1c3Rv
bU5hbWVkR2V0dGVyOjpuYW1lZFByb3BlcnR5R2V0dGVyLCAwLCAwLCAwLCAwKTsKIAorICAgIGlm
IChjdXJyZW50V29ybGRUeXBlID09IE1haW5Xb3JsZCkKKyAgICAgICAgVjhET01Db25maWd1cmF0
aW9uOjphZGRUb1RlbXBsYXRlKGRlc2MsIDAsIDAsIDAsIDAsIGlzb2xhdGUsIGRlZmF1bHRTaWdu
YXR1cmUpOworCiAgICAgLy8gQ3VzdG9tIHRvU3RyaW5nIHRlbXBsYXRlCiAgICAgZGVzYy0+U2V0
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgidG9TdHJpbmciKSwgVjhQZXJJc29sYXRlRGF0YTo6Y3Vy
cmVudCgpLT50b1N0cmluZ1RlbXBsYXRlKCkpOwogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6
OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxk
VHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RDdXN0b21O
YW1lZEdldHRlcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3Js
ZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpU
ZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBl
KS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9y
IHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8p
OworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSku
ZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNj
b3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyVGVtcGxh
dGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlw
ZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsK
KyAgICAgICAgQ29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wbGF0ZShkYXRhLT5y
YXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3Js
ZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5m
bywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RDdXN0b21OYW1l
ZEdldHRlcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUp
CiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3Rh
bmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRU
eXBlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCmluZGV4IDJhNTFj
ZGVkOWFlNzk2Yzc1Yzk5MjFlMDhkYWE4NDAyYzRhMjNhM2IuLjUzNjczZjc2OWU3MTM2MDBmMjI1
NDI1ZmY4YWI1M2U2ZjNiMzYyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5o
CkBAIC02OSw2ICs2OSwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVz
dEN1c3RvbU5hbWVkR2V0dGVyKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYgogICAgIHJldHVybiB3
cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGlt
cGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7
CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVj
ayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFT
dG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250
YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OEZhc3QoVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CkBAIC04MSw2ICs5MiwyNSBAQCBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RDdXN0b21OYW1lZEdldHRl
ciogaW1wbCwgY29uc3QgSG9sZGVyQwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWlu
ZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZh
c3RGb3JNYWluV29ybGQoVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXBsLCBjb25zdCBIb2xkZXJD
b250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJU
KHdvcmxkVHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlm
IChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElz
b2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0
b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNv
bnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3Jh
cHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGlt
cGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBI
b2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdEN1c3RvbU5hbWVkR2V0dGVyID4gaW1wbCwg
Y29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQog
ewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMmM2OGVlOTRiZjNhZjE0
OGY1NTYwYWI1ZmM5YzA4MGI3NDdjOWZiZi4uZDMwNTFhNDI1Zjk4MGY3NzIzMzRiMmRkYjM2N2Zi
NzA3MTRlOGE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtODEs
NiArODEsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyMUF0dHJHZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKICAgICByZXR1cm4gVGVzdEV2ZW50
Q29uc3RydWN0b3JWOEludGVybmFsOjphdHRyMUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cjFBdHRyR2V0dGVyRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXAgPSBWOFRlc3RFdmVudENvbnN0cnVj
dG9yOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5h
dHRyMSgpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFuZGxlKTsKK30KKworc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyMUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICByZXR1cm4gVGVzdEV2ZW50Q29uc3RydWN0b3JWOEludGVybmFsOjphdHRy
MUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gYXR0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RFdmVudENvbnN0cnVj
dG9yKiBpbXAgPSBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKQEAgLTkyLDYgKzEwMywxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHIy
QXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogICAgIHJldHVy
biBUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWw6OmF0dHIyQXR0ckdldHRlcihuYW1lLCBp
bmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyMkF0dHJHZXR0ZXJG
b3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcCA9IFY4VGVzdEV2
ZW50Q29uc3RydWN0b3I6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OFN0
cmluZyhpbXAtPmF0dHIyKCksIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUp
OworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHIyQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50
ZXJuYWw6OmF0dHIyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3Rvcihjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKQEAgLTEyMCw2ICsxNDIsMTMg
QEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBWOFRl
c3RFdmVudENvbnN0cnVjdG9yQXR0cnNbXQogICAgIHsiYXR0cjIiLCBUZXN0RXZlbnRDb25zdHJ1
Y3RvclY4SW50ZXJuYWw6OmF0dHIyQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKIH07CiAKK3N0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1
dGUgVjhUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHJzRm9yTWFpbldvcmxkW10gPSB7CisgICAgLy8g
QXR0cmlidXRlICdhdHRyMScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcn
KQorICAgIHsiYXR0cjEiLCBUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWw6OmF0dHIxQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBB
dHRyaWJ1dGUgJ2F0dHIyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ0lu
aXRpYWxpemVkQnlFdmVudENvbnN0cnVjdG9yJykKKyAgICB7ImF0dHIyIiwgVGVzdEV2ZW50Q29u
c3RydWN0b3JWOEludGVybmFsOjphdHRyMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwg
MCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCit9OworCiBib29sIGZpbGxUZXN0RXZlbnRDb25zdHJ1Y3Rvcklu
aXQoVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0JiBldmVudEluaXQsIGNvbnN0IERpY3Rpb25hcnkm
IG9wdGlvbnMpCiB7CiAgICAgb3B0aW9ucy5nZXQoImF0dHIyIiwgZXZlbnRJbml0LmF0dHIyKTsK
QEAgLTEzNyw3ICsxNjYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndQogICAgIHJldHVybiBU
ZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWw6OmNvbnN0cnVjdG9yKGFyZ3MpOwogfQogCi1z
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVz
dEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRU
eXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1
cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIApA
QCAtMTQ5LDI4ICsxNzgsMzEgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGwKICAgICBkZXNjLT5T
ZXRDYWxsSGFuZGxlcihWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RvckNhbGxiYWNr
KTsKICAgICAKIAorICAgIGlmIChjdXJyZW50V29ybGRUeXBlID09IE1haW5Xb3JsZCkKKyAgICAg
ICAgVjhET01Db25maWd1cmF0aW9uOjphZGRUb1RlbXBsYXRlKGRlc2MsIFY4VGVzdEV2ZW50Q29u
c3RydWN0b3JBdHRyc0Zvck1haW5Xb3JsZCwgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RFdmVudENv
bnN0cnVjdG9yQXR0cnNGb3JNYWluV29ybGQpLCAwLCAwLCBpc29sYXRlLCBkZWZhdWx0U2lnbmF0
dXJlKTsKKwogICAgIC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQogICAgIGRlc2MtPlNldCh2
ODo6U3RyaW5nOjpOZXdTeW1ib2woInRvU3RyaW5nIiksIFY4UGVySXNvbGF0ZURhdGE6OmN1cnJl
bnQoKS0+dG9TdHJpbmdUZW1wbGF0ZSgpKTsKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6Okdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFdmVudENvbnN0
cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBs
YXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZp
bmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBl
KS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVz
dWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Cisg
ICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5lbmQo
KSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUg
aGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRl
bXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRlbXBsYXRlKGRh
dGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwot
ICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAg
ICAgIENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0ZShkYXRhLT5yYXdUZW1w
bGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUp
OworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVt
cGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RFdmVudENvbnN0cnVjdG9y
OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAg
IHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5m
bywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9
CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggZWNkMTU5YmFjZDhjZTRj
YTk5MWI1ZjUwNzUzZDJiMmUzNjRiZGEwOS4uNDVkYzFkMTNjZDBhNGQyY2NiMjMxYzI0ZWE1ZDIw
ZGQ5MzMyYTY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC03MCw2ICs3
MCwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEV2ZW50Q29uc3Ry
dWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iagogICAgIHJldHVybiB3cmFwKGltcGwsIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorewor
ICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5M
SUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwor
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFw
cGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3Mg
V3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0RXZl
bnRDb25zdHJ1Y3RvciogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdy
YXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtODIsNiArOTMsMjUgQEAgaW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wbCwgY29uc3Qg
SG9sZGVyQ28KIH0KIAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFw
cGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxk
KFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRh
aW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250
YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1w
bCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVy
Rm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIo
KSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNv
bnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0RXZlbnRDb25zdHJ1Y3RvciA+IGlt
cGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJs
ZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFp
bmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwg
Y2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQ
YXNzUmVmUHRyPCBUZXN0RXZlbnRDb25zdHJ1Y3RvciA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRh
aW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKICAgICByZXR1cm4gdG9W
OEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRh
cmdldC5jcHAKaW5kZXggODI1MzcwMDFjYzk3NWI3MWYzYmIwOWVmMWJjN2VhMzUwMDcyMmJkYy4u
ZjJhMDdjODgxNWU1OTAxMDIzNmUyYzIxY2MxYzMwNGRkY2I3ODZjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZl
bnRUYXJnZXQuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmln
dXJhdGlvbjo6QmF0Y2hlZE1ldGhvZCBWOFRlc3RFdmVudFRhcmdldE1ldGhvZHNbXSA9IHsKICAg
ICB7InJlbW92ZUV2ZW50TGlzdGVuZXIiLCBUZXN0RXZlbnRUYXJnZXRWOEludGVybmFsOjpyZW1v
dmVFdmVudExpc3RlbmVyTWV0aG9kQ2FsbGJhY2t9LAogfTsKIAotc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBs
YXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVt
cGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29s
YXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAg
ZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIApAQCAtMTc3LDkgKzE3NywxMiBAQCBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50
VGFyZ2V0VGVtcGxhdGUodgogICAgIGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKS0+U2V0TmFtZWRQ
cm9wZXJ0eUhhbmRsZXIoVjhUZXN0RXZlbnRUYXJnZXQ6Om5hbWVkUHJvcGVydHlHZXR0ZXIsIDAs
IDAsIDAsIDApOwogICAgIGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKS0+TWFya0FzVW5kZXRlY3Rh
YmxlKCk7CiAKKyAgICBpZiAoY3VycmVudFdvcmxkVHlwZSA9PSBNYWluV29ybGQpCisgICAgICAg
IFY4RE9NQ29uZmlndXJhdGlvbjo6YWRkVG9UZW1wbGF0ZShkZXNjLCAwLCAwLCAwLCAwLCBpc29s
YXRlLCBkZWZhdWx0U2lnbmF0dXJlKTsKKwogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2Rpc3Bh
dGNoRXZlbnQnCiAgICAgY29uc3QgaW50IGRpc3BhdGNoRXZlbnRBcmdjID0gMTsKLSAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkaXNwYXRjaEV2ZW50QXJndltkaXNwYXRjaEV2
ZW50QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRl
KCZWOEV2ZW50OjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gZGlzcGF0Y2hFdmVudEFyZ3ZbZGlzcGF0Y2hFdmVudEFyZ2NdID0geyBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhFdmVudDo6aW5mbywg
Y3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGRpc3Bh
dGNoRXZlbnRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZGlzcGF0Y2hFdmVu
dEFyZ2MsIGRpc3BhdGNoRXZlbnRBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgiZGlzcGF0Y2hFdmVudCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RF
dmVudFRhcmdldFY4SW50ZXJuYWw6OmRpc3BhdGNoRXZlbnRNZXRob2RDYWxsYmFjaywgdjhVbmRl
ZmluZWQoKSwgZGlzcGF0Y2hFdmVudFNpZ25hdHVyZSkpOwogCkBAIC0xODgsMjMgKzE5MSwyMyBA
QCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4
VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUodgogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRUYXJnZXQ6OkdldFRlbXBs
YXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFdmVudFRhcmdldDo6R2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdv
cmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsK
LSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisg
ICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEt
PnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1
bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAg
IHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAg
ICAgIENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUo
JmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxh
dGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhU
ZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdv
cmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRl
TWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1w
bDsKIH0KIAotYm9vbCBWOFRlc3RFdmVudFRhcmdldDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3
b3JsZFR5cGUpCitib29sIFY4VGVzdEV2ZW50VGFyZ2V0OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1
cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZh
bHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogRXZlbnRUYXJnZXQqIFY4VGVzdEV2ZW50VGFy
Z2V0Ojp0b0V2ZW50VGFyZ2V0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXZlbnRUYXJnZXQuaAppbmRleCAzZDM2NjJhMGI2MzQyNDdkMTBmYTc2OGQ0ZmY1M2I3ZGU3NjFj
NTRhLi5lODQwODJkMWRjYjk0OWJlYThjN2VkNjk5ZTRlYWVhZDRmOWFlMTk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXZlbnRUYXJnZXQuaApAQCAtNzIsNiArNzIsMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4KFRlc3RFdmVudFRhcmdldCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pgog
ICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lu
bGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0RXZlbnRUYXJn
ZXQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5X
b3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdp
dGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERP
TURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBw
ZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChp
bXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xk
ZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZhc3QoVGVzdEV2ZW50VGFyZ2V0KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CkBAIC04NCw2ICs5NSwyNSBAQCBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RFdmVudFRhcmdldCogaW1w
bCwgY29uc3QgSG9sZGVyQ29udGFpbgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWlu
ZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZh
c3RGb3JNYWluV29ybGQoVGVzdEV2ZW50VGFyZ2V0KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWlu
ZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxk
VHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJ
S0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUo
KSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpn
ZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5l
ci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0RXZlbnRUYXJnZXQg
PiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFw
cGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNv
bnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWlu
ZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZh
c3QoUGFzc1JlZlB0cjwgVGVzdEV2ZW50VGFyZ2V0ID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFp
bmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4
RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24u
Y3BwCmluZGV4IDQ3Y2YxZmU4MmI2Y2VmNTcyZDc5MTVkZWUzMzY5YTNkNWM0YzViZmEuLjUzMDgw
Y2Y3ZmIxYjY3ZjhlYzRiYjUxMmY1OTE5MjJlYjdkMGM2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24u
Y3BwCkBAIC04MCw2ICs4MCwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVB
dHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAgICAgcmV0dXJu
IFRlc3RFeGNlcHRpb25WOEludGVybmFsOjpuYW1lQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0K
IAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuYW1lQXR0ckdldHRlckZvck1haW5Xb3Js
ZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBUZXN0RXhjZXB0aW9uKiBpbXAgPSBWOFRlc3RFeGNlcHRpb246OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPm5hbWUoKSwgaW5mby5H
ZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhhbmRsZSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gbmFtZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBy
ZXR1cm4gVGVzdEV4Y2VwdGlvblY4SW50ZXJuYWw6Om5hbWVBdHRyR2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIGluZm8pOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0RXhjZXB0aW9uVjhJbnRlcm5h
bAogCiBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4
VGVzdEV4Y2VwdGlvbkF0dHJzW10gPSB7CkBAIC04Nyw3ICs5OCwxMiBAQCBzdGF0aWMgY29uc3Qg
VjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdEV4Y2VwdGlvbkF0dHJz
W10gPSB7CiAgICAgeyJuYW1lIiwgVGVzdEV4Y2VwdGlvblY4SW50ZXJuYWw6Om5hbWVBdHRyR2V0
dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsKIAotc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0
ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIGNvbnN0IFY4RE9N
Q29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RFeGNlcHRpb25BdHRyc0Zvck1h
aW5Xb3JsZFtdID0geworICAgIC8vIEF0dHJpYnV0ZSAnbmFtZScgKFR5cGU6ICdyZWFkb25seSBh
dHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsibmFtZSIsIFRlc3RFeGNlcHRpb25WOEludGVy
bmFsOjpuYW1lQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKK307CisKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29u
ZmlndXJlVjhUZXN0RXhjZXB0aW9uVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1
cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIApAQCAt
OTgsMjggKzExNCwzMSBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IENvbmZpZ3VyZVY4VGVzdEV4Y2VwdGlvblRlbXBsYXRlKHY4OgogICAgIFVOVVNFRF9QQVJB
TShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNl
ZC4KICAgICAKIAorICAgIGlmIChjdXJyZW50V29ybGRUeXBlID09IE1haW5Xb3JsZCkKKyAgICAg
ICAgVjhET01Db25maWd1cmF0aW9uOjphZGRUb1RlbXBsYXRlKGRlc2MsIFY4VGVzdEV4Y2VwdGlv
bkF0dHJzRm9yTWFpbldvcmxkLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdEV4Y2VwdGlvbkF0dHJz
Rm9yTWFpbldvcmxkKSwgMCwgMCwgaXNvbGF0ZSwgZGVmYXVsdFNpZ25hdHVyZSk7CisKICAgICAv
LyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKICAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3
U3ltYm9sKCJ0b1N0cmluZyIpLCBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5n
VGVtcGxhdGUoKSk7CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFeGNlcHRpb246OkdldFRlbXBsYXRlKHY4OjpJc29sYXRl
KiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFeGNlcHRpb246OkdldFRlbXBsYXRlKHY4OjpJc29s
YXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAg
VjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7
Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRh
dGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAh
PSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURh
dGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJy
ZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBs
YXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52
YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRl
c3RFeGNlcHRpb25UZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwg
aXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFk
ZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0
ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1
cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUp
LmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RF
eGNlcHRpb246Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RF
eGNlcHRpb246Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAg
ICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmlu
Zm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwog
fQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RFeGNlcHRpb24uaAppbmRleCA5Y2Y4MzE5NTAyMGY2MGUwMjRiNjYwYjQ0ZDJi
MGFlMzdiMWU0MDcwLi45NjEyNDQzOTAxYjhhOTc1MmY0YTFjMDk0MmJhZWIwNDg3YTYwYzYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV4Y2VwdGlvbi5oCkBAIC02OCw2ICs2OCwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjgoVGVzdEV4Y2VwdGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcgogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9
CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0RXhj
ZXB0aW9uKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBN
YWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51
bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIg
PSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3
cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdy
YXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3Mg
SG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjhGYXN0KFRlc3RFeGNlcHRpb24qIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5l
ciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTgwLDYgKzkxLDI1IEBA
IGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdEV4Y2VwdGlvbiogaW1w
bCwgY29uc3QgSG9sZGVyQ29udGFpbmVyCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRh
aW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
RmFzdEZvck1haW5Xb3JsZChUZXN0RXhjZXB0aW9uKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWlu
ZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxk
VHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJ
S0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUo
KSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpn
ZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5l
ci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0RXhjZXB0aW9uID4g
aW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBh
YmxlKQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250
YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVy
LCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0
KFBhc3NSZWZQdHI8IFRlc3RFeGNlcHRpb24gPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0
KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAK
aW5kZXggZTBmOGNjYWI2ZTkxMzdiZGRlNjQ3YWRmNTU2NTdlOGJmNWJjMGJkYS4uZmU2MjNkMDAz
ODE5Y2NjZjhkMzM2ZGQ1N2IwMDUzYjkxNTA2YjhlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAK
QEAgLTk3LDYgKzk3LDI0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVu
dGFsU3RhdGljUmVhZE9ubHlBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4CiAKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIAorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBzdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHJBdHRyR2V0dGVyRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIHJldHVybiB2OEludGVnZXIoVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxl
bWVudGFsU3RhdGljUmVhZE9ubHlBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYg
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyQXR0ckdldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0SW50ZXJmYWNlVjhJbnRl
cm5hbDo6c3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyQXR0ckdldHRlckZvck1haW5Xb3Js
ZChuYW1lLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTIpCisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3Rh
dGljQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgcmV0dXJuIHY4U3RyaW5nKFRlc3RTdXBwbGVtZW50
YWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVu
c2FmZUhhbmRsZSk7CkBAIC0xMTUsNiArMTMzLDI0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gc3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8
CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIAorc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0ckdldHRl
ckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gdjhTdHJpbmcoVGVzdFN1cHBsZW1lbnRhbDo6
c3VwcGxlbWVudGFsU3RhdGljQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZl
SGFuZGxlKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RhdGljQXR0
ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdEludGVy
ZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyR2V0dGVyRm9yTWFpbldv
cmxkKG5hbWUsIGluZm8pOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKKwogc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4
U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKQEAgLTEz
NSw2ICsxNzEsMjYgQEAgc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJTZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKIAogI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogCitzdGF0aWMgdm9pZCBzdXBwbGVtZW50
YWxTdGF0aWNBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lEKFY4U3Ry
aW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOworICAgIFRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBs
ZW1lbnRhbFN0YXRpY0F0dHIodik7CisgICAgcmV0dXJuOworfQorCisjZW5kaWYgLy8gRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKKyNpZiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworc3RhdGljIHZvaWQgc3VwcGxlbWVudGFs
U3RhdGljQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRh
bFN0YXRpY0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30K
KworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQor
CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RyMUF0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKQEAgLTE1NCw2ICsyMTAsMjUgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBzdXBwbGVtZW50YWxTdHIxQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKIAog
I2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjFBdHRyR2V0dGVyRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6
OnN1cHBsZW1lbnRhbFN0cjEoaW1wKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhh
bmRsZSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25k
aXRpb24xMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEy
KQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjFBdHRyR2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RJbnRlcmZhY2VWOElu
dGVybmFsOjpzdXBwbGVtZW50YWxTdHIxQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZv
KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisK
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RyMkF0dHJHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CiB7CiAgICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKQEAgLTE3Myw2ICsyNDgsMjUgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBzdXBwbGVtZW50YWxTdHIyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6
U3QKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjJBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKFRlc3RTdXBwbGVt
ZW50YWw6OnN1cHBsZW1lbnRhbFN0cjIoaW1wKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVu
c2FmZUhhbmRsZSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjJB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RJbnRlcmZh
Y2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1l
LCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCisKIHN0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbFN0cjJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRl
cmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTk0LDYgKzI4OCwyNyBAQCBzdGF0
aWMgdm9pZCBzdXBwbGVtZW50YWxTdHIyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TAogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCiAKK3N0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbFN0cjJBdHRyU2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0SW50ZXJm
YWNlKiBpbXAgPSBWOFRlc3RJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAg
IFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPD4s
IHYsIHZhbHVlKTsKKyAgICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxTdHIyKGlt
cCwgdik7CisgICAgcmV0dXJuOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKKworc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3RyMkF0dHJTZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRyU2V0dGVyRm9yTWFp
bldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3Vw
cGxlbWVudGFsU3RyM0F0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICByZXR1cm4gVjhUZXN0SW50
ZXJmYWNlOjpzdXBwbGVtZW50YWxTdHIzQXR0ckdldHRlckN1c3RvbShuYW1lLCBpbmZvKTsKQEAg
LTIwMyw2ICszMTgsMTUgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50
YWxTdHIzQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKIAogI2lmIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogCitzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgcmV0dXJuIFY4VGVzdEludGVyZmFjZTo6c3VwcGxlbWVudGFsU3RyM0F0dHJHZXR0
ZXJDdXN0b20obmFtZSwgaW5mbyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQorCiBzdGF0aWMgdm9pZCBzdXBwbGVtZW50YWxTdHIzQXR0clNldHRl
ckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBWOFRlc3RJbnRl
cmZhY2U6OnN1cHBsZW1lbnRhbFN0cjNBdHRyU2V0dGVyQ3VzdG9tKG5hbWUsIHZhbHVlLCBpbmZv
KTsKQEAgLTIxMiw2ICszMzYsMTUgQEAgc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3RyM0F0dHJT
ZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkwKIAogI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogCitzdGF0aWMgdm9pZCBz
dXBwbGVtZW50YWxTdHIzQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBWOFRlc3RJbnRlcmZhY2U6OnN1cHBsZW1lbnRhbFN0
cjNBdHRyU2V0dGVyQ3VzdG9tKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENv
bmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gc3VwcGxlbWVudGFsTm9kZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdEludGVyZmFj
ZSogaW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTIz
MSw2ICszNjQsMjUgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxO
b2RlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKIAogI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHN1cHBsZW1lbnRhbE5vZGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRlc3RTdXBwbGVtZW50YWw6OnN1
cHBsZW1lbnRhbE5vZGUoaW1wKSwgaW5mbywgaW1wKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gc3VwcGxlbWVudGFsTm9kZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICByZXR1cm4gVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRp
dGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKKwogc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsTm9kZUF0
dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RJbnRlcmZh
Y2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0y
NTIsNiArNDA0LDI3IEBAIHN0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbE5vZGVBdHRyU2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMCiAKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIAorc3RhdGljIHZvaWQgc3VwcGxlbWVu
dGFsTm9kZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgTm9kZSogdiA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UodmFsdWUs
IGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4Tm9k
ZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAg
ICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxOb2RlKGltcCwgV1RGOjpnZXRQdHIo
dikpOworICAgIHJldHVybjsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCisKK3N0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbE5vZGVBdHRyU2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0clNldHRlckZvck1haW5X
b3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBs
ZW1lbnRhbE1ldGhvZDFNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBU
ZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRlcmZhY2U6OnRvTmF0aXZlKGFyZ3MuSG9sZGVy
KCkpOwpAQCAtMzgxLDYgKzU1NCwzMyBAQCBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9u
OjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdEludGVyZmFjZUF0dHJzW10gPSB7CiAjZW5kaWYgLy8g
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiB9OwogCitzdGF0aWMg
Y29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdEludGVyZmFj
ZUF0dHJzRm9yTWFpbldvcmxkW10gPSB7CisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMTIpCisgICAgLy8gQXR0cmlidXRlICdzdXBwbGVtZW50YWxTdGF0aWNSZWFk
T25seUF0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9u
YWwgSW1wbGVtZW50ZWRCeScpCisgICAgeyJzdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHIi
LCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRy
QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyNlbmRp
ZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyNpZiBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICAvLyBBdHRyaWJ1dGUg
J3N1cHBsZW1lbnRhbFN0YXRpY0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29u
ZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCisgICAgeyJzdXBwbGVtZW50YWxTdGF0aWNBdHRyIiwg
VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50
YWxTdGF0aWNBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikK
KyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKyAgICAvLyBB
dHRyaWJ1dGUgJ3N1cHBsZW1lbnRhbFN0cjEnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBF
eHRBdHRyOiAnQ29uZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCisgICAgeyJzdXBwbGVtZW50YWxT
dHIxIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjFBdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorI2VuZGlmIC8vIEVOQUJM
RShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorICAgIC8vIEF0dHJpYnV0ZSAnc3VwcGxlbWVu
dGFsU3RyMicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDb25kaXRpb25hbCBJbXBsZW1l
bnRlZEJ5JykKKyAgICB7InN1cHBsZW1lbnRhbFN0cjIiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5h
bDo6c3VwcGxlbWVudGFsU3RyMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdElu
dGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKQorI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjEyKQorICAgIC8vIEF0dHJpYnV0ZSAnc3VwcGxlbWVudGFsU3RyMycgKFR5cGU6
ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDdXN0b21TZXR0ZXIgQ3VzdG9tR2V0dGVyIENvbmRpdGlv
bmFsIEltcGxlbWVudGVkQnknKQorICAgIHsic3VwcGxlbWVudGFsU3RyMyIsIFRlc3RJbnRlcmZh
Y2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyM0F0dHJTZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisjZW5kaWYgLy8gRU5BQkxFKENv
bmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisgICAgLy8gQXR0cmlidXRlICdzdXBwbGVtZW50YWxO
b2RlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFsIEltcGxlbWVudGVk
QnknKQorICAgIHsic3VwcGxlbWVudGFsTm9kZSIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpz
dXBwbGVtZW50YWxOb2RlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0SW50ZXJm
YWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTm9kZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCit9OworCiBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9u
OjpCYXRjaGVkTWV0aG9kIFY4VGVzdEludGVyZmFjZU1ldGhvZHNbXSA9IHsKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICB7InN1cHBsZW1lbnRhbE1l
dGhvZDEiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTWV0aG9kMU1ldGhv
ZENhbGxiYWNrfSwKQEAgLTQxOCw3ICs2MTgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhU
ZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAg
ICAgcmV0dXJuIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpjb25zdHJ1Y3RvcihhcmdzKTsKIH0K
IAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVW
OFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBl
KQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVW
OFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdv
cmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCkBAIC00MzYsOSAr
NjM2LDEyIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29u
ZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6CiAgICAgVU5VU0VEX1BBUkFNKHByb3Rv
KTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICAKIAorICAgIGlm
IChjdXJyZW50V29ybGRUeXBlID09IE1haW5Xb3JsZCkKKyAgICAgICAgVjhET01Db25maWd1cmF0
aW9uOjphZGRUb1RlbXBsYXRlKGRlc2MsIFY4VGVzdEludGVyZmFjZUF0dHJzRm9yTWFpbldvcmxk
LCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdEludGVyZmFjZUF0dHJzRm9yTWFpbldvcmxkKSwgMCwg
MCwgaXNvbGF0ZSwgZGVmYXVsdFNpZ25hdHVyZSk7CisKICAgICAvLyBDdXN0b20gU2lnbmF0dXJl
ICdzdXBwbGVtZW50YWxNZXRob2QyJwogICAgIGNvbnN0IGludCBzdXBwbGVtZW50YWxNZXRob2Qy
QXJnYyA9IDI7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3VwcGxlbWVu
dGFsTWV0aG9kMkFyZ3Zbc3VwcGxlbWVudGFsTWV0aG9kMkFyZ2NdID0geyB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5y
YXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3VwcGxlbWVudGFsTWV0aG9kMkFyZ3Zbc3VwcGxlbWVu
dGFsTWV0aG9kMkFyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjpp
bmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4g
c3VwcGxlbWVudGFsTWV0aG9kMlNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBz
dXBwbGVtZW50YWxNZXRob2QyQXJnYywgc3VwcGxlbWVudGFsTWV0aG9kMkFyZ3YpOwogI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIHByb3RvLT5TZXQo
djg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdXBwbGVtZW50YWxNZXRob2QyIiksIHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE1ldGhv
ZDJNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgc3VwcGxlbWVudGFsTWV0aG9kMlNpZ25h
dHVyZSkpOwpAQCAtNDUzLDIzICs2NTYsMjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKICAg
ICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdEludGVyZmFjZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IFY4VGVzdEludGVyZmFjZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRh
KiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xh
dGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZp
bmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdv
cmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6
OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBs
YXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5
cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7
CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBs
YXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7
CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1w
bCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdEludGVyZmFjZTo6SGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdEludGVyZmFjZTo6SGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxk
VHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0lu
c3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIEFjdGl2ZURPTU9i
amVjdCogVjhUZXN0SW50ZXJmYWNlOjp0b0FjdGl2ZURPTU9iamVjdCh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAppbmRleCAwNjE5NjI4NmM2MTMzZmM2NDM1
Y2MwOWZiNzJkOTc0NzY5YWI0YzliLi4wNWQ0MGJkODA2NWIwYzZiMzUyMmU0Y2RmOTRmNmQ5Njdi
YmY1Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCkBAIC03Miw2ICs3MiwxNyBAQCBpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEludGVyZmFjZSogaW1wbCwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcgogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3Js
ZChUZXN0SW50ZXJmYWNlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShpc29s
YXRlKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJl
dHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7Cisg
ICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAg
cmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVtcGxh
dGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RJbnRlcmZhY2UqIGltcGwsIGNvbnN0IEhvbGRl
ckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTg0LDYg
Kzk1LDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdEludGVy
ZmFjZSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhv
bGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0SW50ZXJmYWNlKiBpbXBsLCBjb25zdCBIb2xk
ZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNT
RVJUKHdvcmxkVHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAg
IGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdl
dElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0
YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5J
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGws
IGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0SW50
ZXJmYWNlID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJs
ZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdl
dCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVy
Q29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RJbnRlcmZhY2UgPiBpbXBsLCBjb25zdCBIb2xkZXJD
b250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJu
IHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCBkMTQ3YzdiZmU0YTM2NDcx
Yjk4NDZkNjViZTUyYTBjNGFhNTZlZDljLi41OWE4N2VjMmNhMmM3MzU4N2Y4MWU5NDVjYThmNDUx
OTk1NWQzMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJh
dGNoZWRNZXRob2QgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lck1ldGhvCiAgICAgeyJtZXRo
b2QiLCBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclY4SW50ZXJuYWw6Om1ldGhvZE1ldGhvZENh
bGxiYWNrfSwKIH07CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRlbXBsYXRlKHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUZW1w
bGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBk
ZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCkBAIC0xMDcsMjggKzEwNywzMSBAQCBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZQogICAgIFVOVVNFRF9QQVJBTShwcm90byk7IC8vIEluIHNvbWUgY2Fz
ZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAgICAgCiAKKyAgICBpZiAoY3VycmVudFdvcmxkVHlw
ZSA9PSBNYWluV29ybGQpCisgICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YWRkVG9UZW1wbGF0
ZShkZXNjLCAwLCAwLCAwLCAwLCBpc29sYXRlLCBkZWZhdWx0U2lnbmF0dXJlKTsKKwogICAgIC8v
IEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQogICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woInRvU3RyaW5nIiksIFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+dG9TdHJpbmdU
ZW1wbGF0ZSgpKTsKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkdldFRlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBj
dXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRl
TWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQo
JmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5l
bmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0
ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5lbmQoKSkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFu
ZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBs
ID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRlbXBsYXRl
KGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUp
OwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7Cisg
ICAgICAgIENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUZW1wbGF0ZShkYXRh
LT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRX
b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgm
aW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wg
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJy
ZW50V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwg
Y3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmgKaW5kZXggMzBiNWRlMDRkNjlmZGMyODRlMjc4MmM3YTc4Nzc5M2NiOTU5MTdm
ZS4uZDlhZGVjOTlhZDA4ZWE3YmQ0ZDk0NGExZWJmOTY3YzIzODkzZGViZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCkBAIC02OCw2ICs2OCwxNyBAQCBpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIq
IGltcGwsIHY4OjpIYW5kbGU8dgogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1h
aW5Xb3JsZChUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFT
U0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFko
IWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9y
TWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBh
YmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lciogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdy
YXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtODAsNiArOTEsMjUgQEAgaW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wbCwg
Y29uc3QgSG8KIH0KIAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFw
cGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxk
KFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlw
ZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VM
WSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7
CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRX
cmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5I
b2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhv
bGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lciA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFi
bGUqIHdyYXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5n
ZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRl
ckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA+IGltcGws
IGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkK
IHsKICAgICByZXR1cm4gdG9WOEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IDFlY2M0NGI3ZTE0ZjU2
ZGZkYjYxZjk3YzE3MDc4M2Q0Y2ZjYWRhNGMuLjFhNjVhYWJkZTRmMWMxODU4NDZiNzFiODQ0YTEx
OTE4NzBjMzA5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTEw
OSw3ICsxMDksNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE5hbWVkQ29u
c3RydWN0b3JDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OgogICAgIHJldHVybiBzZXRET01F
eGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6R2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBl
KQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5hbWVkQ29uc3Ry
dWN0b3JDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNhY2hlZFRlbXBsYXRlOwogICAgIGlmICghY2FjaGVk
VGVtcGxhdGUuSXNFbXB0eSgpKQpAQCAtMTIxLDEzICsxMjEsMTMgQEAgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6
R2V0VGVtcGwKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IHJl
c3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgpOwogICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxk
Q291bnQoVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6aW50ZXJuYWxGaWVsZENvdW50KTsKICAgICBy
ZXN1bHQtPlNldENsYXNzTmFtZSh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIlRlc3ROYW1lZENvbnN0
cnVjdG9yIikpOwotICAgIHJlc3VsdC0+SW5oZXJpdChWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpH
ZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpKTsKKyAgICByZXN1bHQtPkluaGVyaXQoVjhU
ZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlw
ZSkpOwogCiAgICAgY2FjaGVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCByZXN1bHQpOwogICAgIHJldHVybiBjYWNoZWRUZW1wbGF0
ZTsKIH0KIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25m
aWd1cmVWOFRlc3ROYW1lZENvbnN0cnVjdG9yVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRU
eXBlIHdvcmxkVHlwZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gQ29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBl
cldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90
eXBlKCk7CiAKQEAgLTEzOCwyOCArMTM4LDMxIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsCiAg
ICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3
aWxsIG5vdCBiZSB1c2VkLgogICAgIAogCisgICAgaWYgKGN1cnJlbnRXb3JsZFR5cGUgPT0gTWFp
bldvcmxkKQorICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmFkZFRvVGVtcGxhdGUoZGVzYywg
MCwgMCwgMCwgMCwgaXNvbGF0ZSwgZGVmYXVsdFNpZ25hdHVyZSk7CisKICAgICAvLyBDdXN0b20g
dG9TdHJpbmcgdGVtcGxhdGUKICAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ0
b1N0cmluZyIpLCBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5nVGVtcGxhdGUo
KSk7CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsK
ICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0
ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVz
dWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29s
YXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFw
KGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+
dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1
bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3Vy
ZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywg
d29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3ROYW1l
ZENvbnN0cnVjdG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3Js
ZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1h
cChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7
CiB9CiAKLWJvb2wgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6Okhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJX
b3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOwor
ICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgm
aW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiBBY3RpdmVET01PYmplY3QqIFY4
VGVzdE5hbWVkQ29uc3RydWN0b3I6OnRvQWN0aXZlRE9NT2JqZWN0KHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgKaW5kZXggMzk0MzY0
YTU3ZGJjZGJjMTJlYjYyNThlODY4NDMxNDgzZTQxZWFlOS4uOGU2YzY3MTA0ZGZlNjc0ZmI1YmYy
MzIyMjg4YTllZGNjZjczMDVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCkBA
IC03NSw2ICs3NSwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdE5h
bWVkQ29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iagogICAgIHJldHVybiB3cmFw
KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlz
b2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3Jl
OjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5l
ciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFz
dChUZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250
YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtODcsNiArOTgsMjUgQEAgaW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1w
bCwgY29uc3QgSG9sZGVyQ28KIH0KIAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBj
bGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9y
TWFpbldvcmxkKFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWlu
ZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxk
VHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJ
S0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUo
KSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpn
ZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5l
ci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0TmFtZWRDb25zdHJ1
Y3RvciA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUq
IHdyYXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQo
KSwgY29udGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNv
bnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0TmFtZWRDb25zdHJ1Y3RvciA+IGltcGwsIGNvbnN0IEhv
bGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKICAgICBy
ZXR1cm4gdG9WOEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUu
Y3BwCmluZGV4IGYzN2Y2NjdhMjIwYmNhMGZkYzU2ZDFmMGFhNjNhZTg1ODllNThlMWUuLjk5NDEz
ZGQxODA5YmVhMjc5MWM0NGM0NWNhNjI4ODA5ZGQ1N2UwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKQEAgLTkz
LDQwICs5Myw0MyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0Tm9kZTo6Y29uc3RydWN0
b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiBUZXN0Tm9k
ZVY4SW50ZXJuYWw6OmNvbnN0cnVjdG9yKGFyZ3MpOwogfQogCi1zdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1wbGF0ZSh2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xh
dGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3ROb2RlVGVtcGxhdGUodjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQ
cm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0
dXJlOwotICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3Vy
ZVRlbXBsYXRlKGRlc2MsICJUZXN0Tm9kZSIsIFY4Tm9kZTo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwg
d29ybGRUeXBlKSwgVjhUZXN0Tm9kZTo6aW50ZXJuYWxGaWVsZENvdW50LAorICAgIGRlZmF1bHRT
aWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJU
ZXN0Tm9kZSIsIFY4Tm9kZTo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSks
IFY4VGVzdE5vZGU6OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgMCwgMCwKICAgICAgICAg
MCwgMCwgaXNvbGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJ
biBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIGRlc2MtPlNldENhbGxIYW5k
bGVyKFY4VGVzdE5vZGU6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwogICAgIAogCisgICAgaWYgKGN1
cnJlbnRXb3JsZFR5cGUgPT0gTWFpbldvcmxkKQorICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246
OmFkZFRvVGVtcGxhdGUoZGVzYywgMCwgMCwgMCwgMCwgaXNvbGF0ZSwgZGVmYXVsdFNpZ25hdHVy
ZSk7CisKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKICAgICBkZXNjLT5TZXQodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50
KCktPnRvU3RyaW5nVGVtcGxhdGUoKSk7CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROb2RlOjpHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Tm9kZTo6R2V0VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAg
ICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0g
ZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0
ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRl
RGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1
cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVt
cGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQt
PnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4
VGVzdE5vZGVUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNv
bGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgm
aW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3ROb2RlVGVtcGxhdGUoZGF0YS0+
cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29y
bGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmlu
Zm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0Tm9kZTo6SGFz
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdE5vZGU6Okhhc0luc3Rh
bmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5
cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0
YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiBFdmVudFRhcmdldCog
VjhUZXN0Tm9kZTo6dG9FdmVudFRhcmdldCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3ROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
Tm9kZS5oCmluZGV4IDU4NjBlOTExNWMwYjAzNGJjNTFjYTUwOTM1NjU3NzgwY2MzY2JhNTguLjFk
NmExMjEzZWExOWVjZjEwNmMwNjU5ODU2N2ZhZjI4OGZmZjgwYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaApAQCAtNzAs
NiArNzAsMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3ROb2RlKiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW8KICAgICByZXR1cm4gd3JhcChpbXBs
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoVGVzdE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NF
UlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFp
bXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1h
aW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJs
ZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE5vZGUqIGltcGws
IGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkK
IHsKQEAgLTgyLDYgKzkzLDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZh
c3QoVGVzdE5vZGUqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29uCiB9CiAKIHRlbXBs
YXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0Tm9kZSogaW1wbCwgY29u
c3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQorewor
ICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxk
KTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRh
aW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdy
YXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3Jh
cChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwg
VGVzdE5vZGUgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBh
YmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwu
Z2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xk
ZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdE5vZGUgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250
YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRv
VjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXgg
MDc4OTIxMGY5ZmM5NjQwNjZkZmZmM2Q2ODc1MWRkMWQyOGRhOWI4OS4uOTRlZDM2NTA2NmYyNjAy
OTkyZTA3NGZlZTRiNGNmZjZiNTkzNjdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTEyMyw2ICsxMjMsMTcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWFkT25seUxvbmdBdHRyQXR0ckdldHRl
ckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6
OnJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPnJlYWRPbmx5TG9uZ0F0dHIoKSwgaW5mby5H
ZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRPbmx5
TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRl
c3RPYmpWOEludGVybmFsOjpyZWFkT25seUxvbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChu
YW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWFkT25seVN0
cmluZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMzQsNiArMTQ1LDE3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gcmVhZE9ubHlTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpM
b2NhbDx2ODo6CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVN0cmluZ0F0
dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJlYWRPbmx5U3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1
cm4gdjhTdHJpbmcoaW1wLT5yZWFkT25seVN0cmluZ0F0dHIoKSwgaW5mby5HZXRJc29sYXRlKCks
IFJldHVyblVuc2FmZUhhbmRsZSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
cmVhZE9ubHlTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlTdHJpbmdBdHRyQXR0ckdldHRlckZv
ck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiByZWFkT25seVRlc3RPYmpBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTUyLDYgKzE3NCwyNCBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRPbmx5VGVzdE9iakF0dHJBdHRyR2V0dGVy
Q2FsbGJhY2sodjg6OkxvY2FsPHY4OgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVh
ZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKKyAgICBSZWZQdHI8VGVzdE9iaj4gcmVzdWx0ID0gaW1wLT5yZWFkT25seVRlc3RPYmpB
dHRyKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSByZXN1bHQuZ2V0KCkg
PyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyKHJlc3VsdC5n
ZXQoKSwgaW5mby5HZXRJc29sYXRlKCkpKSA6IHY4VW5kZWZpbmVkKCk7CisgICAgaWYgKHdyYXBw
ZXIuSXNFbXB0eSgpKSB7CisgICAgICAgIHdyYXBwZXIgPSB0b1Y4KHJlc3VsdC5nZXQoKSwgaW5m
by5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgICAgICBpZiAoIXdyYXBwZXIuSXNF
bXB0eSgpKQorICAgICAgICAgICAgVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OnNldE5hbWVkSGlkZGVu
UmVmZXJlbmNlKGluZm8uSG9sZGVyKCksICJyZWFkT25seVRlc3RPYmpBdHRyIiwgd3JhcHBlcik7
CisgICAgfQorICAgIHJldHVybiB3cmFwcGVyOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHJlYWRPbmx5VGVzdE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVRlc3RPYmpBdHRyQXR0
ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBzdGF0aWNSZWFkT25seUxvbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICByZXR1
cm4gdjhJbnRlZ2VyKFRlc3RPYmo6OnN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIoKSwgaW5mby5HZXRJ
c29sYXRlKCkpOwpAQCAtMTYyLDYgKzIwMiwxNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHN0YXRpY1JlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPAog
ICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljUmVhZE9ubHlMb25nQXR0ckF0dHJH
ZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3Rh
dGljUmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJu
IHY4SW50ZWdlcihUZXN0T2JqOjpzdGF0aWNSZWFkT25seUxvbmdBdHRyKCksIGluZm8uR2V0SXNv
bGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdGF0aWNSZWFkT25s
eUxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBU
ZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljUmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3Rh
dGljU3RyaW5nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgcmV0dXJuIHY4U3RyaW5nKFRlc3RPYmo6
OnN0YXRpY1N0cmluZ0F0dHIoKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhhbmRs
ZSk7CkBAIC0xNzIsNiArMjIyLDE2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3Rh
dGljU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0CiAgICAgcmV0
dXJuIFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNTdHJpbmdBdHRyQXR0ckdldHRlcihuYW1lLCBp
bmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdGF0aWNTdHJpbmdBdHRy
QXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gdjhTdHJpbmcoVGVzdE9iajo6
c3RhdGljU3RyaW5nQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFuZGxl
KTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdGF0aWNTdHJpbmdBdHRyQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6c3RhdGljU3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7
Cit9CisKIHN0YXRpYyB2b2lkIHN0YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNF
X1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CkBAIC0xODQsNiArMjQ0LDE4IEBA
IHN0YXRpYyB2b2lkIHN0YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0
cmluZ0F0dHJBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQg
c3RhdGljU3RyaW5nQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChW
OFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKKyAgICBUZXN0T2JqOjpzZXRTdGF0aWNTdHJp
bmdBdHRyKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgc3RhdGljU3RyaW5nQXR0
ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBlbnVtQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE5NSw2ICsyNjcsMTcgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnVtQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmEKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVudW1B
dHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBlbnVtQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhTdHJp
bmcoaW1wLT5lbnVtQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFuZGxl
KTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnVtQXR0ckF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVu
dW1BdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZv
aWQgZW51bUF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAt
MjExLDYgKzI5NCwyMiBAQCBzdGF0aWMgdm9pZCBlbnVtQXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OgogICAgIFRlc3RPYmpWOElu
dGVybmFsOjplbnVtQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0
aWMgdm9pZCBlbnVtQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lEKFY4
U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOworICAgIFN0cmluZyBzdHJpbmcgPSB2OworICAg
IGlmICghKHN0cmluZyA9PSAiIiB8fCBzdHJpbmcgPT0gIkVudW1WYWx1ZTEiIHx8IHN0cmluZyA9
PSAiRW51bVZhbHVlMiIgfHwgc3RyaW5nID09ICJFbnVtVmFsdWUzIikpCisgICAgICAgIHJldHVy
bjsKKyAgICBpbXAtPnNldEVudW1BdHRyKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZv
aWQgZW51bUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjplbnVtQXR0ckF0dHJTZXR0
ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHNob3J0QXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTIyMiw2ICszMjEsMTcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzaG9ydEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2so
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnNo
b3J0QXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gc2hvcnRBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2
OEludGVnZXIoaW1wLT5zaG9ydEF0dHIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNob3J0QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnNob3J0QXR0ckF0dHJH
ZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHNob3J0QXR0
ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0yMzUsNiArMzQ1
LDE5IEBAIHN0YXRpYyB2b2lkIHNob3J0QXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4CiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OnNo
b3J0QXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBz
aG9ydEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRTaG9ydEF0dHIo
dik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBzaG9ydEF0dHJBdHRyU2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RPYmpWOEludGVybmFsOjpzaG9ydEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZh
bHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1bnNpZ25lZFNo
b3J0QXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTI0Niw2ICszNjksMTcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB1bnNpZ25lZFNob3J0QXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djg6OlMKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkU2hvcnRBdHRy
QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB1bnNpZ25lZFNob3J0QXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4g
djhJbnRlZ2VyKGltcC0+dW5zaWduZWRTaG9ydEF0dHIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwor
fQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHVuc2lnbmVkU2hvcnRBdHRyQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5h
bDo6dW5zaWduZWRTaG9ydEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOwor
fQorCiBzdGF0aWMgdm9pZCB1bnNpZ25lZFNob3J0QXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0yNTksNiArMzkzLDE5IEBAIHN0YXRpYyB2b2lkIHVuc2ln
bmVkU2hvcnRBdHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6CiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkU2hvcnRBdHRyQXR0clNldHRl
cihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHVuc2lnbmVkU2hvcnRBdHRy
QXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAg
ICBpbnQgdiA9IHRvVUludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNldFVuc2lnbmVkU2hvcnRBdHRy
KHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgdW5zaWduZWRTaG9ydEF0dHJBdHRy
U2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZFNob3J0QXR0ckF0dHJTZXR0ZXJGb3JN
YWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGxvbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMjcwLDYgKzQxNywxNyBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYQogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0dHJB
dHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGxvbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OEludGVnZXIo
aW1wLT5sb25nQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gbG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGxvbmdBdHRyQXR0clNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTI4Myw2ICs0NDEsMTkgQEAgc3RhdGlj
IHZvaWQgbG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODoKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0dHJBdHRyU2V0
dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgbG9uZ0F0dHJBdHRyU2V0
dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2
ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRMb25nQXR0cih2KTsKKyAgICByZXR1cm47
Cit9CisKK3N0YXRpYyB2b2lkIGxvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6
bG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwog
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBsb25nTG9uZ0F0dHJBdHRyR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBA
IC0yOTQsNiArNDY1LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbG9uZ0xvbmdB
dHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nCiAgICAgcmV0dXJuIFRl
c3RPYmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQog
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGxvbmdMb25nQXR0ckF0dHJHZXR0ZXJGb3JN
YWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KHN0YXRpY19jYXN0PGRvdWJs
ZT4oaW1wLT5sb25nTG9uZ0F0dHIoKSkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGxvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBy
ZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29y
bGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGxvbmdMb25nQXR0ckF0dHJTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0zMDcsNiArNDg5LDE5IEBAIHN0YXRp
YyB2b2lkIGxvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0
dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBsb25nTG9uZ0F0
dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIGxvbmcgbG9uZyB2ID0gdG9JbnQ2NCh2YWx1ZSk7CisgICAgaW1wLT5zZXRMb25nTG9uZ0F0
dHIodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBsb25nTG9uZ0F0dHJBdHRyU2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIFRlc3RPYmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1
bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTMxOCw2ICs1MTMsMTcgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYWw8djgKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnVuc2ln
bmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKKyAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KHN0YXRpY19jYXN0PGRvdWJsZT4oaW1w
LT51bnNpZ25lZExvbmdMb25nQXR0cigpKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0
dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHVuc2ln
bmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
QEAgLTMzMSw2ICs1MzcsMTkgQEAgc3RhdGljIHZvaWQgdW5zaWduZWRMb25nTG9uZ0F0dHJBdHRy
U2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHYKICAgICBUZXN0T2Jq
VjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBp
bmZvKTsKIH0KIAorc3RhdGljIHZvaWQgdW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyB2ID0gdG9JbnQ2NCh2YWx1ZSk7CisgICAgaW1wLT5zZXRVbnNpZ25lZExvbmdMb25n
QXR0cih2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHVuc2lnbmVkTG9uZ0xvbmdB
dHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMzQyLDYgKzU2MSwx
NyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFs
OjpzdHJpbmdBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJl
dHVybiB2OFN0cmluZyhpbXAtPnN0cmluZ0F0dHIoKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVy
blVuc2FmZUhhbmRsZSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5n
QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9i
alY4SW50ZXJuYWw6OnN0cmluZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8p
OworfQorCiBzdGF0aWMgdm9pZCBzdHJpbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKQEAgLTM1NSw2ICs1ODUsMTkgQEAgc3RhdGljIHZvaWQgc3RyaW5nQXR0
ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHYKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFs
dWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBzdHJpbmdBdHRyQXR0clNldHRlckZvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBWOFRSWUNBVENIX0ZPUl9W
OFNUUklOR1JFU09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CisgICAg
aW1wLT5zZXRTdHJpbmdBdHRyKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgc3Ry
aW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJBdHRyU2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0ZXN0T2JqQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTM2Nyw2ICs2MTAsMTggQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0ZXN0T2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFj
ayh2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnRl
c3RPYmpBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0ZXN0T2JqQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1
cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wLT50ZXN0T2JqQXR0cigpLCBpbmZvLCBpbXApOwor
fQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRlc3RPYmpBdHRyQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIEZlYXR1cmVPYnNlcnZlcjo6b2JzZXJ2ZShhY3Rp
dmVET01XaW5kb3coQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpKSwgRmVhdHVyZU9ic2VydmVyOjpU
ZXN0RmVhdHVyZSk7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp0ZXN0T2JqQXR0ckF0
dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RP
YmpBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTM4MSw2
ICs2MzYsMjAgQEAgc3RhdGljIHZvaWQgdGVzdE9iakF0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDwKICAgICBUZXN0T2JqVjhJbnRlcm5h
bDo6dGVzdE9iakF0dHJBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGlj
IHZvaWQgdGVzdE9iakF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZh
bHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBW
OFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6
IDA7CisgICAgaW1wLT5zZXRUZXN0T2JqQXR0cihXVEY6OmdldFB0cih2KSk7CisgICAgcmV0dXJu
OworfQorCitzdGF0aWMgdm9pZCB0ZXN0T2JqQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgRmVhdHVyZU9ic2VydmVy
OjpvYnNlcnZlKGFjdGl2ZURPTVdpbmRvdyhCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCkpLCBGZWF0
dXJlT2JzZXJ2ZXI6OlRlc3RGZWF0dXJlKTsKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9i
akF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBYTUxPYmpBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMzky
LDYgKzY2MSwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFhNTE9iakF0dHJBdHRy
R2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJuIFRlc3RPYmpW
OEludGVybmFsOjpYTUxPYmpBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBYTUxPYmpBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXAtPnhtbE9iakF0dHIoKSwgaW5m
bywgaW1wKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBYTUxPYmpBdHRyQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6WE1MT2JqQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisK
IHN0YXRpYyB2b2lkIFhNTE9iakF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOwpAQCAtNDA1LDYgKzY4NSwxOSBAQCBzdGF0aWMgdm9pZCBYTUxPYmpBdHRyQXR0clNl
dHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8dgogICAg
IFRlc3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5m
byk7CiB9CiAKK3N0YXRpYyB2b2lkIFhNTE9iakF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6
Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0
SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QodmFsdWUpKSA6IDA7CisgICAgaW1wLT5zZXRYTUxPYmpBdHRyKFdURjo6Z2V0UHRyKHYp
KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIFhNTE9iakF0dHJBdHRyU2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2
YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlQXR0
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwpAQCAtNDE2LDYgKzcwOSwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNyZWF0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZQog
ICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0ckdldHRlcihuYW1lLCBpbmZv
KTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4Qm9vbGVhbihpbXAtPmlzQ3JlYXRlKCksIGluZm8u
R2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOElu
dGVybmFsOjpjcmVhdGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBz
dGF0aWMgdm9pZCBjcmVhdGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwpAQCAtNDI5LDYgKzczMywxOSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVBdHRyU2V0dGVyQ2FsbGJh
Y2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VgogICAgIFRlc3RP
YmpWOEludGVybmFsOjpjcmVhdGVBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAor
c3RhdGljIHZvaWQgY3JlYXRlQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICBib29sIHYgPSB2YWx1ZS0+Qm9vbGVhblZhbHVlKCk7CisgICAg
aW1wLT5zZXRDcmVhdGUodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBjcmVhdGVB
dHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpjcmVhdGVBdHRyU2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBy
ZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNDQwLDYgKzc1NywxNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVj
dGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKKyAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5mYXN0R2V0QXR0cmlidXRlKFdlYkNvcmU6OkhU
TUxOYW1lczo6cmVmbGVjdGVkc3RyaW5nYXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0
dXJuVW5zYWZlSGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZs
ZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJl
dHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JN
YWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFN0cmluZ0F0
dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNDUzLDYgKzc4
MSwxOSBAQCBzdGF0aWMgdm9pZCByZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNr
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2OAogICAgIFRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0
YXRpYyB2b2lkIHJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVT
T1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hlY2s+LCB2LCB2YWx1ZSk7Cisg
ICAgaW1wLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJpbmdh
dHRyQXR0ciwgdik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRTdHJp
bmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0
dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAg
LTQ2NCw3ICs4MDUsMTggQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRJ
bnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHYKICAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5m
byk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBy
ZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJu
IHY4SW50ZWdlcihpbXAtPmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6
cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0ciksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOwor
fQorCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CkBAIC00
NzcsNiArODI5LDE5IEBAIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKICAgICBUZXN0T2JqVjhJbnRl
cm5hbDo6cmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7
CiB9CiAKK3N0YXRpYyB2b2lkIHJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0ZXJGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMy
KHZhbHVlKTsKKyAgICBpbXAtPnNldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0ciwgdik7CisgICAgcmV0dXJuOworfQorCitzdGF0
aWMgdm9pZCByZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFs
OjpyZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVl
LCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRVbnNp
Z25lZEludGVncmFsQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTQ4OCw2ICs4NTMsMTcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFjayh2ODoKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJH
ZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhVbnNpZ25lZEludGVnZXIoc3RkOjpt
YXgoMCwgaW1wLT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxl
Y3RlZHVuc2lnbmVkaW50ZWdyYWxhdHRyQXR0cikpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0
dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpW
OEludGVybmFsOjpyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFVuc2lnbmVkSW50
ZWdyYWxBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTUw
MSw2ICs4NzcsMTkgQEAgc3RhdGljIHZvaWQgcmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJB
dHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmcKICAgICBUZXN0T2JqVjhJbnRl
cm5hbDo6cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyKG5hbWUsIHZhbHVl
LCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgcmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAg
IHVuc2lnbmVkIHYgPSB0b1VJbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRVbnNpZ25lZEludGVn
cmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdW5zaWduZWRpbnRlZ3Jh
bGF0dHJBdHRyLCB2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHJlZmxlY3RlZFVu
c2lnbmVkSW50ZWdyYWxBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVk
VW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBp
bmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRCb29sZWFu
QXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKQEAgLTUxMiw2ICs5MDEsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiByZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djgKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRy
QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiByZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1
cm4gdjhCb29sZWFuKGltcC0+ZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJl
ZmxlY3RlZGJvb2xlYW5hdHRyQXR0ciksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxl
Y3RlZEJvb2xlYW5BdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwog
c3RhdGljIHZvaWQgcmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwpAQCAtNTI1LDYgKzkyNSwxOSBAQCBzdGF0aWMgdm9pZCByZWZsZWN0
ZWRCb29sZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdgogICAgIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJTZXR0
ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRCb29sZWFu
QXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CisgICAgYm9vbCB2ID0gdmFsdWUtPkJvb2xlYW5WYWx1ZSgpOworICAgIGltcC0+c2V0Qm9vbGVh
bkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGJvb2xlYW5hdHRyQXR0ciwg
dik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRCb29sZWFuQXR0ckF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0clNldHRl
ckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gcmVmbGVjdGVkVVJMQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTUzNiw2ICs5NDks
MTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRVUkxBdHRyQXR0ckdl
dHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZFVSTEF0dHJBdHRyR2V0dGVyRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+Z2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6
OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0
dXJuVW5zYWZlSGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZs
ZWN0ZWRVUkxBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVy
biBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29y
bGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFVSTEF0dHJBdHRyU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNTQ5LDYgKzk3MywxOSBAQCBz
dGF0aWMgdm9pZCByZWZsZWN0ZWRVUkxBdHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TAogICAgIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRV
UkxBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHJl
ZmxlY3RlZFVSTEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0
cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hlY2s+LCB2LCB2YWx1ZSk7CisgICAgaW1wLT5zZXRBdHRy
aWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0ciwgdik7CisgICAg
cmV0dXJuOworfQorCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRVUkxBdHRyQXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFt
ZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxl
Y3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC01NjAsNiArOTk3LDE3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFj
ayh2ODo6TG9jYWw8djg6CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRT
dHJpbmdBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiByZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmZhc3RHZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5h
bWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0
dXJuVW5zYWZlSGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZs
ZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJl
dHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JN
YWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFN0cmluZ0F0
dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNTczLDYgKzEw
MjEsMTkgQEAgc3RhdGljIHZvaWQgcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFj
ayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjgKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6
cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitz
dGF0aWMgdm9pZCByZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JF
U09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTxXaXRoTnVsbENoZWNrPiwgdiwgdmFsdWUpOwor
ICAgIGltcC0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFN0
cmluZ0F0dHJBdHRyLCB2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHJlZmxlY3Rl
ZFN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdB
dHRyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0ckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOwpAQCAtNTg0LDYgKzEwNDUsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiByZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkwKICAg
ICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0
dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
cmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAg
IHJldHVybiB2OEludGVnZXIoaW1wLT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1M
TmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJBdHRyKSwgaW5mby5HZXRJc29sYXRlKCkp
OworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZEN1c3RvbUludGVn
cmFsQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJHZXR0ZXJGb3JN
YWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbUlu
dGVncmFsQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC01
OTcsNiArMTA2OSwxOSBAQCBzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJB
dHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgVGVzdE9ialY4SW50
ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUs
IGluZm8pOwogfQogCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGlu
dCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJD
b3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJBdHRyLCB2KTsKKyAgICBy
ZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0ckdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpA
QCAtNjA4LDYgKzEwOTMsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0
ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG8KICAgICByZXR1cm4g
VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0ckdldHRlcihu
YW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRD
dXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhC
b29sZWFuKGltcC0+ZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNv
bnRlbnRCb29sZWFuQXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5m
byk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTYyMSw2ICsxMTE3LDE5IEBAIHN0
YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlckNhbGxiYWNrKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1
c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRp
YyB2b2lkIHJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBib29sIHYgPSB2YWx1ZS0+Qm9vbGVh
blZhbHVlKCk7CisgICAgaW1wLT5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0ciwgdik7CisgICAgcmV0dXJuOworfQorCitz
dGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4
SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlckZvck1haW5Xb3Js
ZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTYzMiw2ICsxMTQxLDE3IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0ckdldHRlckZv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmdldFVSTEF0dHJpYnV0ZShX
ZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0ciksIGluZm8uR2V0SXNv
bGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxB
dHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQg
cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CkBAIC02NDUsNiArMTE2NSwxOSBAQCBzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21V
UkxBdHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogICAg
IFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlcihuYW1l
LCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbVVSTEF0dHJB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAg
IFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPFdp
dGhOdWxsQ2hlY2s+LCB2LCB2YWx1ZSk7CisgICAgaW1wLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6
SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIsIHYpOworICAgIHJldHVybjsKK30K
Kworc3RhdGljIHZvaWQgcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4
SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5h
bWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0eXBl
ZEFycmF5QXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTY1Niw2ICsxMTg5LDE3IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdHlwZWRBcnJheUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6Okxv
Y2FsPHY4OjpTdHJpCiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5QXR0
ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdHlwZWRBcnJheUF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHRv
VjhGYXN0Rm9yTWFpbldvcmxkKGltcC0+dHlwZWRBcnJheUF0dHIoKSwgaW5mbywgaW1wKTsKK30K
Kworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0eXBlZEFycmF5QXR0ckF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnR5
cGVkQXJyYXlBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3Rh
dGljIHZvaWQgdHlwZWRBcnJheUF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOwpAQCAtNjY5LDYgKzEyMTMsMTkgQEAgc3RhdGljIHZvaWQgdHlwZWRBcnJheUF0dHJB
dHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2MKICAg
ICBUZXN0T2JqVjhJbnRlcm5hbDo6dHlwZWRBcnJheUF0dHJBdHRyU2V0dGVyKG5hbWUsIHZhbHVl
LCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgdHlwZWRBcnJheUF0dHJBdHRyU2V0dGVyRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIEZsb2F0MzJBcnJheSog
diA9IFY4RmxvYXQzMkFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhGbG9hdDMyQXJyYXk6OnRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgaW1wLT5zZXRU
eXBlZEFycmF5QXR0cihXVEY6OmdldFB0cih2KSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMg
dm9pZCB0eXBlZEFycmF5QXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJy
YXlBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CkBAIC02ODQsNiArMTI0MSwyMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbAogICAg
IHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0
dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIGludCB2ID0gaW1wLT5hdHRyV2l0aEdldHRlckV4Y2VwdGlvbihl
Yyk7CisgICAgaWYgKFVOTElLRUxZKGVjKSkKKyAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlv
bihlYywgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB2OEludGVnZXIodiwgaW5mby5H
ZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJl
dHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBhdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC02
OTcsNiArMTI2OSwxOSBAQCBzdGF0aWMgdm9pZCBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJT
ZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZQogICAgIFRlc3RPYmpWOElu
dGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGlu
Zm8pOwogfQogCitzdGF0aWMgdm9pZCBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJG
b3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0
b0ludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKHYpOwor
ICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRy
U2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0
ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNzA4
LDYgKzEyOTMsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWwKICAgICByZXR1cm4gVGVzdE9i
alY4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcihuYW1lLCBpbmZv
KTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+
YXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6
YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8p
OworfQorCiBzdGF0aWMgdm9pZCBhdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC03MjQsNiArMTMyMCwyMiBAQCBzdGF0aWMg
dm9pZCBhdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZQogICAgIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4
Y2VwdGlvbkF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBh
dHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXAtPnNldEF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKHYs
IGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAgICAgICBzZXRET01FeGNlcHRpb24oZWMs
IGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsK
K30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTczOSw2ICsxMzUxLDIxIEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU3RyaW5nIHYgPSBp
bXAtPnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKTsKKyAgICBpZiAoVU5MSUtFTFko
ZWMpKQorICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xhdGUo
KSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKHYsIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNh
ZmVIYW5kbGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25B
dHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBzdHJp
bmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CkBAIC03NTIsNiArMTM3OSwxOSBAQCBzdGF0aWMgdm9pZCBzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZwog
ICAgIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJT
ZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lEKFY4
U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOworICAgIGltcC0+c2V0U3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24odik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBzdHJpbmdB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmlu
Z0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1
ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC03NjMsNiArMTQwMywxNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0
ckdldHRlckNhbGxiYWNrKHY4OgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0
ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPnN0cmluZ0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVI
YW5kbGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJl
dHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRy
R2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBzdHJpbmdB
dHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CkBAIC03NzksMTYgKzE0MzAsNDIgQEAgc3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmcKICAg
ICBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0
dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0
cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBpbXAtPnNldFN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKHYsIGVjKTsKKyAgICBpZiAo
VU5MSUtFTFkoZWMpKQorICAgICAgICBzZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0
ZSgpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30K
Kwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXN0b21BdHRyQXR0ckdldHRlckNhbGxi
YWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIHJldHVybiBWOFRlc3RPYmo6OmN1c3RvbUF0dHJBdHRyR2V0dGVyQ3VzdG9t
KG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGN1c3RvbUF0
dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFY4VGVzdE9i
ajo6Y3VzdG9tQXR0ckF0dHJHZXR0ZXJDdXN0b20obmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2
b2lkIGN1c3RvbUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIFY4VGVzdE9iajo6Y3VzdG9tQXR0ckF0dHJTZXR0ZXJDdXN0b20obmFtZSwg
dmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBjdXN0b21BdHRyQXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBWOFRl
c3RPYmo6OmN1c3RvbUF0dHJBdHRyU2V0dGVyQ3VzdG9tKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30K
Kwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVB
dHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CkBAIC04MDQsNiArMTQ4MSwyMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YQogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAg
U2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAg
aWYgKCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworICAgIFNj
cmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CisgICAgcmV0dXJuIHY4SW50ZWdlcihp
bXAtPndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgmc3RhdGUpLCBpbmZvLkdldElzb2xhdGUoKSk7
Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2Jq
VjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3Js
ZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTgyMyw2ICsxNTE1
LDI1IEBAIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxs
YmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6Ondp
dGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQog
CitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2ID0gdG9JbnQzMih2
YWx1ZSk7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJy
ZW50KCk7CisgICAgaWYgKCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBTY3Jp
cHRTdGF0ZSYgc3RhdGUgPSAqY3VycmVudFN0YXRlOworICAgIGltcC0+c2V0V2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlKCZzdGF0ZSwgdik7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpLCBpbmZvLkdldElzb2xhdGUoKSk7
CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVB
dHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKQEAgLTgzNSw2ICsxNTQ2LDE4IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhCiAg
ICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9
IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWlu
V29ybGQoaW1wLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShzY3JpcHRDb250
ZXh0KSwgaW5mbywgaW1wKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30K
Kwogc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtODQ5LDYgKzE1NzIsMjAgQEAg
c3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVy
Q2FsbGJhY2sodjg6OkxvY2FsPHY4OjoKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsK
IH0KIAorc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFRl
c3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUo
KSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
KyAgICBpbXAtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKHNjcmlwdENv
bnRleHQsIFdURjo6Z2V0UHRyKHYpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRl
cm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFp
bldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC04NzAs
NiArMTYwNywyNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFjayh2OAogICAgIHJldHVybiBUZXN0T2Jq
VjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlcihuYW1l
LCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRl
OjpjdXJyZW50KCk7CisgICAgaWYgKCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOworICAgIFNjcmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CisgICAg
UmVmUHRyPFRlc3RPYmo+IHYgPSBpbXAtPndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygm
c3RhdGUsIGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAgICAgICByZXR1cm4gc2V0RE9N
RXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgaW5m
by5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZCh2LnJlbGVh
c2UoKSwgaW5mbywgaW1wKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXNBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMg
dm9pZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtODg5LDYgKzE2NDcsMjUgQEAgc3RhdGljIHZvaWQgd2l0
aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2
ODo6U3RyaW4KICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHdp
dGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFz
SW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29s
YXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh2YWx1ZSkpIDogMDsKKyAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3Rh
dGU6OmN1cnJlbnQoKTsKKyAgICBpZiAoIWN1cnJlbnRTdGF0ZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIFNjcmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CisgICAgaW1wLT5zZXRXaXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoJnN0YXRlLCBXVEY6OmdldFB0cih2KSk7CisgICAg
aWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQorICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLmV4Y2Vw
dGlvbigpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9p
ZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAg
LTkwNSw2ICsxNjgyLDIyIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyCiAgICAgcmV0dXJuIFRl
c3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNl
c0F0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
KyAgICBSZWZQdHI8VGVzdE9iaj4gdiA9IGltcC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
dHRyaWJ1dGVSYWlzZXMoc2NyaXB0Q29udGV4dCwgZWMpOworICAgIGlmIChVTkxJS0VMWShlYykp
CisgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTsK
KyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQodi5yZWxlYXNlKCksIGluZm8sIGltcCk7
Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0
YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0clNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTkxOSw2ICsxNzEyLDIwIEBA
IHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0
clNldHRlckNhbGxiYWNrKHY4OjpMb2NhCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0clNldHRlcihuYW1lLCB2YWx1ZSwg
aW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5m
by5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2Jq
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CisgICAgaW1wLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZVJhaXNlcyhzY3JpcHRDb250ZXh0LCBXVEY6OmdldFB0cih2KSk7CisgICAgcmV0dXJuOwor
fQorCitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNl
c0F0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlUmFpc2VzQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7
Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTkzNSw2ICsxNzQy
LDIyIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0
ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRl
ckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOworICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRT
dGF0ZTo6Y3VycmVudCgpOworICAgIGlmICghY3VycmVudFN0YXRlKQorICAgICAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKKyAgICBTY3JpcHRTdGF0ZSYgc3RhdGUgPSAqY3VycmVudFN0YXRlOwor
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcC0+d2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgmc3RhdGUsIHNj
cmlwdENvbnRleHQpLCBpbmZvLCBpbXApOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0
ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC05NTUsNiArMTc3OCwyNiBAQCBzdGF0aWMg
dm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0
clNldHRlckNhbGxiYWNrKAogICAgIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlcihuYW1lLCB2YWx1ZSwg
aW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZh
bHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBW
OFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6
IDA7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50
KCk7CisgICAgaWYgKCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBTY3JpcHRT
dGF0ZSYgc3RhdGUgPSAqY3VycmVudFN0YXRlOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaW1wLT5z
ZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKCZzdGF0
ZSwgc2NyaXB0Q29udGV4dCwgV1RGOjpnZXRQdHIodikpOworICAgIGlmIChzdGF0ZS5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgaW5mby5HZXRJ
c29sYXRlKCkpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50
ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtOTc3LDYgKzE4MjAsMjggQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlUmEKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0
dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU2NyaXB0
U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAgaWYgKCFj
dXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworICAgIFNjcmlwdFN0
YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBSZWZQdHI8
VGVzdE9iaj4gdiA9IGltcC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlcygmc3RhdGUsIHNjcmlwdENvbnRleHQsIGVjKTsKKyAgICBpZiAoVU5M
SUtFTFkoZWMpKQorICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElz
b2xhdGUoKSk7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJl
dHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZCh2LnJlbGVhc2UoKSwgaW5mbywgaW1wKTsKK30KKwor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJGb3JNYWluV29ybGQo
bmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwpAQCAtOTk3LDYgKzE4NjIsMjYgQEAgc3RhdGljIHZvaWQgd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJD
YWwKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwog
fQogCitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1
ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhU
ZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAw
OworICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgp
OworICAgIGlmICghY3VycmVudFN0YXRlKQorICAgICAgICByZXR1cm47CisgICAgU2NyaXB0U3Rh
dGUmIHN0YXRlID0gKmN1cnJlbnRTdGF0ZTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGltcC0+c2V0
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygm
c3RhdGUsIHNjcmlwdENvbnRleHQsIFdURjo6Z2V0UHRyKHYpKTsKKyAgICBpZiAoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCksIGluZm8u
R2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7
Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0x
MDEzLDYgKzE4OTgsMjIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0EKICAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVX
aXRoU3BhY2VzQXR0cmlidXRlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBTY3Jp
cHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKKyAgICBpZiAo
IWN1cnJlbnRTdGF0ZSkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgU2NyaXB0
U3RhdGUmIHN0YXRlID0gKmN1cnJlbnRTdGF0ZTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIHJldHVy
biB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXAtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCZzdGF0ZSwgc2NyaXB0Q29udGV4dCksIGlu
Zm8sIGltcCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRl
QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEwMzMsNiArMTkz
NCwyNiBAQCBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJTZXR0ZQogICAgIFRlc3RPYmpWOEludGVybmFsOjp3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCB3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgVGVz
dE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgp
LCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBTY3JpcHRTdGF0ZSog
Y3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKKyAgICBpZiAoIWN1cnJlbnRT
dGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIFNjcmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50
U3RhdGU7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpbXAtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCZzdGF0ZSwgc2NyaXB0Q29u
dGV4dCwgV1RGOjpnZXRQdHIodikpOworICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkpOwor
ICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0
dHJpYnV0ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3Rh
Y2tBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMDQ0LDYgKzE5NjUsMTcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmli
dXRlQXR0ckdldHRlckMKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRB
cmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQog
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxs
U3RhY2tBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHRvVjhG
YXN0Rm9yTWFpbldvcmxkKGltcC0+d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJp
YnV0ZSgpLCBpbmZvLCBpbXApOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdp
dGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0
QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1l
LCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFj
a0F0dHJpYnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0x
MDU3LDYgKzE5ODksMTkgQEAgc3RhdGljIHZvaWQgd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxT
dGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWwKICAgICBUZXN0T2JqVjhJ
bnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJTZXR0
ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0QXJndW1l
bnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0
YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUo
KSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZh
bHVlKSkgOiAwOworICAgIGltcC0+c2V0V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0
dHJpYnV0ZShXVEY6OmdldFB0cih2KSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCB3
aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNr
Rm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2Jq
VjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxBdHRy
MUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCkBAIC0xMDc4LDYgKzIwMjMsMjUgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjb25kaXRpb25hbEF0dHIxQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6
U3QKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNvbmRpdGlvbmFsQXR0cjFBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJu
IHY4SW50ZWdlcihpbXAtPmNvbmRpdGlvbmFsQXR0cjEoKSwgaW5mby5HZXRJc29sYXRlKCkpOwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9u
MSkKKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRpb25hbEF0dHIxQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5h
bDo6Y29uZGl0aW9uYWxBdHRyMUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkKKworI2lmIEVOQUJMRShDb25kaXRpb24x
KQorCiBzdGF0aWMgdm9pZCBjb25kaXRpb25hbEF0dHIxQXR0clNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEwOTcsNiArMjA2MSwyNyBAQCBzdGF0aWMgdm9pZCBjb25k
aXRpb25hbEF0dHIxQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TAogCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpCiAKKyNpZiBFTkFCTEUoQ29u
ZGl0aW9uMSkKKworc3RhdGljIHZvaWQgY29uZGl0aW9uYWxBdHRyMUF0dHJTZXR0ZXJGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMy
KHZhbHVlKTsKKyAgICBpbXAtPnNldENvbmRpdGlvbmFsQXR0cjEodik7CisgICAgcmV0dXJuOwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9u
MSkKKworc3RhdGljIHZvaWQgY29uZGl0aW9uYWxBdHRyMUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50
ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjFBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVl
LCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKQorCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGNvbmRpdGlvbmFsQXR0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtMTExOCw2ICsyMTAzLDI1
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxBdHRyMkF0dHJHZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYg
RU5BQkxFKENvbmRpdGlvbjIpCiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0
aW9uYWxBdHRyMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2Vy
KGltcC0+Y29uZGl0aW9uYWxBdHRyMigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCisKKyNpZiBFTkFC
TEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCisKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxBdHRyMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENv
bmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjEp
ICYmIEVOQUJMRShDb25kaXRpb24yKQorCiBzdGF0aWMgdm9pZCBjb25kaXRpb25hbEF0dHIyQXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTExMzcsNiArMjE0MSwy
NyBAQCBzdGF0aWMgdm9pZCBjb25kaXRpb25hbEF0dHIyQXR0clNldHRlckNhbGxiYWNrKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TAogCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlv
bjEpICYmIEVOQUJMRShDb25kaXRpb24yKQogCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVO
QUJMRShDb25kaXRpb24yKQorCitzdGF0aWMgdm9pZCBjb25kaXRpb25hbEF0dHIyQXR0clNldHRl
ckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBpbnQgdiA9
IHRvSW50MzIodmFsdWUpOworICAgIGltcC0+c2V0Q29uZGl0aW9uYWxBdHRyMih2KTsKKyAgICBy
ZXR1cm47Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRp
dGlvbjIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCisK
K3N0YXRpYyB2b2lkIGNvbmRpdGlvbmFsQXR0cjJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFs
Ojpjb25kaXRpb25hbEF0dHIyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5m
byk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlv
bjIpCisKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBA
IC0xMTU4LDYgKzIxODMsMjUgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRp
b25hbEF0dHIzQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKIAogI2lmIEVOQUJM
RShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKIAorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjb25kaXRpb25hbEF0dHIzQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAg
IHJldHVybiB2OEludGVnZXIoaW1wLT5jb25kaXRpb25hbEF0dHIzKCksIGluZm8uR2V0SXNvbGF0
ZSgpKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKKwor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRpb25hbEF0dHIzQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6Y29u
ZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisKIHN0YXRpYyB2b2lkIGNv
bmRpdGlvbmFsQXR0cjNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpA
QCAtMTE3Nyw2ICsyMjIxLDI3IEBAIHN0YXRpYyB2b2lkIGNvbmRpdGlvbmFsQXR0cjNBdHRyU2V0
dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMCiAKICNlbmRpZiAv
LyBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisKK3N0YXRpYyB2b2lkIGNvbmRpdGlv
bmFsQXR0cjNBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRDb25kaXRpb25h
bEF0dHIzKHYpOworICAgIHJldHVybjsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24x
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMikKKworc3RhdGljIHZvaWQgY29uZGl0aW9uYWxBdHRyM0F0dHJTZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
VGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjNBdHRyU2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMikKKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNo
ZWRBdHRyaWJ1dGUxQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTE4OCw2ICsyMjUzLDE3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FjaGVkQXR0cmlidXRlMUF0dHJHZXR0ZXJDYWxsYmFjayh2
ODo6TG9jYWw8djg6OlN0CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpjYWNoZWRBdHRy
aWJ1dGUxQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjYWNoZWRBdHRyaWJ1dGUxQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJl
dHVybiBpbXAtPmNhY2hlZEF0dHJpYnV0ZTEoKS52OFZhbHVlKCk7Cit9CisKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY2FjaGVkQXR0cmlidXRlMUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0
ZTFBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMTk5LDYg
KzIyNzUsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRBdHRyaWJ1dGUy
QXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKICAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIGltcC0+Y2FjaGVkQXR0cmlidXRlMigpLnY4VmFsdWUo
KTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRBdHRyaWJ1dGUyQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6Y2FjaGVkQXR0cmlidXRlMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7
Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYW55QXR0cmlidXRlQXR0ckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwpAQCAtMTIxMCw2ICsyMjk3LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
YW55QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nCiAgICAg
cmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjphbnlBdHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGlu
Zm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFueUF0dHJpYnV0ZUF0dHJH
ZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gaW1wLT5hbnlBdHRyaWJ1dGUoKS52OFZh
bHVlKCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYW55QXR0cmlidXRlQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6YW55QXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30K
Kwogc3RhdGljIHZvaWQgYW55QXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKQEAgLTEyMjMsNiArMjMyMSwxOSBAQCBzdGF0aWMgdm9pZCBhbnlBdHRyaWJ1
dGVBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bAogICAgIFRlc3RPYmpWOEludGVybmFsOjphbnlBdHRyaWJ1dGVBdHRyU2V0dGVyKG5hbWUsIHZh
bHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgYW55QXR0cmlidXRlQXR0clNldHRlckZvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBTY3JpcHRWYWx1ZSB2
ID0gU2NyaXB0VmFsdWUodmFsdWUpOworICAgIGltcC0+c2V0QW55QXR0cmlidXRlKFdURjo6Z2V0
UHRyKHYpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGFueUF0dHJpYnV0ZUF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OmFueUF0dHJpYnV0ZUF0dHJTZXR0ZXJGb3JNYWluV29y
bGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEyMzQsNiArMjM0NSwxNyBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJH
ZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8dgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6
ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPmVuYWJsZWRBdFJ1bnRpbWVB
dHRyMSgpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIx
QXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgZW5h
YmxlZEF0UnVudGltZUF0dHIxQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKQEAgLTEyNDcsNiArMjM2OSwxOSBAQCBzdGF0aWMgdm9pZCBlbmFibGVkQXRSdW50aW1lQXR0
cjFBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAgICAgVGVz
dE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXIobmFtZSwgdmFs
dWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBlbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyU2V0
dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2
ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRFbmFibGVkQXRSdW50aW1lQXR0cjEodik7
CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBlbmFibGVkQXRSdW50aW1lQXR0cjFBdHRy
U2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyU2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBlbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMjU4LDYg
KzIzOTMsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkQXRSdW50aW1l
QXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHYKICAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9
CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0
ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5lbmFibGVk
QXRSdW50aW1lQXR0cjIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1
bnRpbWVBdHRyMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRp
YyB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CkBAIC0xMjcxLDYgKzI0MTcsMTkgQEAgc3RhdGljIHZvaWQgZW5hYmxlZEF0
UnVudGltZUF0dHIyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LAogICAgIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyU2V0dGVy
KG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGltZUF0
dHIyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
KyAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOworICAgIGltcC0+c2V0RW5hYmxlZEF0UnVudGlt
ZUF0dHIyKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGlt
ZUF0dHIyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIy
QXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
QEAgLTEzMzAsNiArMjQ4OSwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGZsb2F0
QXJyYXlBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJu
IFRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFycmF5QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0K
IAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmbG9hdEFycmF5QXR0ckdldHRlckZvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIHJldHVybiB2OEFycmF5KGltcC0+ZmxvYXRBcnJheSgpLCBpbmZvLkdl
dElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZmxvYXRBcnJh
eUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOwor
fQorCiBzdGF0aWMgdm9pZCBmbG9hdEFycmF5QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKQEAgLTEzNDMsNiArMjUxMywxOSBAQCBzdGF0aWMgdm9pZCBmbG9hdEFycmF5
QXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
dgogICAgIFRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFycmF5QXR0clNldHRlcihuYW1lLCB2YWx1
ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIGZsb2F0QXJyYXlBdHRyU2V0dGVyRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFZlY3RvcjxmbG9hdD4gdiA9
IHRvTmF0aXZlQXJyYXk8ZmxvYXQ+KHZhbHVlKTsKKyAgICBpbXAtPnNldEZsb2F0QXJyYXkodik7
CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBmbG9hdEFycmF5QXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqVjhJbnRlcm5hbDo6ZmxvYXRBcnJheUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFs
dWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRvdWJsZUFycmF5
QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwpAQCAtMTM1NCw2ICsyNTM3LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZG91YmxlQXJyYXlBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJp
bmc+CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0dHJHZXR0ZXIo
bmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZG91YmxlQXJy
YXlBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4QXJyYXkoaW1wLT5kb3Vi
bGVBcnJheSgpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZG91YmxlQXJyYXlBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGRvdWJsZUFycmF5QXR0clNldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEzNjcsNiArMjU2MSwxOSBAQCBz
dGF0aWMgdm9pZCBkb3VibGVBcnJheUF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPAogICAgIFRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJh
eUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBkb3VibGVB
cnJheUF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CisgICAgVmVjdG9yPGRvdWJsZT4gdiA9IHRvTmF0aXZlQXJyYXk8ZG91YmxlPih2YWx1ZSk7Cisg
ICAgaW1wLT5zZXREb3VibGVBcnJheSh2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lk
IGRvdWJsZUFycmF5QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6ZG91YmxlQXJyYXlBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBjb250ZW50RG9jdW1lbnRBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMzgxLDYg
KzI1ODgsMjAgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb250ZW50RG9jdW1lbnRB
dHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHIKICAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6OmNvbnRlbnREb2N1bWVudEF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udGVudERvY3VtZW50QXR0ckdldHRlckZvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1Rv
Tm9kZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+Y29udGVudERvY3VtZW50KCkpKQor
ICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4TnVsbChpbmZvLkdldElzb2xh
dGUoKSkpOworCisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcC0+Y29udGVudERv
Y3VtZW50KCksIGluZm8sIGltcCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
Y29udGVudERvY3VtZW50QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJl
dHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6Y29udGVudERvY3VtZW50QXR0ckdldHRlckZvck1haW5X
b3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtdXRh
YmxlUG9pbnRBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMzkyLDYgKzI2MTMsMTcgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBtdXRhYmxlUG9pbnRBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2Fs
PHY4OjpTdHJpbmcKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0
dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
bXV0YWJsZVBvaW50QXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB0b1Y4RmFz
dEZvck1haW5Xb3JsZChXVEY6OmdldFB0cihTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8VGVzdE9i
aiwgRmxvYXRQb2ludD46OmNyZWF0ZShpbXAsIGltcC0+bXV0YWJsZVBvaW50KCksICZUZXN0T2Jq
Ojp1cGRhdGVNdXRhYmxlUG9pbnQpKSwgaW5mbywgaW1wKTsKK30KKworc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBtdXRhYmxlUG9pbnRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBtdXRhYmxlUG9pbnRB
dHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTQwNSw2ICsyNjM3
LDE5IEBAIHN0YXRpYyB2b2lkIG11dGFibGVQb2ludEF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6Om11
dGFibGVQb2ludEF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9p
ZCBtdXRhYmxlUG9pbnRBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIFJlZlB0cjxTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD4gPiB2
ID0gVjhTVkdQb2ludDo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3Js
ZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4U1ZHUG9pbnQ6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgaW1wLT5zZXRNdXRhYmxlUG9p
bnQoV1RGOjpnZXRQdHIodikpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgbXV0YWJs
ZVBvaW50QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50QXR0clNldHRl
ckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gaW1tdXRhYmxlUG9pbnRBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNDE2LDYgKzI2NjEs
MTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbW11dGFibGVQb2ludEF0dHJHZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmkKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJu
YWw6OmltbXV0YWJsZVBvaW50QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBpbW11dGFibGVQb2ludEF0dHJHZXR0ZXJGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoV1RGOjpnZXRQdHIoU1ZHUHJvcGVy
dHlUZWFyT2ZmPEZsb2F0UG9pbnQ+OjpjcmVhdGUoaW1wLT5pbW11dGFibGVQb2ludCgpKSksIGlu
Zm8sIGltcCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW1tdXRhYmxlUG9p
bnRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpW
OEludGVybmFsOjppbW11dGFibGVQb2ludEF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5m
byk7Cit9CisKIHN0YXRpYyB2b2lkIGltbXV0YWJsZVBvaW50QXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE0MjksNiArMjY4NSwxOSBAQCBzdGF0aWMgdm9pZCBp
bW11dGFibGVQb2ludEF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvYwogICAgIFRlc3RPYmpWOEludGVybmFsOjppbW11dGFibGVQb2ludEF0dHJTZXR0
ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBpbW11dGFibGVQb2ludEF0
dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAg
UmVmUHRyPFNWR1Byb3BlcnR5VGVhck9mZjxGbG9hdFBvaW50PiA+IHYgPSBWOFNWR1BvaW50OjpI
YXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElz
b2xhdGUoKSkpID8gVjhTVkdQb2ludDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBpbXAtPnNldEltbXV0YWJsZVBvaW50KFdURjo6Z2V0UHRy
KHYpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGltbXV0YWJsZVBvaW50QXR0clNl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRyU2V0dGVyRm9yTWFpbldv
cmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBzdHJhd2JlcnJ5QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTQ0MCw2ICsyNzA5LDE3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyYXdiZXJyeUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djg6OlN0cmluZz4KICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnN0cmF3YmVycnlB
dHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHN0cmF3YmVycnlBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdl
cihpbXAtPmJsdWViZXJyeSgpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc3RyYXdiZXJyeUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnN0cmF3YmVycnlBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBzdHJhd2JlcnJ5QXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE0NTMsNiArMjczMywx
OSBAQCBzdGF0aWMgdm9pZCBzdHJhd2JlcnJ5QXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8dgogICAgIFRlc3RPYmpWOEludGVybmFsOjpzdHJh
d2JlcnJ5QXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHN0
cmF3YmVycnlBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRCbHVlYmVycnko
dik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBzdHJhd2JlcnJ5QXR0clNldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJyeUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwg
dmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmljdEZs
b2F0QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwpAQCAtMTQ2NCw2ICsyNzU3LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gc3RyaWN0RmxvYXRBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpT
dHJpbmc+CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGbG9hdEF0dHJHZXR0
ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaWN0
RmxvYXRBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5l
dyhpbXAtPnN0cmljdEZsb2F0KCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHN0cmljdEZsb2F0QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVy
biBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5h
bWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBzdHJpY3RGbG9hdEF0dHJTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNDc3LDYgKzI3ODEsMTkgQEAgc3RhdGljIHZv
aWQgc3RyaWN0RmxvYXRBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDwKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRyU2V0
dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgc3RyaWN0RmxvYXRBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGZs
b2F0IHYgPSBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUtPk51bWJlclZhbHVlKCkpOworICAgIGlt
cC0+c2V0U3RyaWN0RmxvYXQodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBzdHJp
Y3RGbG9hdEF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZsb2F0QXR0clNldHRl
ckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gZGVzY3JpcHRpb25BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNDg4LDYgKzI4MDUsMTcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkZXNjcmlwdGlvbkF0dHJHZXR0ZXJDYWxs
YmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6
OmRlc2NyaXB0aW9uQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBkZXNjcmlwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBy
ZXR1cm4gdjhJbnRlZ2VyKGltcC0+ZGVzY3JpcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkpOwor
fQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2NyaXB0aW9uQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZGVz
Y3JpcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGlkQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTQ5OSw2ICsyODI3LDE3
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaWRBdHRyR2V0dGVyQ2FsbGJhY2sodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvCiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFs
OjppZEF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gaWRBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcihp
bXAtPmlkKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBpZEF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4g
VGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsK
K30KKwogc3RhdGljIHZvaWQgaWRBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwpAQCAtMTUxMiw2ICsyODUxLDE5IEBAIHN0YXRpYyB2b2lkIGlkQXR0clNldHRlckNhbGxi
YWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlCiAgICAg
VGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAK
K3N0YXRpYyB2b2lkIGlkQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKKyAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOworICAgIGltcC0+c2V0SWQo
dik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBpZEF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4
SW50ZXJuYWw6OmlkQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9
CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaGFzaEF0dHJHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE1
MjMsNiArMjg3NSwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhc2hBdHRyR2V0
dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAgICAgcmV0dXJuIFRlc3RP
YmpWOEludGVybmFsOjpoYXNoQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBoYXNoQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJl
dHVybiB2OFN0cmluZyhpbXAtPmhhc2goKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2Fm
ZUhhbmRsZSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaGFzaEF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6
Omhhc2hBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHJlcGxhY2VhYmxlQXR0cmlidXRlQXR0ckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAt
MTUzNCw2ICsyODk3LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVwbGFjZWFi
bGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4CiAgICAgcmV0dXJuIFRl
c3RPYmpWOEludGVybmFsOjpyZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5m
byk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVwbGFjZWFibGVBdHRyaWJ1
dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPnJl
cGxhY2VhYmxlQXR0cmlidXRlKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiByZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlcGxhY2Vh
YmxlQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEgPSBpbmZvLkRhdGEoKTsKQEAgLTI5MzYsNiAr
NDMxMCwxMzkgQEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJp
YnV0ZSBWOFRlc3RPYmpBdHRyc1tdID0gewogICAgIHsicmVwbGFjZWFibGVBdHRyaWJ1dGUiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6cmVwbGFjZWFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqUmVwbGFjZWFibGVBdHRyU2V0dGVyQ2FsbGJhY2ss
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAogfTsKIAorc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6
QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RPYmpBdHRyc0Zvck1haW5Xb3JsZFtdID0geworICAgIC8v
IEF0dHJpYnV0ZSAncmVhZE9ubHlMb25nQXR0cicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUn
IEV4dEF0dHI6ICcnKQorICAgIHsicmVhZE9ubHlMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFs
OjpyZWFkT25seUxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3JlYWRPbmx5U3RyaW5nQXR0cicgKFR5cGU6
ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsicmVhZE9ubHlTdHJpbmdB
dHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5U3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdy
ZWFkT25seVRlc3RPYmpBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjog
JycpCisgICAgeyJyZWFkT25seVRlc3RPYmpBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRP
bmx5VGVzdE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnc3RhdGljUmVhZE9ubHlMb25nQXR0cicgKFR5cGU6
ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsic3RhdGljUmVhZE9ubHlM
b25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNSZWFkT25seUxvbmdBdHRyQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRy
aWJ1dGUgJ3N0YXRpY1N0cmluZ0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykK
KyAgICB7InN0YXRpY1N0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljU3RyaW5n
QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OnN0
YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAorICAgIC8vIEF0dHJpYnV0ZSAnVGVzdFN1Yk9iaicgKFR5cGU6ICdyZWFkb25seSBhdHRy
aWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsiVGVzdFN1Yk9iaiIsIFRlc3RPYmpWOEludGVybmFs
OjpUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIsIDAsICZWOFRlc3RTdWJPYmo6OmluZm8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAv
LyBBdHRyaWJ1dGUgJ2VudW1BdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisg
ICAgeyJlbnVtQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjplbnVtQXR0ckF0dHJHZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmVudW1BdHRyQXR0clNldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3No
b3J0QXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsic2hvcnRBdHRy
IiwgVGVzdE9ialY4SW50ZXJuYWw6OnNob3J0QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OnNob3J0QXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICd1bnNpZ25lZFNob3J0
QXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsidW5zaWduZWRTaG9y
dEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRTaG9ydEF0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZFNob3J0QXR0ckF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0
cmlidXRlICdsb25nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsi
bG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdsb25nTG9u
Z0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7ImxvbmdMb25nQXR0
ciIsIFRlc3RPYmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAndW5zaWdu
ZWRMb25nTG9uZ0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7InVu
c2lnbmVkTG9uZ0xvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdB
dHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6dW5z
aWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnc3RyaW5nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUn
IEV4dEF0dHI6ICcnKQorICAgIHsic3RyaW5nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJp
bmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6
c3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CisgICAgLy8gQXR0cmlidXRlICd0ZXN0T2JqQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0
dHI6ICdWOE1lYXN1cmVBcycpCisgICAgeyJ0ZXN0T2JqQXR0ciIsIFRlc3RPYmpWOEludGVybmFs
Ojp0ZXN0T2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50
ZXJuYWw6OnRlc3RPYmpBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ1hNTE9iakF0dHInIChUeXBlOiAnYXR0cmlidXRl
JyBFeHRBdHRyOiAnJykKKyAgICB7IlhNTE9iakF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6WE1M
T2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6
OlhNTE9iakF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAorICAgIC8vIEF0dHJpYnV0ZSAnY3JlYXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjog
JycpCisgICAgeyJjcmVhdGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0clNldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3Jl
ZmxlY3RlZFN0cmluZ0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnUmVmbGVjdCcp
CisgICAgeyJyZWZsZWN0ZWRTdHJpbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZFN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVy
bmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3JlZmxlY3RlZEludGVncmFsQXR0cicg
KFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykKKyAgICB7InJlZmxlY3RlZElu
dGVncmFsQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRJ
bnRlZ3JhbEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAorICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHInIChUeXBl
OiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnUmVmbGVjdCcpCisgICAgeyJyZWZsZWN0ZWRVbnNpZ25l
ZEludGVncmFsQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRVbnNpZ25lZEludGVn
cmFsQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6
OnJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3JlZmxlY3RlZEJvb2xlYW5B
dHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1JlZmxlY3QnKQorICAgIHsicmVmbGVj
dGVkQm9vbGVhbkF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQm9vbGVhbkF0dHJB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0
ZWRCb29sZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCisgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRVUkxBdHRyJyAoVHlwZTogJ2F0dHJpYnV0
ZScgRXh0QXR0cjogJ1VSTCBSZWZsZWN0JykKKyAgICB7InJlZmxlY3RlZFVSTEF0dHIiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVj
dGVkU3RyaW5nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykKKyAg
ICB7InJlZmxlY3RlZFN0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3Ry
aW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6
OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRy
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1JlZmxlY3QnKQorICAgIHsicmVmbGVjdGVk
Q3VzdG9tSW50ZWdyYWxBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUlu
dGVncmFsQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRDdXN0b21C
b29sZWFuQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykKKyAgICB7
InJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZEN1c3RvbUJvb2xlYW5BdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVk
Q3VzdG9tVVJMQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdVUkwgUmVmbGVjdCcp
CisgICAgeyJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxl
Y3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpW
OEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3R5cGVkQXJyYXlBdHRy
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJ0eXBlZEFycmF5QXR0ciIs
IFRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJyYXlBdHRyQXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ2F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAg
eyJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50
ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ2F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJhdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlv
bkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJzdHJpbmdBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6
OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3N0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJzdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9i
alY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ2N1c3Rv
bUF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ3VzdG9tJykKKyAgICB7ImN1c3Rv
bUF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3VzdG9tQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmN1c3RvbUF0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnd2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRo
JykKKyAgICB7IndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjp3
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRl
c3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRy
OiAnQ2FsbFdpdGgnKQorICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQorICAg
IHsid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgVGVzdE9ialY4SW50ZXJuYWw6Ondp
dGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmli
dXRlICd3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcycgKFR5cGU6ICdh
dHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcpCisgICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZVJhaXNlcyIsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAg
ICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQorICAgIHsi
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIsIFRlc3RP
YmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRl
ICd3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRoJykKKyAgICB7IndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJu
YWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8v
IEF0dHJpYnV0ZSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhT
cGFjZXNBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQor
ICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNB
dHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0QXJndW1lbnRz
QW5kQ2FsbFN0YWNrQXR0cmlidXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxX
aXRoJykKKyAgICB7IndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0
ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhT
Y3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorI2lmIEVOQUJMRShDb25kaXRpb24xKQorICAgIC8v
IEF0dHJpYnV0ZSAnY29uZGl0aW9uYWxBdHRyMScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6
ICdDb25kaXRpb25hbCcpCisgICAgeyJjb25kaXRpb25hbEF0dHIxIiwgVGVzdE9ialY4SW50ZXJu
YWw6OmNvbmRpdGlvbmFsQXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RP
YmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIxQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCisgICAgLy8gQXR0cmlidXRl
ICdjb25kaXRpb25hbEF0dHIyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlv
bmFsJykKKyAgICB7ImNvbmRpdGlvbmFsQXR0cjIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0
aW9uYWxBdHRyMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJu
YWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0
aW9uMikKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisgICAg
Ly8gQXR0cmlidXRlICdjb25kaXRpb25hbEF0dHIzJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0
cjogJ0NvbmRpdGlvbmFsJykKKyAgICB7ImNvbmRpdGlvbmFsQXR0cjMiLCBUZXN0T2JqVjhJbnRl
cm5hbDo6Y29uZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVz
dE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAorI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMikKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKKyAgICAvLyBBdHRyaWJ1
dGUgJ2NvbmRpdGlvbmFsQXR0cjQnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0
aW9uYWwnKQorICAgIHsiY29uZGl0aW9uYWxBdHRyNCIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0
T2JqQ29uc3RydWN0b3JHZXR0ZXIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqUmVwbGFjZWFi
bGVBdHRyU2V0dGVyQ2FsbGJhY2ssICZWOFRlc3RPYmplY3RBOjppbmZvLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisjZW5kaWYgLy8gRU5B
QkxFKENvbmRpdGlvbjEpCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRp
b24yKQorICAgIC8vIEF0dHJpYnV0ZSAnY29uZGl0aW9uYWxBdHRyNScgKFR5cGU6ICdhdHRyaWJ1
dGUnIEV4dEF0dHI6ICdDb25kaXRpb25hbCcpCisgICAgeyJjb25kaXRpb25hbEF0dHI1IiwgVGVz
dE9ialY4SW50ZXJuYWw6OlRlc3RPYmpDb25zdHJ1Y3RvckdldHRlciwgVGVzdE9ialY4SW50ZXJu
YWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJTZXR0ZXJDYWxsYmFjaywgJlY4VGVzdE9iamVjdEI6
OmluZm8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIp
CisjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorICAgIC8vIEF0
dHJpYnV0ZSAnY29uZGl0aW9uYWxBdHRyNicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdD
b25kaXRpb25hbCcpCisgICAgeyJjb25kaXRpb25hbEF0dHI2IiwgVGVzdE9ialY4SW50ZXJuYWw6
OlRlc3RPYmpDb25zdHJ1Y3RvckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpSZXBs
YWNlYWJsZUF0dHJTZXR0ZXJDYWxsYmFjaywgJlY4VGVzdE9iamVjdEM6OmluZm8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyNlbmRpZiAv
LyBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisgICAgLy8gQXR0cmli
dXRlICdjYWNoZWRBdHRyaWJ1dGUxJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0
cjogJ0NhY2hlZEF0dHJpYnV0ZScpCisgICAgeyJjYWNoZWRBdHRyaWJ1dGUxIiwgVGVzdE9ialY4
SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTFBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQs
IDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnY2FjaGVkQXR0cmlidXRlMicg
KFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWNoZWRBdHRyaWJ1dGUnKQor
ICAgIHsiY2FjaGVkQXR0cmlidXRlMiIsIFRlc3RPYmpWOEludGVybmFsOjpjYWNoZWRBdHRyaWJ1
dGUyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAg
ICAvLyBBdHRyaWJ1dGUgJ2FueUF0dHJpYnV0ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6
ICcnKQorICAgIHsiYW55QXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OmFueUF0dHJpYnV0
ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmFueUF0
dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisg
ICAgLy8gQXR0cmlidXRlICdmbG9hdEFycmF5JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjog
JycpCisgICAgeyJmbG9hdEFycmF5IiwgVGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFycmF5
QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBB
dHRyaWJ1dGUgJ2RvdWJsZUFycmF5JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisg
ICAgeyJkb3VibGVBcnJheSIsIFRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0
clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRy
aWJ1dGUgJ2NvbnRlbnREb2N1bWVudCcgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0
dHI6ICdDaGVja1NlY3VyaXR5Rm9yTm9kZScpCisgICAgeyJjb250ZW50RG9jdW1lbnQiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6Y29udGVudERvY3VtZW50QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ211dGFibGVQb2ludCcg
KFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsibXV0YWJsZVBvaW50IiwgVGVz
dE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgVGVzdE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0dHJTZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdpbW11dGFibGVQb2lu
dCcgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdJbW11dGFibGUnKQorICAgIHsiaW1tdXRh
YmxlUG9pbnQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjppbW11dGFibGVQb2ludEF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmli
dXRlICdzdHJhd2JlcnJ5JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0ltcGxlbWVudGVk
QXMnKQorICAgIHsic3RyYXdiZXJyeSIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJhd2JlcnJ5QXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJy
eUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8g
QXR0cmlidXRlICdzdHJpY3RGbG9hdCcgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdTdHJp
Y3RUeXBlQ2hlY2tpbmcnKQorICAgIHsic3RyaWN0RmxvYXQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
c3RyaWN0RmxvYXRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVy
bmFsOjpzdHJpY3RGbG9hdEF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdkZXNjcmlwdGlvbicgKFR5cGU6ICdyZWFkb25seSBh
dHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsiZGVzY3JpcHRpb24iLCBUZXN0T2JqVjhJbnRl
cm5hbDo6ZGVzY3JpcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnaWQnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRB
dHRyOiAnJykKKyAgICB7ImlkIiwgVGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6aWRBdHRyU2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnaGFzaCcgKFR5
cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsiaGFzaCIsIFRlc3RP
YmpWOEludGVybmFsOjpoYXNoQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3JlcGxhY2VhYmxlQXR0cmlidXRlJyAoVHlw
ZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ1JlcGxhY2VhYmxlJykKKyAgICB7InJl
cGxhY2VhYmxlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlcGxhY2VhYmxlQXR0cmli
dXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVz
dE9ialJlcGxhY2VhYmxlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKK307CisK
IHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRNZXRob2QgVjhUZXN0T2Jq
TWV0aG9kc1tdID0gewogICAgIHsidm9pZE1ldGhvZCIsIFRlc3RPYmpWOEludGVybmFsOjp2b2lk
TWV0aG9kTWV0aG9kQ2FsbGJhY2t9LAogICAgIHsibG9uZ01ldGhvZCIsIFRlc3RPYmpWOEludGVy
bmFsOjpsb25nTWV0aG9kTWV0aG9kQ2FsbGJhY2t9LApAQCAtMzAzMiw3ICs0NTM5LDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE9iajo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uc3Ry
dWN0b3IoYXJncyk7CiB9CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
Q29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJl
bnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIApAQCAtMzA1
Miw0MSArNDU1OSw1NiBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQogICAgICAgICAvLyBBdHRy
aWJ1dGUgJ2VuYWJsZWRBdFJ1bnRpbWVBdHRyMScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6
ICdWOEVuYWJsZWRBdFJ1bnRpbWUnKQogICAgICAgICB7ImVuYWJsZWRBdFJ1bnRpbWVBdHRyMSIs
IFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyR2V0dGVyQ2FsbGJh
Y2ssIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyU2V0dGVyQ2Fs
bGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99OwogICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZp
Z3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhLCBpc29sYXRlKTsKKyAgICAg
ICAgaWYgKGN1cnJlbnRXb3JsZFR5cGUgPT0gTWFpbldvcmxkKSB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhRm9y
TWFpbldvcmxkID1cCisgICAgICAgIC8vIEF0dHJpYnV0ZSAnZW5hYmxlZEF0UnVudGltZUF0dHIx
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1Y4RW5hYmxlZEF0UnVudGltZScpCisgICAg
ICAgIHsiZW5hYmxlZEF0UnVudGltZUF0dHIxIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRB
dFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50
ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL307CisgICAgICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZp
Z3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhRm9yTWFpbldvcmxkLCBpc29s
YXRlKTsKKyAgICAgICAgfQogICAgIH0KICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
ZmVhdHVyZU5hbWVFbmFibGVkKCkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmln
dXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XAogICAgICAgICAvLyBBdHRyaWJ1
dGUgJ2VuYWJsZWRBdFJ1bnRpbWVBdHRyMicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdW
OEVuYWJsZWRBdFJ1bnRpbWUnKQogICAgICAgICB7ImVuYWJsZWRBdFJ1bnRpbWVBdHRyMiIsIFRl
c3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyU2V0dGVyQ2FsbGJh
Y2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99OwogICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3Vy
ZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhLCBpc29sYXRlKTsKKyAgICAgICAg
aWYgKGN1cnJlbnRXb3JsZFR5cGUgPT0gTWFpbldvcmxkKSB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhRm9yTWFp
bldvcmxkID1cCisgICAgICAgIC8vIEF0dHJpYnV0ZSAnZW5hYmxlZEF0UnVudGltZUF0dHIyJyAo
VHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1Y4RW5hYmxlZEF0UnVudGltZScpCisgICAgICAg
IHsiZW5hYmxlZEF0UnVudGltZUF0dHIyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1
bnRpbWVBdHRyMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJu
YWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL307CisgICAgICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3Vy
ZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhRm9yTWFpbldvcmxkLCBpc29sYXRl
KTsKKyAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChjdXJyZW50V29ybGRUeXBlID09IE1haW5X
b3JsZCkKKyAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjphZGRUb1RlbXBsYXRlKGRlc2MsIFY4
VGVzdE9iakF0dHJzRm9yTWFpbldvcmxkLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdE9iakF0dHJz
Rm9yTWFpbldvcmxkKSwgMCwgMCwgaXNvbGF0ZSwgZGVmYXVsdFNpZ25hdHVyZSk7CisKICAgICAv
LyBDdXN0b20gU2lnbmF0dXJlICd2b2lkTWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50IHZv
aWRNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHZvaWRNZXRob2RXaXRoQXJnc0FyZ3Zbdm9pZE1ldGhvZFdpdGhBcmdzQXJnY10gPSB7
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBs
YXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiB2b2lkTWV0aG9kV2l0aEFyZ3NBcmd2W3ZvaWRNZXRob2RXaXRoQXJn
c0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAg
IHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gdm9pZE1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlID0g
djg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHZvaWRNZXRob2RXaXRoQXJnc0FyZ2MsIHZvaWRNZXRo
b2RXaXRoQXJnc0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ2
b2lkTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJ
bnRlcm5hbDo6dm9pZE1ldGhvZFdpdGhBcmdzTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCks
IHZvaWRNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVy
ZSAnbG9uZ01ldGhvZFdpdGhBcmdzJwogICAgIGNvbnN0IGludCBsb25nTWV0aG9kV2l0aEFyZ3NB
cmdjID0gMzsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBsb25nTWV0aG9k
V2l0aEFyZ3NBcmd2W2xvbmdNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjpp
bmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
bG9uZ01ldGhvZFdpdGhBcmdzQXJndltsb25nTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4
VGVzdE9iajo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpT
aWduYXR1cmU+IGxvbmdNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5l
dyhkZXNjLCBsb25nTWV0aG9kV2l0aEFyZ3NBcmdjLCBsb25nTWV0aG9kV2l0aEFyZ3NBcmd2KTsK
ICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibG9uZ01ldGhvZFdpdGhBcmdz
IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdNZXRo
b2RXaXRoQXJnc01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBsb25nTWV0aG9kV2l0aEFy
Z3NTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ29iak1ldGhvZFdpdGhB
cmdzJwogICAgIGNvbnN0IGludCBvYmpNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOwotICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG9iak1ldGhvZFdpdGhBcmdzQXJndltvYmpNZXRo
b2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5cGUpIH07Cisg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gb2JqTWV0aG9kV2l0aEFyZ3NBcmd2
W29iak1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIGN1cnJlbnRX
b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBvYmpNZXRob2RXaXRo
QXJnc1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBvYmpNZXRob2RXaXRoQXJn
c0FyZ2MsIG9iak1ldGhvZFdpdGhBcmdzQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5n
OjpOZXdTeW1ib2woIm9iak1ldGhvZFdpdGhBcmdzIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpO
ZXcoVGVzdE9ialY4SW50ZXJuYWw6Om9iak1ldGhvZFdpdGhBcmdzTWV0aG9kQ2FsbGJhY2ssIHY4
VW5kZWZpbmVkKCksIG9iak1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0
b20gU2lnbmF0dXJlICdtZXRob2RXaXRoU2VxdWVuY2VBcmcnCiAgICAgY29uc3QgaW50IG1ldGhv
ZFdpdGhTZXF1ZW5jZUFyZ0FyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3ZbbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJn
Y10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOHNl
cXVlbmNlPFNjcmlwdFByb2ZpbGU+OjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRob2RX
aXRoU2VxdWVuY2VBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
cmF3VGVtcGxhdGUoJlY4c2VxdWVuY2U8U2NyaXB0UHJvZmlsZT46OmluZm8sIGN1cnJlbnRXb3Js
ZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RXaXRoU2VxdWVu
Y2VBcmdTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbWV0aG9kV2l0aFNlcXVl
bmNlQXJnQXJnYywgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndik7CiAgICAgcHJvdG8tPlNldCh2
ODo6U3RyaW5nOjpOZXdTeW1ib2woIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoU2VxdWVuY2VBcmdN
ZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0
dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdtZXRob2RUaGF0UmVxdWlyZXNBbGxB
cmdzQW5kVGhyb3dzJwogICAgIGNvbnN0IGludCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5k
VGhyb3dzQXJnYyA9IDI7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0
aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ3ZbbWV0aG9kVGhhdFJlcXVpcmVzQWxs
QXJnc0FuZFRocm93c0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigp
LCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2Jq
OjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ3ZbbWV0aG9kVGhhdFJlcXVp
cmVzQWxsQXJnc0FuZFRocm93c0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhU
ZXN0T2JqOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNp
Z25hdHVyZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c1NpZ25hdHVyZSA9IHY4
OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dz
QXJnYywgbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ3YpOwogICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5k
VGhyb3dzIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6Om1l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmlu
ZWQoKSwgbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c1NpZ25hdHVyZSkpOwogICAg
IGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN0YXRpY01ldGhvZFdpdGhDYWxsYmFj
a0FuZE9wdGlvbmFsQXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50
ZXJuYWw6OnN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnTWV0aG9kQ2FsbGJh
Y2ssIHY4VW5kZWZpbmVkKCksIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpKSk7CkBAIC0zMTA0
LDQzICs0NjI2LDQzIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNpCiAKICAgICAvLyBDdXN0b20g
U2lnbmF0dXJlICdzdHJpbmdBcnJheUZ1bmN0aW9uJwogICAgIGNvbnN0IGludCBzdHJpbmdBcnJh
eUZ1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
c3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6
aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2W3N0cmluZ0FycmF5RnVuY3Rpb25BcmdjXSA9IHsgVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106
OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJl
PiBzdHJpbmdBcnJheUZ1bmN0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2Ms
IHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjLCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndik7CiAgICAg
cHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN0cmluZ0FycmF5RnVuY3Rpb24iKSwg
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXJyYXlG
dW5jdGlvbk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdHJpbmdBcnJheUZ1bmN0aW9u
U2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdkb21TdHJpbmdMaXN0RnVu
Y3Rpb24nCiAgICAgY29uc3QgaW50IGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ2MgPSAxOwotICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFy
Z3ZbZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ0xpc3Q6OmluZm8sIHdvcmxkVHlwZSkg
fTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkb21TdHJpbmdMaXN0RnVu
Y3Rpb25Bcmd2W2RvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdMaXN0OjppbmZvLCBjdXJy
ZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gZG9tU3RyaW5n
TGlzdEZ1bmN0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGRvbVN0cmlu
Z0xpc3RGdW5jdGlvbkFyZ2MsIGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ3YpOwogICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKSwgdjg6
OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6ZG9tU3RyaW5nTGlzdEZ1
bmN0aW9uTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGRvbVN0cmluZ0xpc3RGdW5jdGlv
blNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnY29udmVydDEnCiAgICAg
Y29uc3QgaW50IGNvbnZlcnQxQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gY29udmVydDFBcmd2W2NvbnZlcnQxQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGE6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0MUFyZ3ZbY29udmVydDFB
cmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4
YTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1
cmU+IGNvbnZlcnQxU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGNvbnZlcnQx
QXJnYywgY29udmVydDFBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJv
bCgiY29udmVydDEiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5h
bDo6Y29udmVydDFNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVydDFTaWduYXR1
cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZlcnQyJwogICAgIGNvbnN0IGlu
dCBjb252ZXJ0MkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IGNvbnZlcnQyQXJndltjb252ZXJ0MkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhiOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDJBcmd2W2NvbnZlcnQyQXJnY10gPSB7
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGI6OmluZm8s
IGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBjb252
ZXJ0MlNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBjb252ZXJ0MkFyZ2MsIGNv
bnZlcnQyQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNvbnZl
cnQyIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZl
cnQyTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGNvbnZlcnQyU2lnbmF0dXJlKSk7CiAK
ICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdjb252ZXJ0NCcKICAgICBjb25zdCBpbnQgY29udmVy
dDRBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0
NEFyZ3ZbY29udmVydDRBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
cmF3VGVtcGxhdGUoJlY4ZDo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQ0QXJndltjb252ZXJ0NEFyZ2NdID0geyBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhkOjppbmZvLCBjdXJyZW50
V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDRTaWdu
YXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgY29udmVydDRBcmdjLCBjb252ZXJ0NEFy
Z3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0NCIpLCB2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0NE1ldGhv
ZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0NFNpZ25hdHVyZSkpOwogCiAgICAgLy8g
Q3VzdG9tIFNpZ25hdHVyZSAnY29udmVydDUnCiAgICAgY29uc3QgaW50IGNvbnZlcnQ1QXJnYyA9
IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDVBcmd2W2Nv
bnZlcnQ1QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBs
YXRlKCZWOGU6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBjb252ZXJ0NUFyZ3ZbY29udmVydDVBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4ZTo6aW5mbywgY3VycmVudFdvcmxkVHlw
ZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZlcnQ1U2lnbmF0dXJlID0g
djg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGNvbnZlcnQ1QXJnYywgY29udmVydDVBcmd2KTsKICAg
ICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVydDUiKSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDVNZXRob2RDYWxsYmFj
aywgdjhVbmRlZmluZWQoKSwgY29udmVydDVTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBT
aWduYXR1cmUgJ3ZhcmlhZGljTm9kZU1ldGhvZCcKICAgICBjb25zdCBpbnQgdmFyaWFkaWNOb2Rl
TWV0aG9kQXJnYyA9IDI7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdmFy
aWFkaWNOb2RlTWV0aG9kQXJndlt2YXJpYWRpY05vZGVNZXRob2RBcmdjXSA9IHsgVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbywgd29ybGRU
eXBlKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9k
ZTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IHZhcmlhZGljTm9kZU1ldGhvZEFyZ3ZbdmFyaWFkaWNOb2RlTWV0aG9kQXJnY10gPSB7IFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOE5vZGU6OmluZm8s
IGN1cnJlbnRXb3JsZFR5cGUpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdU
ZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5k
bGU8djg6OlNpZ25hdHVyZT4gdmFyaWFkaWNOb2RlTWV0aG9kU2lnbmF0dXJlID0gdjg6OlNpZ25h
dHVyZTo6TmV3KGRlc2MsIHZhcmlhZGljTm9kZU1ldGhvZEFyZ2MsIHZhcmlhZGljTm9kZU1ldGhv
ZEFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ2YXJpYWRpY05v
ZGVNZXRob2QiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6
dmFyaWFkaWNOb2RlTWV0aG9kTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHZhcmlhZGlj
Tm9kZU1ldGhvZFNpZ25hdHVyZSkpOwogICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25m
aWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8sIFY4VGVzdE9iakNvbnN0cywgV1RGX0FSUkFZX0xF
TkdUSChWOFRlc3RPYmpDb25zdHMpLCBpc29sYXRlKTsKQEAgLTMxNTAsMjMgKzQ2NzIsMjMgQEAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRl
c3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE9iajo6R2V0VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE9iajo6R2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsK
LSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9
IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0
YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJl
bnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxh
dGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZh
bHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVz
dE9ialRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRl
LCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZv
LCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKGRhdGEtPnJhd1Rl
bXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlw
ZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0
ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdE9iajo6SGFzSW5zdGFu
Y2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3Jh
cHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldv
cmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7Cisg
ICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZp
bmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIHZvaWQgVjhUZXN0T2JqOjppbnN0
YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBpbnN0YW5jZSwg
VGVzdE9iaiogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKaW5kZXggODc3YWMyNTBj
NzRkNGUxNjhjZDIxMDMzYmRjNDI5N2JhNDAyZjJkOC4uNGIyNDM5ZTNlYTJlMzUwMDBjMDcyNjY4
NWZjNmI0YTZmMmRjM2QyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaApAQCAtNzQsNiArNzQsMTcgQEAgaW5saW5lIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RPYmoqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gY3JlYXRpb24KICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQo
VGVzdE9iaiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0g
TWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhO
dWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVy
ID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICgh
d3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3
cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNz
IEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4RmFzdChUZXN0T2JqKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNv
bnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CkBAIC04Niw2ICs5NywyNSBAQCBpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RPYmoqIGltcGwsIGNvbnN0IEhv
bGRlckNvbnRhaW5lciYgY29udAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIs
IGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RG
b3JNYWluV29ybGQoVGVzdE9iaiogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWlu
ZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFp
bmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwp
KQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZv
ck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCks
IGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250
YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdE9iaiA+IGltcGwsIGNvbnN0IEhvbGRl
ckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICByZXR1
cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUp
OworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxl
PgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0
T2JqID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSog
d3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIs
IHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5j
cHAKaW5kZXggZTNiM2U0MTBmMDk4M2Y5NTc4Y2QxOTIwOGJlMDQwNWE0OGFjZDE2NS4uMjA2ZGMz
OWJlMGNhMmFlZTNkNTRjMTE2Yjg5NTViYmJmN2I0ZjRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvckNh
bGxiYWNrKGNvbnN0IHY4CiAgICAgcmV0dXJuIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVjhJ
bnRlcm5hbDo6Y29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1RlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdv
cmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCkBAIC0xNTksMjgg
KzE1OSwzMSBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcgogICAgIGRlc2MtPlNldENhbGxIYW5k
bGVyKFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwog
ICAgIAogCisgICAgaWYgKGN1cnJlbnRXb3JsZFR5cGUgPT0gTWFpbldvcmxkKQorICAgICAgICBW
OERPTUNvbmZpZ3VyYXRpb246OmFkZFRvVGVtcGxhdGUoZGVzYywgMCwgMCwgMCwgMCwgaXNvbGF0
ZSwgZGVmYXVsdFNpZ25hdHVyZSk7CisKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUK
ICAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCBWOFBlcklz
b2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5nVGVtcGxhdGUoKSk7CiAgICAgcmV0dXJuIGRl
c2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3Jh
cHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6R2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsK
LSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9
IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0
YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJl
bnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxh
dGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZh
bHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywg
d29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJl
bnRXb3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1w
bGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4g
dGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6SGFzSW5zdGFu
Y2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3Jh
cHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1
cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZh
bHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCmluZGV4IDMwODY4OWIz
NDhmMzRhYTFjYWQ1YzNhNTllOTg1MjQxYWIzYjljNDguLjY2NzgxNjc1YzU2ODkzYmUzOGFhMzdm
MjAyZDRhY2ViOWU3N2VkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuaApAQCAtNjksNiArNjksMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4KFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCB2ODo6SGFuZGxlPHYKICAgICBy
ZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09
IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4
TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBl
ciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAo
IXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4g
d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFz
cyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwsIGNvbnN0
IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKQEAg
LTgxLDYgKzkyLDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwsIGNvbnN0IEhvCiB9CiAKIHRlbXBsYXRlPGNs
YXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3Jh
cHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVyLkdldElzb2xhdGUoKSkg
PT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4g
djhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsK
KyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAg
ICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29s
YXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBw
YWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQo
UGFzc1JlZlB0cjwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPiBpbXBsLCBjb25zdCBIb2xk
ZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0
dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxl
KTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJs
ZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNv
bnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGlt
cGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggOGU1YzdjNDVmZDk1
ZGNkNTUwN2M5NTVhZWJjN2JiNjdjYTA2NzdiMi4uMzBmODAxNmUxOTAwZTc2M2I1NmNhNzk2NmNi
MTc4MjBmMGU1YjU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTg2LDYgKzg2LDE3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsCiAgICAgcmV0dXJuIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VW
OEludGVybmFsOjp2YWx1ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcCA9IFY4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJu
IGltcC0+dmFsdWUoKSA/IGltcC0+dmFsdWUoKS0+ZGVzZXJpYWxpemUoKSA6IHY4OjpIYW5kbGU8
djg6OlZhbHVlPih2OE51bGwoaW5mby5HZXRJc29sYXRlKCkpKTsKK30KKworc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICByZXR1cm4gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6
OnZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZv
aWQgdmFsdWVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtOTksNiAr
MTEwLDE5IEBAIHN0YXRpYyB2b2lkIHZhbHVlQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhCiAgICAgVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0clNldHRlcihuYW1lLCB2YWx1ZSwg
aW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHZhbHVlQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSogaW1wID0gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiB2ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodmFsdWUsIGluZm8uR2V0SXNvbGF0
ZSgpKTsKKyAgICBpbXAtPnNldFZhbHVlKFdURjo6Z2V0UHRyKHYpKTsKKyAgICByZXR1cm47Cit9
CisKK3N0YXRpYyB2b2lkIHZhbHVlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlVjhJbnRlcm5hbDo6dmFsdWVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZh
bHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWFkb25seVZh
bHVlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
KiBpbXAgPSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwpAQCAtMTEwLDYgKzEzNCwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJp
bgogICAgIHJldHVybiBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5h
bDo6cmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wID0gVjhUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAg
ICByZXR1cm4gaW1wLT5yZWFkb25seVZhbHVlKCkgPyBpbXAtPnJlYWRvbmx5VmFsdWUoKS0+ZGVz
ZXJpYWxpemUoKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OE51bGwoaW5mby5HZXRJc29sYXRl
KCkpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWFkb25seVZhbHVlQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6cmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXJG
b3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gY2FjaGVkVmFsdWVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4g
cHJvcGVydHlOYW1lID0gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjYWNoZWRWYWx1ZSIpOwpAQCAt
MTI4LDYgKzE2MywyNCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZFZhbHVl
QXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIHJldHVybiBUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkVmFsdWVBdHRy
R2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNh
Y2hlZFZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpT
dHJpbmc+IHByb3BlcnR5TmFtZSA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY2FjaGVkVmFsdWUi
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSBpbmZvLkhvbGRlcigpLT5HZXRI
aWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgIGlmICghdmFsdWUuSXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gdmFsdWU7CisgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSogaW1wID0gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxp
emVkID0gaW1wLT5jYWNoZWRWYWx1ZSgpOworICAgIHZhbHVlID0gc2VyaWFsaXplZCA/IHNlcmlh
bGl6ZWQtPmRlc2VyaWFsaXplKCkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjhOdWxsKGluZm8u
R2V0SXNvbGF0ZSgpKSk7CisgICAgaW5mby5Ib2xkZXIoKS0+U2V0SGlkZGVuVmFsdWUocHJvcGVy
dHlOYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNhY2hlZFZhbHVlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIHJldHVybiBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5h
bDo6Y2FjaGVkVmFsdWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBz
dGF0aWMgdm9pZCBjYWNoZWRWYWx1ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcCA9IFY4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CkBAIC0xNDIsNiArMTk1LDIwIEBAIHN0YXRpYyB2b2lkIGNhY2hlZFZhbHVlQXR0clNldHRl
ckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8CiAgICAgVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0
clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIGNhY2hlZFZhbHVl
QXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wID0gVjhUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICBpbXAtPnNldENhY2hlZFZhbHVl
KFdURjo6Z2V0UHRyKHYpKTsKKyAgICBpbmZvLkhvbGRlcigpLT5EZWxldGVIaWRkZW5WYWx1ZSh2
ODo6U3RyaW5nOjpOZXdTeW1ib2woImNhY2hlZFZhbHVlIikpOyAvLyBJbnZhbGlkYXRlIHRoZSBj
YWNoZWQgdmFsdWUuCisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBjYWNoZWRWYWx1ZUF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNh
Y2hlZFZhbHVlQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisK
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9ydHNBdHRyR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcCA9IFY4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNjAsNiAr
MjI3LDI0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9ydHNBdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAgICAgcmV0dXJuIFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpwb3J0c0F0dHJHZXR0ZXIobmFtZSwg
aW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9ydHNBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uq
IGltcCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgTWVzc2FnZVBvcnRBcnJheSogcG9ydHMgPSBpbXAtPnBvcnRzKCk7
CisgICAgaWYgKCFwb3J0cykKKyAgICAgICAgcmV0dXJuIHY4OjpBcnJheTo6TmV3KDApOworICAg
IE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHNDb3B5KCpwb3J0cyk7CisgICAgdjg6OkxvY2FsPHY4OjpB
cnJheT4gcG9ydEFycmF5ID0gdjg6OkFycmF5OjpOZXcocG9ydHNDb3B5LnNpemUoKSk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb3J0c0NvcHkuc2l6ZSgpOyArK2kpCisgICAgICAgIHBv
cnRBcnJheS0+U2V0KHY4SW50ZWdlcihpLCBpbmZvLkdldElzb2xhdGUoKSksIHRvVjhGYXN0Rm9y
TWFpbldvcmxkKHBvcnRzQ29weVtpXS5nZXQoKSwgaW5mbywgaW1wKSk7CisgICAgcmV0dXJuIHBv
cnRBcnJheTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwb3J0c0F0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnBvcnRzQXR0ckdldHRlckZvck1haW5Xb3JsZChu
YW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRSZWFk
b25seVZhbHVlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3Bl
cnR5TmFtZSA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY2FjaGVkUmVhZG9ubHlWYWx1ZSIpOwpA
QCAtMTc4LDYgKzI2MywyNCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZFJl
YWRvbmx5VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OgogICAgIHJldHVybiBU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkUmVhZG9u
bHlWYWx1ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gY2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBwcm9wZXJ0eU5hbWUgPSB2ODo6U3RyaW5nOjpOZXdT
eW1ib2woImNhY2hlZFJlYWRvbmx5VmFsdWUiKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dmFsdWUgPSBpbmZvLkhvbGRlcigpLT5HZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUpOworICAg
IGlmICghdmFsdWUuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wID0gVjhUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkID0gaW1wLT5jYWNoZWRSZWFkb25seVZhbHVl
KCk7CisgICAgdmFsdWUgPSBzZXJpYWxpemVkID8gc2VyaWFsaXplZC0+ZGVzZXJpYWxpemUoKSA6
IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OE51bGwoaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICBp
bmZvLkhvbGRlcigpLT5TZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICBy
ZXR1cm4gdmFsdWU7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FjaGVkUmVh
ZG9ubHlWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4g
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFJlYWRv
bmx5VmFsdWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFjY2VwdFRyYW5zZmVyTGlzdE1ldGhvZChjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKQEAgLTI5Miw2
ICszOTUsMTkgQEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJp
YnV0ZSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnQKICAgICB7ImNhY2hlZFJlYWRvbmx5
VmFsdWUiLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2Fj
aGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiB9
OwogCitzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUF0dHJzRm9yTWFpbldvcmxkW10gPSB7
CisgICAgLy8gQXR0cmlidXRlICd2YWx1ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcn
KQorICAgIHsidmFsdWUiLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRl
cm5hbDo6dmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjp2YWx1ZUF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdyZWFkb25seVZh
bHVlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJyZWFk
b25seVZhbHVlIiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6
OnJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnY2FjaGVkVmFsdWUnIChUeXBlOiAnYXR0cmlidXRl
JyBFeHRBdHRyOiAnQ2FjaGVkQXR0cmlidXRlJykKKyAgICB7ImNhY2hlZFZhbHVlIiwgVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlVjhJbnRlcm5hbDo6Y2FjaGVkVmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQs
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAncG9ydHMnIChUeXBlOiAncmVhZG9u
bHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7InBvcnRzIiwgVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnBvcnRzQXR0ckdldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ2NhY2hlZFJl
YWRvbmx5VmFsdWUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FjaGVk
QXR0cmlidXRlJykKKyAgICB7ImNhY2hlZFJlYWRvbmx5VmFsdWUiLCBUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCit9OworCiBzdGF0aWMg
Y29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkTWV0aG9kIFY4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZU1ldGhvZHNbXSA9IHsKICAgICB7ImFjY2VwdFRyYW5zZmVyTGlz
dCIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjphY2NlcHRU
cmFuc2Zlckxpc3RNZXRob2RDYWxsYmFja30sCiAgICAgeyJtdWx0aVRyYW5zZmVyTGlzdCIsIFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjptdWx0aVRyYW5zZmVy
TGlzdE1ldGhvZENhbGxiYWNrfSwKQEAgLTMwOCw3ICs0MjQsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNh
bGxiYWNrKAogICAgIHJldHVybiBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJ
bnRlcm5hbDo6Y29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRl
c2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUo
KTsKIApAQCAtMzI0LDI4ICs0NDAsMzEgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWUKICAgICBV
TlVTRURfUEFSQU0ocHJvdG8pOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2Vk
LgogICAgIAogCisgICAgaWYgKGN1cnJlbnRXb3JsZFR5cGUgPT0gTWFpbldvcmxkKQorICAgICAg
ICBWOERPTUNvbmZpZ3VyYXRpb246OmFkZFRvVGVtcGxhdGUoZGVzYywgVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQXR0cnNGb3JNYWluV29ybGQsIFdURl9BUlJBWV9MRU5HVEgo
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQXR0cnNGb3JNYWluV29ybGQpLCAw
LCAwLCBpc29sYXRlLCBkZWZhdWx0U2lnbmF0dXJlKTsKKwogICAgIC8vIEN1c3RvbSB0b1N0cmlu
ZyB0ZW1wbGF0ZQogICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInRvU3RyaW5n
IiksIFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+dG9TdHJpbmdUZW1wbGF0ZSgpKTsKICAg
ICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUg
Y3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5k
KCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSku
ZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkp
CiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhh
bmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1w
bCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3
b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0
ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwg
aXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVu
dFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1i
b29sIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6SGFzSW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldv
cmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIHJl
dHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywg
dmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5oCmluZGV4IDUwZGNiZjE2MWY5YTAyZDVmODc3NWI5N2RjMjI4N2RiNDdjZDYzNWIuLjE5YjEz
NjkxNjQ5MGUwNDI2YjRkNjIwOGFiMzJmYzcwMDllZjI1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKQEAgLTcwLDYgKzcwLDE3
IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlKiBpbXBsLCB2ODo6CiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4Rm9yTWFpbldvcmxkKFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcGws
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7Cisg
ICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhp
c29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9y
ZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWlu
ZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZh
c3QoVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wbCwgY29uc3QgSG9sZGVy
Q29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtODIsNiAr
OTMsMjUgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXBsLAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xk
ZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3Jh
cHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVyLkdldElzb2xhdGUoKSkg
PT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4g
djhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsK
KyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAg
ICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29s
YXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBw
YWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQo
UGFzc1JlZlB0cjwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA+IGltcGwsIGNv
bnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sK
KyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3
cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3Mg
V3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVm
UHRyPCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID4gaW1wbCwgY29uc3QgSG9s
ZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewogICAgIHJl
dHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRl
ZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5
cGVkZWZzLmNwcAppbmRleCBjN2RiNDc5MDg3OGIwMTgzMDU0MWI5NWJiOWIwYTM1ZjllNmIxNWY4
Li4xNGZlN2NmNDQyMWE2OGMwZjBlMGVhMDVkOTViZGUzMWI2MmZmZmU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBl
ZGVmcy5jcHAKQEAgLTkxLDYgKzkxLDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4CiAgICAg
cmV0dXJuIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdl
dHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1bnNp
Z25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFR5cGVk
ZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAg
cmV0dXJuIHY4OjpOdW1iZXI6Ok5ldyhzdGF0aWNfY2FzdDxkb3VibGU+KGltcC0+dW5zaWduZWRM
b25nTG9uZ0F0dHIoKSkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHVuc2ln
bmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJl
dHVybiBUZXN0VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0
ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHVuc2lnbmVkTG9u
Z0xvbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAg
VGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CkBAIC0xMDQsNiArMTE1LDE5IEBAIHN0YXRpYyB2b2lkIHVuc2lnbmVkTG9uZ0xvbmdBdHRy
QXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2CiAgICAgVGVz
dFR5cGVkZWZzVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyKG5hbWUs
IHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgdW5zaWduZWRMb25nTG9uZ0F0dHJBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdiA9IHRvSW50NjQodmFsdWUpOworICAgIGltcC0+
c2V0VW5zaWduZWRMb25nTG9uZ0F0dHIodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9p
ZCB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6
dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBp
bmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbW11dGFibGVTZXJpYWxp
emVkU2NyaXB0VmFsdWVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhU
ZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTE1LDYgKzEzOSwxNyBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUF0dHJHZXR0ZXJDYWxsYmFjayh2OAogICAgIHJldHVybiBUZXN0VHlwZWRlZnNWOEludGVy
bmFsOjppbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyR2V0dGVyKG5hbWUsIGluZm8p
OwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGltbXV0YWJsZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFR5cGVkZWZzKiBp
bXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJu
IGltcC0+aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKCkgPyBpbXAtPmltbXV0YWJsZVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSgpLT5kZXNlcmlhbGl6ZSgpIDogdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KHY4TnVsbChpbmZvLkdldElzb2xhdGUoKSkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6aW1t
dXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBp
bmZvKTsKK30KKwogc3RhdGljIHZvaWQgaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdFR5cGVkZWZz
KiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMjgs
NiArMTYzLDE5IEBAIHN0YXRpYyB2b2lkIGltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0
dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluCiAgICAgVGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0clNldHRlcihuYW1lLCB2
YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIGltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHYgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIGlt
cC0+c2V0SW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURjo6Z2V0UHRyKHYpKTsKKyAg
ICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6aW1tdXRhYmxlU2VyaWFsaXplZFNj
cmlwdFZhbHVlQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisK
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRy
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTQzLDYgKzE5MSwyMSBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrKHY4
OjpMb2NhbAogICAgIHJldHVybiBUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbkF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGludCB2ID0gaW1w
LT5hdHRyV2l0aEdldHRlckV4Y2VwdGlvbihlYyk7CisgICAgaWYgKFVOTElLRUxZKGVjKSkKKyAg
ICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgaW5mby5HZXRJc29sYXRlKCkpOworICAg
IHJldHVybiB2OEludGVnZXIodiwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0VHlwZWRlZnNWOEludGVybmFsOjph
dHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7
Cit9CisKIHN0YXRpYyB2b2lkIGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRl
c3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNTYsNiArMjE5LDE5IEBA
IHN0YXRpYyB2b2lkIGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lCiAgICAgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0
cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAor
c3RhdGljIHZvaWQgYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0VHlwZWRlZnMqIGltcCA9
IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBpbnQgdiA9IHRv
SW50MzIodmFsdWUpOworICAgIGltcC0+c2V0QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24odik7Cisg
ICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRy
U2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CkBAIC0xNjcsNiArMjQzLDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsCiAgICAg
cmV0dXJuIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0
ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBh
dHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CisgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCksIGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRy
V2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICByZXR1cm4gVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25B
dHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBhdHRy
V2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQogewogICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwpAQCAtMTgzLDYgKzI3MCwyMiBAQCBzdGF0aWMgdm9pZCBhdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZQogICAgIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0
clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIGF0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXAtPnNldEF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKHYs
IGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAgICAgICBzZXRET01FeGNlcHRpb24oZWMs
IGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRy
V2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGlu
Zm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVz
dFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE5OCw2ICszMDEsMjEgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlv
bkF0dHJHZXR0ZXJDYWxsYmFjayh2ODoKICAgICByZXR1cm4gVGVzdFR5cGVkZWZzVjhJbnRlcm5h
bDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKG5hbWUsIGluZm8pOwog
fQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0VHlwZWRlZnMqIGltcCA9
IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICBTdHJpbmcgdiA9IGltcC0+c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24oZWMpOworICAgIGlmIChVTkxJS0VMWShlYykpCisgICAgICAgIHJldHVybiBzZXRET01F
eGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdjhTdHJpbmcodiwg
aW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhhbmRsZSk7Cit9CisKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RUeXBlZGVmc1Y4SW50ZXJu
YWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3JsZChu
YW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0VHlw
ZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAg
LTIxMSw2ICszMjksMTkgQEAgc3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b25BdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmcKICAgICBUZXN0VHlwZWRl
ZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIobmFt
ZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBzdHJpbmdBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChW
OFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKKyAgICBpbXAtPnNldFN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgc3RyaW5n
QXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6
OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1l
LCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RUeXBlZGVmcyog
aW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMjIyLDYg
KzM1MywxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrKHY4OgogICAgIHJldHVybiBUZXN0VHlwZWRl
ZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIobmFt
ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RUeXBl
ZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAg
IHJldHVybiB2OFN0cmluZyhpbXAtPnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCksIGlu
Zm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUpOworfQorCitzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0VHlwZWRlZnNWOEludGVybmFs
OjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFt
ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdFR5cGVk
ZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0y
MzgsNiArMzgwLDIyIEBAIHN0YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
QXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nCiAgICAgVGVzdFR5cGVkZWZz
VjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKG5hbWUs
IHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3sKKyAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKKyAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZPSUQoVjhT
dHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgaW1wLT5zZXRTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbih2LCBlYyk7CisgICAgaWYg
KFVOTElLRUxZKGVjKSkKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xh
dGUoKSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBzdHJpbmdBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZv
KTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBUZXN0VHlwZWRlZnNDb25zdHJ1
Y3RvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGF0YSA9IGluZm8uRGF0
YSgpOwpAQCAtNTEzLDYgKzY3MSwyMyBAQCBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9u
OjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdFR5cGVkZWZzQXR0cnNbXSA9IHsKICAgICB7InN0cmlu
Z0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNr
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKIH07CiAKK3N0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246
OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0VHlwZWRlZnNBdHRyc0Zvck1haW5Xb3JsZFtdID0gewor
ICAgIC8vIEF0dHJpYnV0ZSAndW5zaWduZWRMb25nTG9uZ0F0dHInIChUeXBlOiAnYXR0cmlidXRl
JyBFeHRBdHRyOiAnJykKKyAgICB7InVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgVGVzdFR5cGVkZWZz
VjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1
dGUgJ2ltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4
dEF0dHI6ICdJbW11dGFibGUnKQorICAgIHsiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVl
IiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVl
QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpp
bW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnVGVzdFN1Yk9iaicgKFR5cGU6
ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsiVGVzdFN1Yk9iaiIsIFRl
c3RUeXBlZGVmc1Y4SW50ZXJuYWw6OlRlc3RUeXBlZGVmc0NvbnN0cnVjdG9yR2V0dGVyLCAwLCAm
VjhUZXN0U3ViT2JqOjppbmZvLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdhdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsiYXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24iLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdFR5cGVkZWZzVjhJbnRlcm5h
bDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQs
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnYXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24nIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKKyAgICB7ImF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJFeGNlcHRp
b25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6
OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3N0cmluZ0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJzdHJpbmdBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0VHlw
ZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICdz
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6
ICcnKQorICAgIHsic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCBUZXN0VHlwZWRlZnNW
OEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAorfTsKKwogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZE1ldGhvZCBW
OFRlc3RUeXBlZGVmc01ldGhvZHNbXSA9IHsKICAgICB7ImZ1bmMiLCBUZXN0VHlwZWRlZnNWOElu
dGVybmFsOjpmdW5jTWV0aG9kQ2FsbGJhY2t9LAogICAgIHsibXVsdGlUcmFuc2Zlckxpc3QiLCBU
ZXN0VHlwZWRlZnNWOEludGVybmFsOjptdWx0aVRyYW5zZmVyTGlzdE1ldGhvZENhbGxiYWNrfSwK
QEAgLTUzMyw3ICs3MDgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0VHlwZWRlZnM6
OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQogICAgIHJldHVybiBU
ZXN0VHlwZWRlZnNWOEludGVybmFsOjpjb25zdHJ1Y3RvcihhcmdzKTsKIH0KIAotc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RUeXBlZGVm
c1RlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZz
VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAg
ICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIApAQCAtNTQ5LDI3ICs3MjQsMzAgQEAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RU
eXBlZGVmc1RlbXBsYXRlKHY4OjoKICAgICBVTlVTRURfUEFSQU0ocHJvdG8pOyAvLyBJbiBzb21l
IGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIAogCisgICAgaWYgKGN1cnJlbnRXb3Js
ZFR5cGUgPT0gTWFpbldvcmxkKQorICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmFkZFRvVGVt
cGxhdGUoZGVzYywgVjhUZXN0VHlwZWRlZnNBdHRyc0Zvck1haW5Xb3JsZCwgV1RGX0FSUkFZX0xF
TkdUSChWOFRlc3RUeXBlZGVmc0F0dHJzRm9yTWFpbldvcmxkKSwgMCwgMCwgaXNvbGF0ZSwgZGVm
YXVsdFNpZ25hdHVyZSk7CisKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdtZXRob2RXaXRoU2Vx
dWVuY2VBcmcnCiAgICAgY29uc3QgaW50IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2MgPSAxOwot
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFy
Z0FyZ3ZbbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOHNlcXVlbmNlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT46OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2Nd
ID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhzZXF1
ZW5jZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+OjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9Owog
ICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0
dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2Ms
IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJtZXRob2RXaXRoU2VxdWVuY2VBcmciKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjptZXRob2RXaXRoU2VxdWVuY2VBcmdNZXRob2RD
YWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0dXJlKSk7
CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdudWxsYWJsZUFycmF5QXJnJwogICAgIGNvbnN0
IGludCBudWxsYWJsZUFycmF5QXJnQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gbnVsbGFibGVBcnJheUFyZ0FyZ3ZbbnVsbGFibGVBcnJheUFyZ0FyZ2NdID0g
eyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJp
bmdbXTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IG51bGxhYmxlQXJyYXlBcmdBcmd2W251bGxhYmxlQXJyYXlBcmdBcmdjXSA9IHsgVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106
OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJl
PiBudWxsYWJsZUFycmF5QXJnU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG51
bGxhYmxlQXJyYXlBcmdBcmdjLCBudWxsYWJsZUFycmF5QXJnQXJndik7CiAgICAgcHJvdG8tPlNl
dCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm51bGxhYmxlQXJyYXlBcmciKSwgdjg6OkZ1bmN0aW9u
VGVtcGxhdGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjpudWxsYWJsZUFycmF5QXJnTWV0
aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIG51bGxhYmxlQXJyYXlBcmdTaWduYXR1cmUpKTsK
IAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmluZ0FycmF5RnVuY3Rpb24nCiAgICAgY29u
c3QgaW50IHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0
aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRl
KCZWOERPTVN0cmluZ1tdOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3RyaW5nQXJyYXlGdW5j
dGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0
ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpTaWduYXR1cmU+IHN0cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6U2ln
bmF0dXJlOjpOZXcoZGVzYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MsIHN0cmluZ0FycmF5RnVu
Y3Rpb25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3RyaW5n
QXJyYXlGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OnN0cmluZ0FycmF5RnVuY3Rpb25NZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQo
KSwgc3RyaW5nQXJyYXlGdW5jdGlvblNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25h
dHVyZSAnc3RyaW5nQXJyYXlGdW5jdGlvbjInCiAgICAgY29uc3QgaW50IHN0cmluZ0FycmF5RnVu
Y3Rpb24yQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3Ry
aW5nQXJyYXlGdW5jdGlvbjJBcmd2W3N0cmluZ0FycmF5RnVuY3Rpb24yQXJnY10gPSB7IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjpp
bmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
c3RyaW5nQXJyYXlGdW5jdGlvbjJBcmd2W3N0cmluZ0FycmF5RnVuY3Rpb24yQXJnY10gPSB7IFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1td
OjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVy
ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbjJTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVz
Yywgc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmdjLCBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ3YpOwog
ICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdHJpbmdBcnJheUZ1bmN0aW9u
MiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0
cmluZ0FycmF5RnVuY3Rpb24yTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHN0cmluZ0Fy
cmF5RnVuY3Rpb24yU2lnbmF0dXJlKSk7CiAKQEAgLTU3OCwyMyArNzU2LDIzIEBAIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0VHlwZWRl
ZnNUZW1wbGF0ZSh2ODo6CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RUeXBlZGVmczo6R2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFR5cGVkZWZzOjpHZXRUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAg
IFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
OwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBk
YXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQg
IT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVE
YXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3Vy
cmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1w
bGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+
dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhU
ZXN0VHlwZWRlZnNUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwg
aXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFk
ZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRl
KGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3Vy
cmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSku
YWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdFR5
cGVkZWZzOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29s
YXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0VHlw
ZWRlZnM6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICBy
ZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8s
IHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQog
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RUeXBlZGVmcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdFR5cGVkZWZzLmgKaW5kZXggZWU5ZWMyZjRlNDBmMTcxYTg1MTFiNTNhMjZlMGM2NmVm
YzdkYTMwYS4uNDAyYTA0NTI1NDA3MDI0ZTU4OGEzM2MyZjYxNTJmN2IzZTEwOWZlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVk
ZWZzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dFR5cGVkZWZzLmgKQEAgLTY5LDYgKzY5LDE3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOChUZXN0VHlwZWRlZnMqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlCiAg
ICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5s
aW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9yTWFpbldvcmxkKFRlc3RUeXBlZGVmcyog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxk
KTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENo
ZWNrKGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0
YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5J
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGws
IGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNv
bnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4RmFzdChUZXN0VHlwZWRlZnMqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFp
bmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTgxLDYgKzkyLDI1IEBAIGlubGluZSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdFR5cGVkZWZzKiBpbXBsLCBjb25zdCBI
b2xkZXJDb250YWluZXImCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xh
c3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1h
aW5Xb3JsZChUZXN0VHlwZWRlZnMqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFp
bmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNvbnRh
aW5lci5HZXRJc29sYXRlKCkpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBs
KSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJG
b3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRlcigp
LCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29u
dGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjhGYXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IFRlc3RUeXBlZGVmcyA+IGltcGwsIGNvbnN0
IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAg
ICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFw
cGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3Jh
cHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRy
PCBUZXN0VHlwZWRlZnMgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwg
V3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCks
IGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTURhdGFTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0
YVN0b3JlLmgKaW5kZXggYzA1MDMzZjBiNmNhNWMzNjk4YWE3NjQ1ODM5NmZhYTNjMTJmMGVhNi4u
YjQwMGVlM2QzMGYyYTk1YTkxNjhmN2Y5YmMxNTI3MDRlZjY3YjU0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKQEAgLTg0LDYgKzg0LDE2IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGdldFdyYXBwZXJGb3JNYWluV29ybGQoVCogb2JqZWN0KQorICAgIHsKKyAg
ICAgICAgaWYgKG1haW5Xb3JsZFdyYXBwZXJJc1N0b3JlZEluT2JqZWN0KG9iamVjdCkgJiYgaXNN
YWluV29ybGRPYmplY3Qob2JqZWN0KSkgeworICAgICAgICAgICAgaWYgKExJS0VMWSghRE9NV3Jh
cHBlcldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpKQorICAgICAgICAgICAgICAgIHJldHVy
biBnZXRXcmFwcGVyRnJvbU9iamVjdChvYmplY3QpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBtYWluV29ybGRTdG9yZSgpLT5nZXQob2JqZWN0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXIoVCogb2JqZWN0LCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBjb25zdCBXcmFw
cGVyQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICB7CiAgICAgICAgIGlmIChtYWlu
V29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChvYmplY3QpICYmIGlzTWFpbldvcmxkT2JqZWN0
KG9iamVjdCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
Q29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZp
Z3VyYXRpb24uY3BwCmluZGV4IDVmZTdiY2ZhY2RkZTU2NTcyYjVlMjBiMGViMzY3ZTU2MGRlY2Fl
OWQuLmY5MjM0ZjdhMjVkYWUxOGJlOTU3NTAyNzkzNzEyZWJhYWJkMzQ5YjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmNwcApAQCAtNzcs
NCArNzcsMTQgQEAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IFY4RE9NQ29uZmlndXJhdGlvbjo6
Y29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djgKICAgICByZXR1cm4gZGVmYXVsdFNp
Z25hdHVyZTsKIH0KIAordm9pZCBWOERPTUNvbmZpZ3VyYXRpb246OmFkZFRvVGVtcGxhdGUodjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZ1bmN0aW9uRGVzY3JpcHRvciwgY29u
c3QgQmF0Y2hlZEF0dHJpYnV0ZSogYXR0cmlidXRlcywgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LCBj
b25zdCBCYXRjaGVkTWV0aG9kKiBjYWxsYmFja3MsIHNpemVfdCBjYWxsYmFja0NvdW50LCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IHNpZ25hdHVyZSkKK3sK
KyAgICBpZiAoYXR0cmlidXRlQ291bnQpIHsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RU
ZW1wbGF0ZT4gaW5zdGFuY2UgPSBmdW5jdGlvbkRlc2NyaXB0b3ItPkluc3RhbmNlVGVtcGxhdGUo
KTsKKyAgICAgICAgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKGluc3RhbmNlLCBmdW5jdGlvbkRl
c2NyaXB0b3ItPlByb3RvdHlwZVRlbXBsYXRlKCksIGF0dHJpYnV0ZXMsIGF0dHJpYnV0ZUNvdW50
LCBpc29sYXRlKTsKKyAgICB9CisgICAgaWYgKGNhbGxiYWNrQ291bnQpCisgICAgICAgIGJhdGNo
Q29uZmlndXJlQ2FsbGJhY2tzKGZ1bmN0aW9uRGVzY3JpcHRvci0+UHJvdG90eXBlVGVtcGxhdGUo
KSwgc2lnbmF0dXJlLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpEb250
RGVsZXRlKSwgY2FsbGJhY2tzLCBjYWxsYmFja0NvdW50LCBpc29sYXRlKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01Db25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNv
bmZpZ3VyYXRpb24uaAppbmRleCA4ZjljOTFhMGFhMzBmOTg0NDA4NWI4NzBiOGVjOWE1ZGNlMmEx
Y2ZmLi5hYzAyODY4ZDcyYzIzNzI2YWQ1MDI2MTNlZTcwMzk0YWFhYzIyNmE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaApAQCAtODUsNiAr
ODUsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgYmF0Y2hDb25maWd1cmVDYWxsYmFja3Mo
djg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+LCB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+
LCB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIGNvbnN0IEJhdGNoZWRNZXRob2QqLCBzaXplX3QgY2Fs
bGJhY2tDb3VudCwgdjg6Oklzb2xhdGUqKTsKIAogICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6OlNp
Z25hdHVyZT4gY29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+LCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gcGFyZW50Q2xhc3MsIHNpemVfdCBmaWVsZENvdW50LCBjb25zdCBCYXRj
aGVkQXR0cmlidXRlKiwgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LCBjb25zdCBCYXRjaGVkTWV0aG9k
Kiwgc2l6ZV90IGNhbGxiYWNrQ291bnQsIHY4OjpJc29sYXRlKik7CisKKyAgICBzdGF0aWMgdm9p
ZCBhZGRUb1RlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiwgY29u
c3QgQmF0Y2hlZEF0dHJpYnV0ZSosIHNpemVfdCBhdHRyaWJ1dGVDb3VudCwgY29uc3QgQmF0Y2hl
ZE1ldGhvZCosIHNpemVfdCBjYWxsYmFja0NvdW50LCB2ODo6SXNvbGF0ZSosIHY4OjpMb2NhbDx2
ODo6U2lnbmF0dXJlPik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNw
cAppbmRleCA1OTViZGY4OTlmZGZjZjYzYTMxZTkwMjBkMGUwOGVhMDEyY2I3NmU1Li43NTU3MjJi
NGZiNjE1NmI1OGM4MDRjY2U4NTIwMzk2YjUzMjdiOGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTYx
MSw0ICs2MTEsOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChET01XaW5kb3cqIHdpbmRv
dywgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbgogICAgIHJldHVybiBnbG9iYWw7
CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9yTWFpbldvcmxkKERPTVdpbmRvdyog
d2luZG93LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCit7CisgICAgcmV0dXJuIHRvVjgod2luZG93LCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFRhcmdldEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFRhcmdldEN1c3RvbS5jcHAK
aW5kZXggZTc4OTZjYzExMTk1MWZiODgzOTA2MWZjOWY1Y2U0NjdiOWQ4ODk5Ny4uM2Y3OWNhN2Qw
YmI4YmQwNjRiOWE4YjZhNDI3MmE3N2UzYzkyMzNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRUYXJnZXRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAt
NTMsNiArNTMsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRXZlbnRUYXJnZXQqIGlt
cGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db24KICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoRXZl
bnRUYXJnZXQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICByZXR1cm4gdG9WOChpbXBsLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOworfQorCiAjdW5kZWYgVFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAKaW5kZXggZTExOWVlNWJmMDE3Y2JiNTQ1
ZmEyNDM4ZTExNTJiY2M1Y2Y2NmIyZS4uNDY3ZTFhNmJmYWI2M2VmMjkyYjM1OWUzMjc2MWYwMjY1
YWE4YTY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SURCQW55Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhJREJBbnlDdXN0b20uY3BwCkBAIC0xMDEsNiArMTAxLDExIEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4KElEQkFueSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoSURCQW55KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgcmV0dXJu
IHRvVjgoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNaWNyb0RhdGFJdGVtVmFs
dWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWljcm9E
YXRhSXRlbVZhbHVlQ3VzdG9tLmNwcAppbmRleCA5NTNiYmVjMTUwN2JkMjQ2Y2JmN2M3M2Q5ZDQx
YjE0Y2RkNzllMmQyLi4yNjBhZTc4OWFhZTA5YTlhZTgyZDZlOWZmNTM5MDczMzYxNjczYjlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNaWNyb0RhdGFJ
dGVtVmFsdWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE1pY3JvRGF0YUl0ZW1WYWx1ZUN1c3RvbS5jcHAKQEAgLTQ4LDYgKzQ4LDExIEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4KE1pY3JvRGF0YUl0ZW1WYWx1ZSogaXRlbVZhbHVlLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+CiAgICAgcmV0dXJuIHY4U3RyaW5nKGl0ZW1WYWx1ZS0+Z2V0U3Ry
aW5nKCksIGlzb2xhdGUpOwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5X
b3JsZChNaWNyb0RhdGFJdGVtVmFsdWUqIGl0ZW1WYWx1ZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIHJldHVybiB0
b1Y4KGl0ZW1WYWx1ZSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKE1JQ1JPREFUQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggOTA2YTE0
ZDNhYjc0YWMwN2NjZDA3MzJmYzBhNzMwOTE0ODJlYjlkYy4uNzJmNmUzZDRjMDkwMzQwZTUwZGE3
YWQ4NWRlOGM4MWQxNmI3M2YwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTE0MCw2ICsx
NDAsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoV29ya2VyQ29udGV4dCogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkMKICAgICByZXR1cm4gZ2xvYmFsOwogfQog
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChXb3JrZXJDb250ZXh0KiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCit7CisgICAgcmV0dXJuIHRvVjgoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdP
UktFUlMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193690</attachid>
            <date>2013-03-18 16:49:38 -0700</date>
            <delta_ts>2013-03-18 16:57:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111417-20130319004529.patch</filename>
            <type>text/plain</type>
            <size>393445</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRkNzJhZmYzYjFjNjM3
NGQxMDg2MWRiOGUwYmI1NDRmYjE4NTM2Yi4uOTQ4NzFmMzY3Y2IyMTQ4ZGM1NWQ3ZWYxMmY0ZTgw
ZjczOTlhMzQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5MyBAQAorMjAxMy0wMy0xOCAgTWFy
amEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBBZGQgbWFj
aGluZXJ5IGZvciBnZW5lcmF0aW5nIHNwZWNpYWxpemVkIGJpbmRpbmdzIGZvciB0aGUgbWFpbiB3
b3JsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEx
NDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IG5ldyBzcGVjaWFsaXplZCBiaW5kaW5ncyB3aWxsIGJlIGZhc3RlciwgYmVjYXVzZSB0aGV5IGRv
bid0IG5lZWQgdG8KKyAgICAgICAgZG8gdGhlICJtYWluIHdvcmxkLCBpc29sYXRlZCB3b3JsZCBv
ciBhIHdvcmtlciIgY2hlY2ssIGJ1dCBjYW4gcmlnaHQKKyAgICAgICAgYXdheSBhc3N1bWUgdGhh
dCB3ZSdyZSBpbiB0aGUgbWFpbiB3b3JsZC4KKworICAgICAgICBUaGlzIHBhdGNoIGdlbmVyYXRl
cyBtYWluIHdvcmxkIGJpbmRpbmdzIGZvciBnZXR0ZXJzIGFuZCBzZXR0ZXJzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAodXBkYXRlZCBleGlzdGluZyBiaW5kaW5ncyB0ZXN0cykuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVy
YXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlckNhbGxiYWNrKToK
KyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZU5v
cm1hbEF0dHJTZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0
ZXIpOgorICAgICAgICAoR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yKToKKyAgICAgICAgKEdlbmVy
YXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZSk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0
aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbik6CisgICAgICAg
IChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZyk6CisgICAgICAgIChDcmVhdGVDdXN0b21TaWdu
YXR1cmUpOgorICAgICAgICAoTmF0aXZlVG9KU1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
ZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEZsb2F0
NjRBcnJheTo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJyYXk6
Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9h
dDY0QXJyYXkuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhj
aXRpbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChUZXN0QWN0aXZlRE9N
T2JqZWN0VjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0
VjhJbnRlcm5hbDo6ZXhjaXRpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0QWN0
aXZlRE9NT2JqZWN0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9N
T2JqZWN0OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RBY3RpdmVET01P
YmplY3Q6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JN
YWluV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0
b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RDdXN0
b21OYW1lZEdldHRlclRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEN1c3RvbU5h
bWVkR2V0dGVyOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21O
YW1lZEdldHRlcjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhG
YXN0Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RXZlbnRDb25z
dHJ1Y3RvclY4SW50ZXJuYWw6OmF0dHIxQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAg
IChUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dEV2ZW50Q29uc3RydWN0b3JWOEludGVybmFsOjphdHRyMUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJu
YWw6OmF0dHIyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWw6OmF0dHIyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJl
VjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEV2ZW50Q29uc3RydWN0b3I6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6
dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OnRvVjhGYXN0Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhU
ZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFdmVudFRh
cmdldDo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRUYXJnZXQ6
Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0RXhjZXB0aW9uVjhJbnRlcm5hbDo6bmFtZUF0dHJHZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoVGVzdEV4Y2VwdGlvblY4SW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdEV4Y2VwdGlvblY4SW50ZXJuYWw6Om5hbWVBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb25maWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RFeGNlcHRpb246OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV4
Y2VwdGlvbjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RFeGNlcHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5X
b3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxl
bWVudGFsU3RhdGljUmVhZE9ubHlBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAg
IChUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJm
YWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOElu
dGVybmFsOjpzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3Rh
dGljQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJTZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJu
YWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRh
bFN0cjFBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRl
cmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIxQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBw
bGVtZW50YWxTdHIyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyMkF0dHJHZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5h
bDo6c3VwcGxlbWVudGFsU3RyMkF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRyU2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4
SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRh
bFN0cjNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRyR2V0dGVyRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBw
bGVtZW50YWxOb2RlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0clNldHRl
ckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5h
bDo6c3VwcGxlbWVudGFsTm9kZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEludGVyZmFj
ZVRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6R2V0VGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50ZXJmYWNlOjpIYXNJbnN0YW5jZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RG
b3JNYWluV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RO
YW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5hbWVkQ29uc3Ry
dWN0b3JDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmln
dXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdE5hbWVkQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdE5hbWVkQ29uc3RydWN0b3I6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RO
b2RlVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Tm9kZTo6R2V0VGVtcGxhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Tm9kZTo6SGFzSW5zdGFuY2UpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmg6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OnJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFRlc3RP
YmpWOEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWFk
T25seUxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVN0cmluZ0F0dHJBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWFkT25s
eVN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5VGVzdE9iakF0dHJBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWFkT25s
eVRlc3RPYmpBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNSZWFkT25seUxvbmdBdHRyQXR0ckdldHRl
ckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3Rh
dGljUmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljU3RyaW5nQXR0ckF0dHJHZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0
YXRpY1N0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVyRm9y
TWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNT
dHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjplbnVtQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVudW1BdHRyQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjplbnVtQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OmVudW1BdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzaG9ydEF0dHJBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzaG9y
dEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OnNob3J0QXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnNob3J0QXR0ckF0dHJTZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
dW5zaWduZWRTaG9ydEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZFNob3J0QXR0ckF0dHJHZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dW5z
aWduZWRTaG9ydEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZFNob3J0QXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0
dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpsb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6bG9uZ0xvbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNr
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpsb25n
TG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdB
dHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xv
bmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJB
dHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjpzdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyQXR0clNldHRlckZvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0ckF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6dGVzdE9iakF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp0ZXN0T2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dGVz
dE9iakF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjp0ZXN0T2JqQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJHZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OlhN
TE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6OlhNTE9iakF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0clNldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjpjcmVhdGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjpjcmVhdGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNyZWF0ZUF0dHJTZXR0ZXJGb3JN
YWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNyZWF0ZUF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRy
QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjpyZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRJbnRlZ3Jh
bEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEludGVncmFsQXR0ckF0
dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVW5zaWduZWRJ
bnRlZ3JhbEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRVbnNpZ25lZElu
dGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0
ZWRCb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRyU2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZs
ZWN0ZWRCb29sZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJHZXR0ZXJG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxl
Y3RlZFVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyU2V0dGVyRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRV
UkxBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZs
ZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVn
cmFsQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVm
bGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0
dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyU2V0dGVyRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0
b21Cb29sZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJHZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJl
ZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5QXR0ckF0
dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OnR5cGVkQXJyYXlBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5QXR0ckF0dHJTZXR0ZXJG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnR5cGVk
QXJyYXlBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0
dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4
Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0
aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0
aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjdXN0b21BdHRyQXR0ckdldHRlckNhbGxiYWNr
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjdXN0
b21BdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0
dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
Ojp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
dHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlUmFpc2VzQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlz
ZXNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2Vz
QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0
QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0Fu
ZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENh
bGxTdGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRy
aWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFu
Z2VMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZUxvbmdBdHRyQXR0clNldHRlckZv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3Jj
ZWRSYW5nZUxvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0
ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbmZvcmNl
ZFJhbmdlVW5zaWduZWRMb25nQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdBdHRy
QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRyQXR0ckdldHRlckZvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5n
ZUxvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZUxvbmdMb25nQXR0ckF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OmVuZm9yY2VkUmFuZ2VMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNp
Z25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdMb25nQXR0ckF0
dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckZv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3Jj
ZWRSYW5nZVVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIx
QXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6Y29uZGl0aW9uYWxBdHRyMUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMUF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OmNvbmRpdGlvbmFsQXR0cjFBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb25k
aXRpb25hbEF0dHIyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIyQXR0clNldHRlckZvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9u
YWxBdHRyMkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXJGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0
cjNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjNBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIzQXR0
clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjpjYWNoZWRBdHRyaWJ1dGUxQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y2FjaGVkQXR0cmlidXRlMUF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6Y2FjaGVkQXR0cmlidXRlMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OmFueUF0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OmFueUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6YW55QXR0cmlidXRl
QXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6YW55QXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRy
MUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGlt
ZUF0dHIyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRS
dW50aW1lQXR0cjJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyU2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJs
ZWRQZXJDb250ZXh0QXR0cjFBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjplbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0
cjJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjJBdHRyU2V0dGVyQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0
QXR0cjJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0clNldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFycmF5
QXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6ZmxvYXRBcnJheUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZmxvYXRBcnJheUF0dHJTZXR0ZXJGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJyYXlB
dHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZG91YmxlQXJyYXlBdHRyR2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmRv
dWJsZUFycmF5QXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6ZG91YmxlQXJyYXlBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbnRlbnREb2N1bWVudEF0
dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OmNvbnRlbnREb2N1bWVudEF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50QXR0ckdldHRlckZv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJs
ZVBvaW50QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRBdHRyU2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OmltbXV0YWJsZVBvaW50QXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRyR2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Omlt
bXV0YWJsZVBvaW50QXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmF3YmVycnlB
dHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjpzdHJhd2JlcnJ5QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJhd2JlcnJ5QXR0clNldHRlckZvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJyeUF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGbG9hdEF0dHJHZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3Ry
aWN0RmxvYXRBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjpzdHJpY3RGbG9hdEF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZGVzY3JpcHRpb25BdHRyR2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpk
ZXNjcmlwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6aWRBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjppZEF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6aWRBdHRyU2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpp
ZEF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6aGFzaEF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Omhhc2hBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlcGxhY2VhYmxlQXR0
cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6cmVwbGFjZWFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlRG91
YmxlQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51
bGxhYmxlTG9uZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6bnVsbGFibGVCb29sZWFuQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVCb29sZWFuQXR0cmlidXRl
QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5n
QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJH
ZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdT
ZXR0YWJsZUF0dHJpYnV0ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0clNl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJH
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVBdHRy
U2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RPYmo6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE9iajo6
SGFzSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2JqOjppbnN0YWxsUGVyQ29u
dGV4dFByb3BlcnRpZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPYmouaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1RlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOgorICAgICAgICAoV2ViQ29y
ZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjp2
YWx1ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjp2YWx1ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50
ZXJuYWw6OnZhbHVlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpyZWFk
b25seVZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6cmVhZG9ubHlWYWx1ZUF0
dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkVmFsdWVBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkVmFsdWVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOElu
dGVybmFsOjpjYWNoZWRWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5h
bDo6cG9ydHNBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpwb3J0c0F0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb25maWd1cmVWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VUZW1wbGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6
OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZTo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RU
eXBlZGVmc1Y4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlckZvck1haW5X
b3JsZCk6CisgICAgICAgIChUZXN0VHlwZWRlZnNWOEludGVybmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25n
QXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0VHlwZWRlZnNWOEludGVybmFsOjppbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50
ZXJuYWw6OmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjpp
bW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmltbXV0YWJsZVNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0
dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldp
dGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVm
c1Y4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0
dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5n
QXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0
clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOElu
dGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjpz
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVm
c1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRl
c3RUeXBlZGVmczo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0VHlwZWRl
ZnM6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0VHlwZWRlZnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6
CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoRE9NRGF0
YVN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUF0dHJp
YnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVU
ZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmg6Cisg
ICAgICAgIChCYXRjaGVkQXR0cmlidXRlKToKKyAgICAgICAgKFY4RE9NQ29uZmlndXJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRUYXJnZXRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNaWNyb0RhdGFJdGVtVmFsdWVDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6
CisKIDIwMTMtMDMtMTggIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW3Y4XSBTdXBwcmVzcyBiaW5kaW5nIGludGVncml0eSBjaGVjayBvZiBIVE1MQ29udGVudEVs
ZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtCmluZGV4IGRlMjE0NTVhZTA2Nzc1YjRiYjMzZjFjNzMwODM5NDVlMjU1MzZhMDEu
LmM3MDY4MjI5M2FhZTg3NGE2ZmE3Njk4OWJkNzEyNTkwMTc1MDNiOTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC01MzEs
MTIgKzUzMSwxOSBAQCBFTkQKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwog
Y2xhc3MgJHtuYXRpdmVUeXBlfTsKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KCR7bmF0aXZl
VHlwZX0qLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqKTsKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9yTWFpbldvcmxkKCR7bmF0aXZlVHlw
ZX0qLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
KTsKIAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KCR7bmF0aXZlVHlwZX0qIGltcGws
IGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqKQogewogICAgIHJl
dHVybiB0b1Y4KGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUo
KSk7CiB9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxl
PgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZCgke25h
dGl2ZVR5cGV9KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBh
YmxlKikKK3sKKyAgICByZXR1cm4gdG9WOEZvck1haW5Xb3JsZChpbXBsLCBjb250YWluZXIuSG9s
ZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQogRU5ECiAgICAgfSBlbHNlIHsKIApA
QCAtNTc0LDYgKzU4MSwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoJHtu
YXRpdmVUeXBlfSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcgogICAgIHJldHVybiB3
cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZCgke25hdGl2ZVR5cGV9KiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
Cit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOworICAgIGlm
IChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0
ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6Omdl
dFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuICRyZXR1cm5pbmdXcmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGws
IGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNv
bnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4RmFzdCgke25hdGl2ZVR5cGV9KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRh
aW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CkBAIC01ODQsNiArNjAyLDI1IEBAIGlubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoJHtuYXRpdmVUeXBlfSogaW1wbCwgY29u
c3QgSG9sZGVyQ29udGFpbmVyCiAgICAgICAgIHJldHVybiAkcmV0dXJuaW5nV3JhcHBlcjsKICAg
ICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29s
YXRlKCkpOwogfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBw
YWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQo
JHtuYXRpdmVUeXBlfSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdy
YXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVyLkdl
dElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAg
ICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5X
b3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
JHJldHVybmluZ1dyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRl
cigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVy
Q29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8ICR7bmF0aXZlVHlwZX0gPiBpbXBsLCBj
b25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7
CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRhaW5lciwg
d3JhcHBhYmxlKTsKK30KKwogRU5ECiAgICAgfQogCkBAIC04ODcsNiArOTI0LDcgQEAgc3ViIEdl
bmVyYXRlTm9ybWFsQXR0ckdldHRlckNhbGxiYWNrCiB7CiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNo
aWZ0OwogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKyAgICBteSAkZm9yTWFpbldvcmxkU3Vm
Zml4ID0gc2hpZnQ7CiAKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7
CiAgICAgbXkgJHY4SW50ZXJmYWNlTmFtZSA9ICJWOCRpbnRlcmZhY2VOYW1lIjsKQEAgLTg5Niwx
MyArOTM0LDEzIEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJDYWxsYmFjawogICAgIG15
ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFs
U3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRl
cm5hbHMsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3Ry
aW5nOwogCi0gICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICJzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+ICR7YXR0ck5hbWV9QXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKVxuIik7CisgICAgcHVz
aChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICJzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7
YXR0ck5hbWV9QXR0ckdldHRlckNhbGxiYWNrJHtmb3JNYWluV29ybGRTdWZmaXh9KHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKVxuIik7CiAg
ICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICJ7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29u
dGVudEludGVybmFscywgR2VuZXJhdGVGZWF0dXJlT2JzZXJ2YXRpb24oJGF0dHJFeHQtPnsiVjhN
ZWFzdXJlQXMifSkpOwogICAgIGlmIChIYXNDdXN0b21HZXR0ZXIoJGF0dHJFeHQpKSB7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIHJldHVybiAke3Y4SW50ZXJmYWNl
TmFtZX06OiR7YXR0ck5hbWV9QXR0ckdldHRlckN1c3RvbShuYW1lLCBpbmZvKTtcbiIpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIHJldHVy
biAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0dGVyKG5hbWUs
IGluZm8pO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIHJl
dHVybiAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0dGVyJHtm
b3JNYWluV29ybGRTdWZmaXh9KG5hbWUsIGluZm8pO1xuIik7CiAgICAgfQogICAgIHB1c2goQGlt
cGxDb250ZW50SW50ZXJuYWxzLCAifVxuXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVy
bmFscywgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7CkBAIC05MTIsNiArOTUwLDcgQEAgc3ViIEdlbmVyYXRlTm9ybWFsQXR0ckdldHRl
cgogewogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0gc2hp
ZnQ7CisgICAgbXkgJGZvck1haW5Xb3JsZFN1ZmZpeCA9IHNoaWZ0OwogCiAgICAgbXkgJGludGVy
ZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwogICAgIG15ICR2OEludGVyZmFjZU5hbWUgPSAi
VjgkaW50ZXJmYWNlTmFtZSI7CkBAIC05MzEsNyArOTcwLDcgQEAgc3ViIEdlbmVyYXRlTm9ybWFs
QXR0ckdldHRlcgogICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5H
ZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAgcHVz
aChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCA8
PEVORCk7Ci1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7YXR0ck5hbWV9QXR0ckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHthdHRyTmFtZX1BdHRyR2V0dGVyJHtm
b3JNYWluV29ybGRTdWZmaXh9KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogRU5ECiAgICAgaWYgKCRzdmdOYXRpdmVUeXBlKSB7CkBA
IC0xMTExLDcgKzExNTAsNyBAQCBFTkQKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4JGF0
dHJUeXBlLmgiKTsKICAgICAgICAgbXkgJHN2Z05hdGl2ZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+
R2V0U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRhdHRyVHlwZSk7CiAgICAgICAgICMgQ29udmVydCBm
cm9tIGFic3RyYWN0IFNWR1Byb3BlcnR5IHRvIHJlYWwgdHlwZSwgc28gdGhlIHJpZ2h0IHRvSlMo
KSBtZXRob2QgY2FuIGJlIGludm9rZWQuCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJu
YWxzLCAiICAgIHJldHVybiB0b1Y4RmFzdChzdGF0aWNfY2FzdDwkc3ZnTmF0aXZlVHlwZSo+KCRy
ZXN1bHQpLCBpbmZvLCBpbXApO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJu
YWxzLCAiICAgIHJldHVybiB0b1Y4RmFzdCRmb3JNYWluV29ybGRTdWZmaXgoc3RhdGljX2Nhc3Q8
JHN2Z05hdGl2ZVR5cGUqPigkcmVzdWx0KSwgaW5mbywgaW1wKTtcbiIpOwogICAgIH0gZWxzaWYg
KCRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigkYXR0clR5cGUpIGFuZCBu
b3QgJGludGVyZmFjZU5hbWUgPX4gL0xpc3QkLykgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiVjgkYXR0clR5cGUuaCIpOwogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU1ZHUHJvcGVy
dHlUZWFyT2ZmLmgiKTsKQEAgLTExNDksNyArMTE4OCw3IEBAIEVORAogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICR3cmFwcGVkVmFsdWUgPSAiV1RGOjpnZXRQdHIoJHt0ZWFyT2Zm
VHlwZX06OmNyZWF0ZSgkcmVzdWx0KSkiOwogICAgICAgICB9Ci0gICAgICAgIHB1c2goQGltcGxD
b250ZW50SW50ZXJuYWxzLCAiICAgIHJldHVybiB0b1Y4RmFzdCgkd3JhcHBlZFZhbHVlLCBpbmZv
LCBpbXApO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIHJl
dHVybiB0b1Y4RmFzdCRmb3JNYWluV29ybGRTdWZmaXgoJHdyYXBwZWRWYWx1ZSwgaW5mbywgaW1w
KTtcbiIpOwogICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSBlcSAiTWVz
c2FnZVBvcnRBcnJheSIpIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIk1lc3NhZ2VQb3J0
LmgiKTsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4TWVzc2FnZVBvcnQuaCIpOwpAQCAt
MTE2MSw3ICsxMjAwLDcgQEAgRU5ECiAgICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0c0NvcHkoKnBv
cnRzKTsKICAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBwb3J0QXJyYXkgPSB2ODo6QXJyYXk6Ok5l
dyhwb3J0c0NvcHkuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBvcnRzQ29w
eS5zaXplKCk7ICsraSkKLSAgICAgICAgcG9ydEFycmF5LT5TZXQodjhJbnRlZ2VyKGksIGluZm8u
R2V0SXNvbGF0ZSgpKSwgdG9WOEZhc3QocG9ydHNDb3B5W2ldLmdldCgpLCBpbmZvLCBpbXApKTsK
KyAgICAgICAgcG9ydEFycmF5LT5TZXQodjhJbnRlZ2VyKGksIGluZm8uR2V0SXNvbGF0ZSgpKSwg
dG9WOEZhc3QkZm9yTWFpbldvcmxkU3VmZml4KHBvcnRzQ29weVtpXS5nZXQoKSwgaW5mbywgaW1w
KSk7CiAgICAgcmV0dXJuIHBvcnRBcnJheTsKIEVORAogICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+dHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIiAmJiAkYXR0ckV4dC0+
eyJDYWNoZWRBdHRyaWJ1dGUifSkgewpAQCAtMTE3Myw3ICsxMjEyLDcgQEAgRU5ECiAgICAgcmV0
dXJuIHZhbHVlOwogRU5ECiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJ
bnRlcm5hbHMsICIgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLCAkcmVzdWx0LCAiaW5mby5Ib2xkZXIoKSIsICJpbmZvLkdldElzb2xhdGUoKSIsICJp
bmZvIiwgImltcCIsICJSZXR1cm5VbnNhZmVIYW5kbGUiKS4iO1xuIik7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIHJldHVybiAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSwgJHJlc3VsdCwgImluZm8uSG9sZGVyKCkiLCAiaW5mby5HZXRJ
c29sYXRlKCkiLCAiaW5mbyIsICJpbXAiLCAiUmV0dXJuVW5zYWZlSGFuZGxlIiwgJGZvck1haW5X
b3JsZFN1ZmZpeCkuIjtcbiIpOwogICAgIH0KIAogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJu
YWxzLCAifVxuXG4iKTsgICMgZW5kIG9mIGdldHRlcgpAQCAtMTIyMSw2ICsxMjYwLDcgQEAgc3Vi
IEdlbmVyYXRlTm9ybWFsQXR0clNldHRlckNhbGxiYWNrCiB7CiAgICAgbXkgJGF0dHJpYnV0ZSA9
IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKyAgICBteSAkZm9yTWFpbldvcmxk
U3VmZml4ID0gc2hpZnQ7CiAKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5h
bWU7CiAgICAgbXkgJHY4SW50ZXJmYWNlTmFtZSA9ICJWOCRpbnRlcmZhY2VOYW1lIjsKQEAgLTEy
MzAsMTMgKzEyNzAsMTMgQEAgc3ViIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlckNhbGxiYWNrCiAg
ICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0
aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKICAgICBwdXNoKEBpbXBsQ29udGVu
dEludGVybmFscywgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgInN0YXRpYyB2b2lk
ICR7YXR0ck5hbWV9QXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bylcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAic3RhdGljIHZvaWQgJHth
dHRyTmFtZX1BdHRyU2V0dGVyQ2FsbGJhY2ske2Zvck1haW5Xb3JsZFN1ZmZpeH0odjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKVxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMs
ICJ7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgR2VuZXJhdGVGZWF0dXJl
T2JzZXJ2YXRpb24oJGF0dHJFeHQtPnsiVjhNZWFzdXJlQXMifSkpOwogICAgIGlmIChIYXNDdXN0
b21TZXR0ZXIoJGF0dHJFeHQpKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxz
LCAiICAgICR7djhJbnRlcmZhY2VOYW1lfTo6JHthdHRyTmFtZX1BdHRyU2V0dGVyQ3VzdG9tKG5h
bWUsIHZhbHVlLCBpbmZvKTtcbiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxD
b250ZW50SW50ZXJuYWxzLCAiICAgICR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke2F0dHJO
YW1lfUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pO1xuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50SW50ZXJuYWxzLCAiICAgICR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke2F0
dHJOYW1lfUF0dHJTZXR0ZXIke2Zvck1haW5Xb3JsZFN1ZmZpeH0obmFtZSwgdmFsdWUsIGluZm8p
O1xuIik7CiAgICAgfQogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAifVxuXG4iKTsK
ICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFs
U3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CkBAIC0xMjQ2LDYgKzEyODYsNyBA
QCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyCiB7CiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNo
aWZ0OwogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKyAgICBteSAkZm9yTWFpbldvcmxkU3Vm
Zml4ID0gc2hpZnQ7CiAKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7
CiAgICAgbXkgJHY4SW50ZXJmYWNlTmFtZSA9ICJWOCRpbnRlcmZhY2VOYW1lIjsKQEAgLTEyNTks
NyArMTMwMCw3IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIKIAogICAgIG15ICRjb25k
aXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5n
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMs
ICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwot
ICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAic3RhdGljIHZvaWQgJHthdHRyTmFtZX1B
dHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbylcbiIpOworICAgIHB1c2goQGlt
cGxDb250ZW50SW50ZXJuYWxzLCAic3RhdGljIHZvaWQgJHthdHRyTmFtZX1BdHRyU2V0dGVyJHtm
b3JNYWluV29ybGRTdWZmaXh9KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbylcbiIpOwogICAg
IHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAie1xuIik7CiAKICAgICAjIElmIHRoZSAiU3Ry
aWN0VHlwZUNoZWNraW5nIiBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgYW5kIHRoZSBh
dHRyaWJ1dGUncyB0eXBlIGlzIGFuCkBAIC0yMjc1LDcgKzIzMTYsNyBAQCBFTkQKIAogICAgIHB1
c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpH
ZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50
V29ybGRUeXBlKQogewogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gY2FjaGVkVGVtcGxhdGU7CiAgICAgaWYgKCFjYWNoZWRUZW1wbGF0ZS5Jc0VtcHR5KCkp
CkBAIC0yMjg3LDcgKzIzMjgsNyBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gJHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKAogICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gcmVzdWx0LT5JbnN0YW5jZVRlbXBs
YXRlKCk7CiAgICAgaW5zdGFuY2UtPlNldEludGVybmFsRmllbGRDb3VudCgke3Y4SW50ZXJmYWNl
TmFtZX06OmludGVybmFsRmllbGRDb3VudCk7CiAgICAgcmVzdWx0LT5TZXRDbGFzc05hbWUodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCIke2ludGVyZmFjZU5hbWV9IikpOwotICAgIHJlc3VsdC0+SW5o
ZXJpdCgke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSkp
OworICAgIHJlc3VsdC0+SW5oZXJpdCgke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKGlz
b2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpKTsKIAogICAgIGNhY2hlZFRlbXBsYXRlID0gdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgcmVzdWx0KTsKICAg
ICByZXR1cm4gY2FjaGVkVGVtcGxhdGU7CkBAIC0yMzU2LDYgKzIzOTcsOCBAQCBzdWIgR2VuZXJh
dGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlCiAKICAgICBteSAkZ2V0dGVyOwogICAgIG15ICRzZXR0
ZXI7CisgICAgbXkgJGdldHRlckZvck1haW5Xb3JsZDsKKyAgICBteSAkc2V0dGVyRm9yTWFpbldv
cmxkOwogICAgIG15ICRwcm9wQXR0ciA9ICJ2ODo6Tm9uZSI7CiAKICAgICAjIENoZWNrIGF0dHJp
YnV0ZXMuCkBAIC0yMzgyLDE5ICsyNDI1LDI1IEBAIHN1YiBHZW5lcmF0ZVNpbmdsZUJhdGNoZWRB
dHRyaWJ1dGUKICAgICAgICAgJGRhdGEgPSAiJlY4JHtjb25zdHJ1Y3RvclR5cGV9OjppbmZvIjsK
ICAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHtpbnRlcmZh
Y2VOYW1lfUNvbnN0cnVjdG9yR2V0dGVyIjsKICAgICAgICAgJHNldHRlciA9ICIke2ludGVyZmFj
ZU5hbWV9VjhJbnRlcm5hbDo6JHtpbnRlcmZhY2VOYW1lfVJlcGxhY2VhYmxlQXR0clNldHRlckNh
bGxiYWNrIjsKKyAgICAgICAgJGdldHRlckZvck1haW5Xb3JsZCA9ICIwIjsKKyAgICAgICAgJHNl
dHRlckZvck1haW5Xb3JsZCA9ICIwIjsKICAgICB9IGVsc2UgewogICAgICAgICAjIERlZmF1bHQg
R2V0dGVyIGFuZCBTZXR0ZXIKICAgICAgICAgJGdldHRlciA9ICIke2ludGVyZmFjZU5hbWV9VjhJ
bnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyR2V0dGVyQ2FsbGJhY2siOwogICAgICAgICAkc2V0dGVy
ID0gIiR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke2F0dHJOYW1lfUF0dHJTZXR0ZXJDYWxs
YmFjayI7CisgICAgICAgICRnZXR0ZXJGb3JNYWluV29ybGQgPSAiJHtnZXR0ZXJ9Rm9yTWFpbldv
cmxkIjsKKyAgICAgICAgJHNldHRlckZvck1haW5Xb3JsZCA9ICIke3NldHRlcn1Gb3JNYWluV29y
bGQiOwogCiAgICAgICAgIGlmICghSGFzQ3VzdG9tU2V0dGVyKCRhdHRyRXh0KSAmJiAkYXR0ckV4
dC0+eyJSZXBsYWNlYWJsZSJ9KSB7CiAgICAgICAgICAgICAkc2V0dGVyID0gIiR7aW50ZXJmYWNl
TmFtZX1WOEludGVybmFsOjoke2ludGVyZmFjZU5hbWV9UmVwbGFjZWFibGVBdHRyU2V0dGVyQ2Fs
bGJhY2siOworICAgICAgICAgICAgJHNldHRlckZvck1haW5Xb3JsZCA9ICIwIjsKICAgICAgICAg
fQogICAgIH0KIAogICAgICMgUmVhZCBvbmx5IGF0dHJpYnV0ZXMKICAgICBpZiAoSXNSZWFkb25s
eSgkYXR0cmlidXRlKSkgewogICAgICAgICAkc2V0dGVyID0gIjAiOworICAgICAgICAkc2V0dGVy
Rm9yTWFpbldvcmxkID0gIjAiOwogICAgIH0KIAogICAgICMgQW4gYWNjZXNzb3IgY2FuIGJlIGlu
c3RhbGxlZCBvbiB0aGUgcHJvdG8KQEAgLTI0MDYsNyArMjQ1NSw3IEBAIHN1YiBHZW5lcmF0ZVNp
bmdsZUJhdGNoZWRBdHRyaWJ1dGUKICAgICAgICAgICAgICAgICAgICAgICAiJyBFeHRBdHRyOiAn
IiAuIGpvaW4oJyAnLCBrZXlzKCV7JGF0dHJFeHR9KSkgLiAiJykiOwogCiAgICAgcHVzaChAaW1w
bENvbnRlbnQsICRpbmRlbnQgLiAiICAgIFwvXC8gJGNvbW1lbnRJbmZvXG4iKTsKLSAgICBwdXNo
KEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAge1wiJGF0dHJOYW1lXCIsICRnZXR0ZXIsICRz
ZXR0ZXIsICRkYXRhLCAkYWNjZXNzQ29udHJvbCwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPigkcHJvcEF0dHIpLCAkb25fcHJvdG99IiAuICRkZWxpbWl0ZXIgLiAiXG4iKTsKKyAg
ICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAge1wiJGF0dHJOYW1lXCIsICRnZXR0
ZXIsICRzZXR0ZXIsICRnZXR0ZXJGb3JNYWluV29ybGQsICRzZXR0ZXJGb3JNYWluV29ybGQsICRk
YXRhLCAkYWNjZXNzQ29udHJvbCwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPigk
cHJvcEF0dHIpLCAkb25fcHJvdG99IiAuICRkZWxpbWl0ZXIgLiAiXG4iKTsKIH0KIAogc3ViIElz
U3RhbmRhcmRGdW5jdGlvbgpAQCAtMjcxMSw3ICsyNzYwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgbXkgJHBhcmVudCA9ICRfOwogICAgICAgICBBZGRUb0ltcGxJbmNs
dWRlcygiVjgke3BhcmVudH0uaCIpOwogICAgICAgICAkcGFyZW50Q2xhc3MgPSAiVjgiIC4gJHBh
cmVudDsKLSAgICAgICAgJHBhcmVudENsYXNzVGVtcGxhdGUgPSAkcGFyZW50Q2xhc3MgLiAiOjpH
ZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpIjsKKyAgICAgICAgJHBhcmVudENsYXNzVGVt
cGxhdGUgPSAkcGFyZW50Q2xhc3MgLiAiOjpHZXRUZW1wbGF0ZShpc29sYXRlLCBjdXJyZW50V29y
bGRUeXBlKSI7CiAgICAgICAgIGxhc3Q7CiAgICAgfQogCkBAIC0yNzkwLDE0ICsyODM5LDE4IEBA
IEVORAogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIik7CiAgICAgICAgIH0KIAotICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIoJGF0
dHJpYnV0ZSwgJGludGVyZmFjZSk7Ci0gICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlckNh
bGxiYWNrKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UpOworICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0
dHJHZXR0ZXIoJGF0dHJpYnV0ZSwgJGludGVyZmFjZSwgIiIpOworICAgICAgICBHZW5lcmF0ZU5v
cm1hbEF0dHJHZXR0ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiIik7CisgICAg
ICAgIEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcigkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiRm9y
TWFpbldvcmxkIik7CisgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlckNhbGxiYWNrKCRh
dHRyaWJ1dGUsICRpbnRlcmZhY2UsICJGb3JNYWluV29ybGQiKTsKIAogICAgICAgICBpZiAoIUhh
c0N1c3RvbVNldHRlcigkYXR0ckV4dCkgJiYgJGF0dHJFeHQtPnsiUmVwbGFjZWFibGUifSkgewog
ICAgICAgICAgICAgJGhhc1JlcGxhY2VhYmxlID0gMTsKICAgICAgICAgfSBlbHNpZiAoIUlzUmVh
ZG9ubHkoJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0clNldHRl
cigkYXR0cmlidXRlLCAkaW50ZXJmYWNlKTsKLSAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0
clNldHRlckNhbGxiYWNrKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UpOworICAgICAgICAgICAgR2Vu
ZXJhdGVOb3JtYWxBdHRyU2V0dGVyKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICIiKTsKKyAgICAg
ICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlckNhbGxiYWNrKCRhdHRyaWJ1dGUsICRpbnRl
cmZhY2UsICIiKTsKKyAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcigkYXR0cmli
dXRlLCAkaW50ZXJmYWNlLCAiRm9yTWFpbldvcmxkIik7CisgICAgICAgICAgICBHZW5lcmF0ZU5v
cm1hbEF0dHJTZXR0ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiRm9yTWFpbldv
cmxkIik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMwMDgsOSArMzA2MSw5IEBAIEVORAogICAg
ICMgY29uZmlndXJhdGlvbiBtZXRob2QuCiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01X
aW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci1zdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBDb25maWd1cmVTaGFkb3dPYmplY3RUZW1w
bGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IHRlbXBsLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IENv
bmZpZ3VyZVNoYWRvd09iamVjdFRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1w
bGF0ZT4gdGVtcGwsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJl
bnRXb3JsZFR5cGUpCiB7Ci0gICAgVjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUF0
dHJpYnV0ZXModGVtcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPigpLCBzaGFkb3dB
dHRycywgV1RGX0FSUkFZX0xFTkdUSChzaGFkb3dBdHRycyksIGlzb2xhdGUpOworICAgIFY4RE9N
Q29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHRlbXBsLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3RUZW1wbGF0ZT4oKSwgc2hhZG93QXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoc2hh
ZG93QXR0cnMpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKIAogICAgIC8vIEluc3RhbGwg
YSBzZWN1cml0eSBoYW5kbGVyIHdpdGggVjguCiAgICAgdGVtcGwtPlNldEFjY2Vzc0NoZWNrQ2Fs
bGJhY2tzKFY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2tDdXN0b20sIFY4RE9NV2luZG93
OjppbmRleGVkU2VjdXJpdHlDaGVja0N1c3RvbSwgdjg6OkV4dGVybmFsOjpOZXcoJlY4RE9NV2lu
ZG93OjppbmZvKSk7CkBAIC0zMDI2LDcgKzMwNzksNyBAQCBFTkQKIAogICAgICMgR2VuZXJhdGUg
dGhlIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24gbWV0aG9kCiAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICA8PEVORCk7Ci1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7
CiAKQEAgLTMwMzYsNyArMzA4OSw3IEBAIEVORAogICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9u
ID0gR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsIDw8RU5EKTsKICAgICBpZiAoISR7ZW5hYmxlX2Z1bmN0aW9ufSgpKQot
ICAgICAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVU
ZW1wbGF0ZShkZXNjLCBcIlwiLCAkcGFyZW50Q2xhc3NUZW1wbGF0ZSwgJHt2OEludGVyZmFjZU5h
bWV9OjppbnRlcm5hbEZpZWxkQ291bnQsIDAsIDAsIDAsIDAsIGlzb2xhdGUpOworICAgICAgICBk
ZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShk
ZXNjLCBcIlwiLCAkcGFyZW50Q2xhc3NUZW1wbGF0ZSwgJHt2OEludGVyZmFjZU5hbWV9OjppbnRl
cm5hbEZpZWxkQ291bnQsIDAsIDAsIDAsIDAsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwog
ICAgIGVsc2UKIEVORAogICAgIH0KQEAgLTMwNTYsMTEgKzMxMDksMTEgQEAgRU5ECiAKICAgICBp
ZiAoJGhhc19jYWxsYmFja3MpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsK
LSAgICAgICAgJHt2OEludGVyZmFjZU5hbWV9TWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSCgke3Y4
SW50ZXJmYWNlTmFtZX1NZXRob2RzKSwgaXNvbGF0ZSk7CisgICAgICAgICR7djhJbnRlcmZhY2VO
YW1lfU1ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoJHt2OEludGVyZmFjZU5hbWV9TWV0aG9kcyks
IGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogRU5ECiAgICAgfSBlbHNlIHsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICAgICAgMCwgMCwgaXNvbGF0ZSk7CisgICAg
ICAgIDAsIDAsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogRU5ECiAgICAgfQogCkBAIC0z
MDk2LDcgKzMxNDksNyBAQCBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRh
dGEgPVxcXG4iKTsKICAgICAgICAgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlKCRpbnRl
cmZhY2VOYW1lLCAkcnVudGltZV9hdHRyLCAiOyIsICIgICAgIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7Ci0gICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJl
QXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEsIGlzb2xhdGUpOworICAgICAgICBW
OERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0
dHJEYXRhLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICB9CiBFTkQKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJcbiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMzE3OSwyMyArMzIzMiwyMyBAQCBFTkQKICAgICBy
ZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7
djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUs
IFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVE
YXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBs
YXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVN
YXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUp
LmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVu
dFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1l
fVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3
b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0
ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKGRhdGEt
PnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdv
cmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZp
bmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sICR7djhJbnRlcmZhY2VO
YW1lfTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sICR7djhJbnRlcmZh
Y2VOYW1lfTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAg
IHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5m
bywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9
CiAKIGJvb2wgJHt2OEludGVyZmFjZU5hbWV9OjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKQEAgLTMzMDAsMTQg
KzMzNTMsMTQgQEAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBWOERPTVdpbmRv
dzo6R2V0U2hhZG93T2JqZWN0VGVtcGxhdGUodjg6Oklzb2wKICAgICAgICAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gVjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNo
ZUZvck1haW5Xb3JsZDsKICAgICAgICAgaWYgKFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGVG
b3JNYWluV29ybGQuSXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBWOERPTVdpbmRvd1NoYWRvd09i
amVjdENhY2hlRm9yTWFpbldvcmxkID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRl
Pjo6TmV3KGlzb2xhdGUsIHY4OjpPYmplY3RUZW1wbGF0ZTo6TmV3KCkpOwotICAgICAgICAgICAg
Q29uZmlndXJlU2hhZG93T2JqZWN0VGVtcGxhdGUoVjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNo
ZUZvck1haW5Xb3JsZCwgaXNvbGF0ZSk7CisgICAgICAgICAgICBDb25maWd1cmVTaGFkb3dPYmpl
Y3RUZW1wbGF0ZShWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlRm9yTWFpbldvcmxkLCBpc29s
YXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gVjhET01X
aW5kb3dTaGFkb3dPYmplY3RDYWNoZUZvck1haW5Xb3JsZDsKICAgICB9IGVsc2UgewogICAgICAg
ICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBWOERPTVdpbmRvd1No
YWRvd09iamVjdENhY2hlRm9yTm9uTWFpbldvcmxkOwogICAgICAgICBpZiAoVjhET01XaW5kb3dT
aGFkb3dPYmplY3RDYWNoZUZvck5vbk1haW5Xb3JsZC5Jc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGVGb3JOb25NYWluV29ybGQgPSB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6Ok9iamVjdFRlbXBsYXRl
OjpOZXcoKSk7Ci0gICAgICAgICAgICBDb25maWd1cmVTaGFkb3dPYmplY3RUZW1wbGF0ZShWOERP
TVdpbmRvd1NoYWRvd09iamVjdENhY2hlRm9yTm9uTWFpbldvcmxkLCBpc29sYXRlKTsKKyAgICAg
ICAgICAgIENvbmZpZ3VyZVNoYWRvd09iamVjdFRlbXBsYXRlKFY4RE9NV2luZG93U2hhZG93T2Jq
ZWN0Q2FjaGVGb3JOb25NYWluV29ybGQsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlRm9yTm9u
TWFpbldvcmxkOwogICAgIH0KQEAgLTM1MTcsNyArMzU3MCw3IEBAIEVORAogICAgICAgICAgICAg
QGFyZ3MgPSAoKTsKICAgICAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChAcGFyYW1zKSB7CiAg
ICAgICAgICAgICAgICAgbXkgJHBhcmFtTmFtZSA9ICRwYXJhbS0+bmFtZTsKLSAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtwYXJh
bU5hbWV9SGFuZGxlID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkcGFyYW0sICRwYXJhbU5hbWUsICJ2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkiLCAidjhDb250ZXh0LT5HZXRJc29sYXRlKCkiKSAuICI7
XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gJHtwYXJhbU5hbWV9SGFuZGxlID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkcGFy
YW0sICRwYXJhbU5hbWUsICJ2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkiLCAidjhDb250ZXh0LT5H
ZXRJc29sYXRlKCkiLCAiIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKCR7cGFyYW1OYW1lfUhhbmRsZS5Jc0VtcHR5KCkpIHtcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpZiAoIWlzU2NyaXB0Q29u
dHJvbGxlclRlcm1pbmF0aW5nKCkpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgICAgIENSQVNIKCk7XG4iKTsKQEAgLTM4OTUsOSArMzk0OCw5IEBAIHN1
YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZwogICAgIG15ICRuYXRpdmVWYWx1ZTsKICAgICAj
IEZJWE1FOiBVcGRhdGUgZm9yIGFsbCBTY3JpcHRXcmFwcGFibGVzLgogICAgIGlmIChJc0RPTU5v
ZGVUeXBlKCRpbnRlcmZhY2VOYW1lKSkgewotICAgICAgICAkbmF0aXZlVmFsdWUgPSBOYXRpdmVU
b0pTVmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsICRyZXR1cm4sICJhcmdzLkhvbGRlcigpIiwg
ImFyZ3MuR2V0SXNvbGF0ZSgpIiwgImFyZ3MiLCAiaW1wIiwgIlJldHVyblVuc2FmZUhhbmRsZSIp
OworICAgICAgICAkbmF0aXZlVmFsdWUgPSBOYXRpdmVUb0pTVmFsdWUoJGZ1bmN0aW9uLT5zaWdu
YXR1cmUsICRyZXR1cm4sICJhcmdzLkhvbGRlcigpIiwgImFyZ3MuR2V0SXNvbGF0ZSgpIiwgImFy
Z3MiLCAiaW1wIiwgIlJldHVyblVuc2FmZUhhbmRsZSIsICIiKTsKICAgICB9IGVsc2UgewotICAg
ICAgICAkbmF0aXZlVmFsdWUgPSBOYXRpdmVUb0pTVmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUs
ICRyZXR1cm4sICJhcmdzLkhvbGRlcigpIiwgImFyZ3MuR2V0SXNvbGF0ZSgpIiwgMCwgMCwgIlJl
dHVyblVuc2FmZUhhbmRsZSIpOworICAgICAgICAkbmF0aXZlVmFsdWUgPSBOYXRpdmVUb0pTVmFs
dWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsICRyZXR1cm4sICJhcmdzLkhvbGRlcigpIiwgImFyZ3Mu
R2V0SXNvbGF0ZSgpIiwgMCwgMCwgIlJldHVyblVuc2FmZUhhbmRsZSIsICIiKTsKICAgICB9CiAK
ICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAicmV0dXJuICIgLiAkbmF0aXZlVmFsdWUgLiAiO1xu
IjsKQEAgLTQxNDEsNyArNDE5NCw3IEBAIHN1YiBDcmVhdGVDdXN0b21TaWduYXR1cmUKICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cyhHZXRWOEhlYWRlck5hbWUoJHR5cGUpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgJHJlc3VsdCAuPSAiVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVt
cGxhdGUoJlY4JHt0eXBlfTo6aW5mbywgd29ybGRUeXBlKSI7CisgICAgICAgICAgICAgICAgJHJl
c3VsdCAuPSAiVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4
JHt0eXBlfTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkiOwogICAgICAgICAgICAgfQogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgJHJlc3VsdCAuPSAidjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4oKSI7CkBAIC00Mjg2LDYgKzQzMzksNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVl
CiAgICAgbXkgJGdldFNjcmlwdFdyYXBwYWJsZUFyZyA9ICRnZXRTY3JpcHRXcmFwcGFibGUgPyAi
LCAkZ2V0U2NyaXB0V3JhcHBhYmxlIiA6ICIiOwogICAgIG15ICRyZXR1cm5IYW5kbGVUeXBlID0g
c2hpZnQ7CiAgICAgbXkgJHJldHVybkhhbmRsZVR5cGVBcmcgPSAkcmV0dXJuSGFuZGxlVHlwZSA/
ICIsICRyZXR1cm5IYW5kbGVUeXBlIiA6ICIiOworICAgIG15ICRmb3JNYWluV29ybGRTdWZmaXgg
PSBzaGlmdDsKIAogICAgIG15ICR0eXBlID0gJHNpZ25hdHVyZS0+dHlwZTsKIApAQCAtNDM0Myw3
ICs0Mzk3LDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogCiAgICAgaWYgKElzRE9NTm9kZVR5cGUo
JHR5cGUpIHx8ICR0eXBlIGVxICJFdmVudFRhcmdldCIpIHsKICAgICAgIGlmICgkZ2V0U2NyaXB0
V3JhcHBhYmxlKSB7Ci0gICAgICAgICAgcmV0dXJuICJ0b1Y4RmFzdCgkdmFsdWUkZ2V0SG9sZGVy
Q29udGFpbmVyQXJnJGdldFNjcmlwdFdyYXBwYWJsZUFyZykiOworICAgICAgICAgIHJldHVybiAi
dG9WOEZhc3Qke2Zvck1haW5Xb3JsZFN1ZmZpeH0oJHZhbHVlJGdldEhvbGRlckNvbnRhaW5lckFy
ZyRnZXRTY3JpcHRXcmFwcGFibGVBcmcpIjsKICAgICAgIH0KICAgICAgIHJldHVybiAidG9WOCgk
dmFsdWUsICRnZXRDcmVhdGlvbkNvbnRleHQsICRnZXRJc29sYXRlKSI7CiAgICAgfQpAQCAtNDM2
Myw3ICs0NDE3LDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJ3dGYvR2V0UHRyLmgiKTsKIAogICAgIGlmICgkZ2V0U2NyaXB0V3JhcHBhYmxlKSB7Ci0gICAg
ICAgICAgcmV0dXJuICJ0b1Y4RmFzdCgkdmFsdWUkZ2V0SG9sZGVyQ29udGFpbmVyQXJnJGdldFNj
cmlwdFdyYXBwYWJsZUFyZykiOworICAgICAgICAgIHJldHVybiAidG9WOEZhc3QkZm9yTWFpbldv
cmxkU3VmZml4KCR2YWx1ZSRnZXRIb2xkZXJDb250YWluZXJBcmckZ2V0U2NyaXB0V3JhcHBhYmxl
QXJnKSI7CiAgICAgfQogICAgIHJldHVybiAidG9WOCgkdmFsdWUsICRnZXRDcmVhdGlvbkNvbnRl
eHQsICRnZXRJc29sYXRlKSI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAppbmRleCBiZTBmYTU0MDU1
YWQyN2Y4NzZkZWQxM2Y5NzJkMzg3MzMzOTJhZjZiLi5hYTAyZjkwNjk2N2UyYzZiMjAwMDM3ODE4
ODA1NDRjZjM1NWE4ZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKQEAgLTEzNSwxNCArMTM1LDE0
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEZsb2F0NjRBcnJheTo6Y29uc3RydWN0b3JDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAgICAgcmV0dXJuIEZsb2F0NjRBcnJheVY4SW50
ZXJuYWw6OmNvbnN0cnVjdG9yKGFyZ3MpOwogfQogCi1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSh2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUs
IFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25s
eVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWdu
YXR1cmU7Ci0gICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmln
dXJlVGVtcGxhdGUoZGVzYywgIkZsb2F0NjRBcnJheSIsIFY4QXJyYXlCdWZmZXJWaWV3OjpHZXRU
ZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpLCBWOEZsb2F0NjRBcnJheTo6aW50ZXJuYWxGaWVs
ZENvdW50LAorICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZp
Z3VyZVRlbXBsYXRlKGRlc2MsICJGbG9hdDY0QXJyYXkiLCBWOEFycmF5QnVmZmVyVmlldzo6R2V0
VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSksIFY4RmxvYXQ2NEFycmF5OjppbnRl
cm5hbEZpZWxkQ291bnQsCiAgICAgICAgIDAsIDAsCi0gICAgICAgIFY4RmxvYXQ2NEFycmF5TWV0
aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOEZsb2F0NjRBcnJheU1ldGhvZHMpLCBpc29sYXRlKTsK
KyAgICAgICAgVjhGbG9hdDY0QXJyYXlNZXRob2RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4RmxvYXQ2
NEFycmF5TWV0aG9kcyksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIFVOVVNFRF9Q
QVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUg
dXNlZC4KICAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOEZsb2F0NjRBcnJheTo6Y29uc3RydWN0
b3JDYWxsYmFjayk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2Ug
PSBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCk7CkBAIC0xNTMsNyArMTUzLDcgQEAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOEZsb2F0NjRBcnJh
eVRlbXBsYXRlKHY4OjoKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2ZvbycKICAgICBjb25z
dCBpbnQgZm9vQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
Zm9vQXJndltmb29BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3
VGVtcGxhdGUoJlY4RmxvYXQzMkFycmF5OjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZm9vQXJndltmb29BcmdjXSA9IHsgVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RmxvYXQzMkFycmF5OjppbmZv
LCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gZm9v
U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGZvb0FyZ2MsIGZvb0FyZ3YpOwog
ICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJmb28iKSwgdjg6OkZ1bmN0aW9u
VGVtcGxhdGU6Ok5ldyhGbG9hdDY0QXJyYXlWOEludGVybmFsOjpmb29NZXRob2RDYWxsYmFjaywg
djhVbmRlZmluZWQoKSwgZm9vU2lnbmF0dXJlKSk7CiAKQEAgLTE2MiwyMyArMTYyLDIzIEBAIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhGbG9h
dDY0QXJyYXlUZW1wbGF0ZSh2ODo6CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEZsb2F0NjRBcnJheTo6R2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RmxvYXQ2NEFycmF5OjpHZXRUZW1wbGF0ZSh2
ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQog
ewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1
bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChy
ZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVN
YXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRh
LT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmln
dXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRU
eXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5
cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOEZsb2F0NjRBcnJheVRl
bXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0
ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxk
VHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4
RmxvYXQ2NEFycmF5OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhG
bG9hdDY0QXJyYXk6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsK
LSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2Uo
JmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUp
OwogfQogCiBib29sIFY4RmxvYXQ2NEFycmF5OjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5
LmgKaW5kZXggZGM1NGYwMGUwYjVkMDQ4NTM4NzVkMzRiZWI2ZjkzYWRlZmI5OGUyYi4uMzg5OTVm
NjM4NTQ4Mjc3Y2QyZDA0YmU4ODYxYWJjZGI2ZTNhYzYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKQEAg
LTcyLDYgKzcyLDE3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChGbG9hdDY0
QXJyYXkqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlCiAgICAgcmV0dXJuIHdyYXAo
aW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4Rm9yTWFpbldvcmxkKEZsb2F0NjRBcnJheSogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorewor
ICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5M
SUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwor
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFw
cGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3Mg
V3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChGbG9hdDY0
QXJyYXkqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUq
IHdyYXBwYWJsZSkKIHsKQEAgLTg0LDYgKzk1LDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOEZhc3QoRmxvYXQ2NEFycmF5KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgor
aW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChGbG9hdDY0
QXJyYXkqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUq
IHdyYXBwYWJsZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5lci5HZXRJc29sYXRl
KCkpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0
dXJuIHY4TnVsbChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1w
bCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7
CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0
SXNvbGF0ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBX
cmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldv
cmxkKFBhc3NSZWZQdHI8IEZsb2F0NjRBcnJheSA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5l
ciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZh
c3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOworfQorCisK
K3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBGbG9hdDY0QXJyYXkg
PiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFw
cGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3Jh
cHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggMjQyYmI3ZWZj
MmJlYjRkMTRhODE2MTkzNGVlMDJmNGNkOTliODc2OC4uNjkyM2YwNmVhZWZkYWRlNjU3OGE3MTI0
NjhlY2M3ZGFlZmMyM2Y0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAg
LTgyLDYgKzgyLDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXhjaXRpbmdBdHRy
QXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nCiAgICAgcmV0dXJuIFRlc3RB
Y3RpdmVET01PYmplY3RWOEludGVybmFsOjpleGNpdGluZ0F0dHJBdHRyR2V0dGVyKG5hbWUsIGlu
Zm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2l0aW5nQXR0ckF0dHJH
ZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wID0gVjhU
ZXN0QWN0aXZlRE9NT2JqZWN0Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4g
djhJbnRlZ2VyKGltcC0+ZXhjaXRpbmdBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKwor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGNpdGluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVy
bmFsOjpleGNpdGluZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQor
CiBib29sIGluZGV4ZWRTZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB1
aW50MzJfdCBpbmRleCwgdjg6OkFjY2Vzc1R5cGUgdHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4p
CiB7CiAgICAgVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wID0gIFY4VGVzdEFjdGl2ZURPTU9iamVj
dDo6dG9OYXRpdmUoaG9zdCk7CkBAIC0xNzUsMTcgKzE4NiwxNyBAQCBzdGF0aWMgdm9pZCBUZXN0
QWN0aXZlRE9NT2JqZWN0RG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYQogCiBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmli
dXRlIFY4VGVzdEFjdGl2ZURPTU9iamVjdEF0dHJzW10gPSB7CiAgICAgLy8gQXR0cmlidXRlICdl
eGNpdGluZ0F0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAg
ICB7ImV4Y2l0aW5nQXR0ciIsIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpleGNpdGlu
Z0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiZXhjaXRp
bmdBdHRyIiwgVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4Y2l0aW5nQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFjaywgMCwgVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4Y2l0aW5n
QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiB9
OwogCi1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3Vy
ZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3
b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7
CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBk
ZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShk
ZXNjLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPigpLCBWOFRlc3RBY3RpdmVET01PYmplY3Q6OmludGVybmFsRmllbGRDb3VudCwKICAg
ICAgICAgVjhUZXN0QWN0aXZlRE9NT2JqZWN0QXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0
QWN0aXZlRE9NT2JqZWN0QXR0cnMpLAotICAgICAgICAwLCAwLCBpc29sYXRlKTsKKyAgICAgICAg
MCwgMCwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1
bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAg
IHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gZGVzYy0+SW5zdGFuY2VU
ZW1wbGF0ZSgpOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvID0gZGVz
Yy0+UHJvdG90eXBlVGVtcGxhdGUoKTsKQEAgLTE5NSw3ICsyMDYsNyBAQCBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9i
amVjdFRlbXBsYQogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnZXhjaXRpbmdGdW5jdGlvbicK
ICAgICBjb25zdCBpbnQgZXhjaXRpbmdGdW5jdGlvbkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGV4Y2l0aW5nRnVuY3Rpb25Bcmd2W2V4Y2l0aW5nRnVuY3Rp
b25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUo
JlY4Tm9kZTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGV4Y2l0aW5nRnVuY3Rpb25Bcmd2W2V4Y2l0aW5nRnVuY3Rpb25BcmdjXSA9IHsg
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5m
bywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGV4
Y2l0aW5nRnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZXhjaXRp
bmdGdW5jdGlvbkFyZ2MsIGV4Y2l0aW5nRnVuY3Rpb25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4
OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZXhjaXRpbmdGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpleGNpdGluZ0Z1bmN0aW9u
TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGV4Y2l0aW5nRnVuY3Rpb25TaWduYXR1cmUp
KTsKIApAQCAtMjA3LDIzICsyMTgsMjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGEKICAgICBy
ZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklz
b2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVt
cGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEt
PnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVt
cGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3Js
ZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAo
Y3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwog
CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEFjdGl2
ZURPTU9iamVjdFRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBp
c29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRk
KCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRl
bXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0
ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxk
VHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4
VGVzdEFjdGl2ZURPTU9iamVjdDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiti
b29sIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50
V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3Vy
cmVudFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpIYXNJbnN0
YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaAppbmRleCA2YmFkOTkwMjFiMmM5
YWFkMjg2YWViOThkYzczNTA1NjVmODZlMTYyLi40OTFhM2FhOTkxMzhhMWY1ZjNiYjdhNjc3Yjky
ZmFhN2VhZmJjY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCkBAIC03NSw2ICs3
NSwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEFjdGl2ZURPTU9i
amVjdCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZQogICAgIHJldHVybiB3cmFwKGltcGwsIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXBsLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7Cisg
ICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJ
S0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBw
ZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBX
cmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RBY3Rp
dmVET01PYmplY3QqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFw
cGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTg3LDYgKzk4LDI1IEBAIGlubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wbCwgY29uc3QgSG9s
ZGVyQ29uCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBh
YmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChU
ZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5l
ciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWlu
ZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkp
CisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9y
TWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwg
Y29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRh
aW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0QWN0aXZlRE9NT2JqZWN0ID4gaW1wbCwg
Y29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQor
eworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIs
IHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFz
cyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NS
ZWZQdHI8IFRlc3RBY3RpdmVET01PYmplY3QgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0
KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuY3BwCmluZGV4IGJhZDg1MmRmOGRmNjE5ZjU1NjY1MzQ0ZDQ2MTk4OGNjNjhi
NjgwM2IuLjQ0N2RmYWZhODg1NWRiNDY3NTg5ZWQxMDhiMGIwNDRlNmMxZDEzYTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21O
YW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtOTEsMTQgKzkxLDE0IEBAIHN0YXRp
YyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRNZXRob2QgVjhUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXJNZXRob2RzW10KICAgICB7ImFub3RoZXJGdW5jdGlvbiIsIFRlc3RDdXN0b21OYW1l
ZEdldHRlclY4SW50ZXJuYWw6OmFub3RoZXJGdW5jdGlvbk1ldGhvZENhbGxiYWNrfSwKIH07CiAK
LXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29y
bGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25m
aWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7
CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBk
ZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShk
ZXNjLCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+KCksIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjppbnRlcm5hbEZpZWxkQ291bnQs
CiAgICAgICAgIDAsIDAsCi0gICAgICAgIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyTWV0aG9kcywg
V1RGX0FSUkFZX0xFTkdUSChWOFRlc3RDdXN0b21OYW1lZEdldHRlck1ldGhvZHMpLCBpc29sYXRl
KTsKKyAgICAgICAgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJNZXRob2RzLCBXVEZfQVJSQVlfTEVO
R1RIKFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyTWV0aG9kcyksIGlzb2xhdGUsIGN1cnJlbnRXb3Js
ZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBj
YXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBs
YXRlPiBpbnN0YW5jZSA9IGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKTsKICAgICB2ODo6TG9jYWw8
djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90byA9IGRlc2MtPlByb3RvdHlwZVRlbXBsYXRlKCk7CkBA
IC0xMTIsMjMgKzExMiwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyVGVtcAogICAgIHJldHVybiBk
ZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXI6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xh
dGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xh
dGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBl
cklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxh
dGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxh
dGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5
cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3Vy
cmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAg
ICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5h
bWVkR2V0dGVyVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlz
b2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQo
JmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJU
ZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xh
dGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3Js
ZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBW
OFRlc3RDdXN0b21OYW1lZEdldHRlcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUp
Citib29sIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1
cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVl
LCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogYm9vbCBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6
SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCmluZGV4IGY3
MTdhMGZiNmYzYWIxNWY5NDgyOTI2OTJlYjNlZDAzYzVhZWMwYTkuLmIwZWIyOTEzYmFlYWY4ZDY2
NDYzOGY2ZDFmYTcxM2U3Y2EwY2FhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRl
ci5oCkBAIC03Niw2ICs3NiwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgo
VGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYgogICAgIHJldHVy
biB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3Js
ZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhD
aGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURh
dGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIu
SXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBs
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJD
b250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOEZhc3QoVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWlu
ZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CkBAIC04OCw2ICs5OSwyNSBA
QCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RDdXN0b21OYW1lZEdl
dHRlciogaW1wbCwgY29uc3QgSG9sZGVyQwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250
YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OEZhc3RGb3JNYWluV29ybGQoVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXBsLCBjb25zdCBIb2xk
ZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNT
RVJUKHdvcmxkVHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAg
IGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdl
dElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0
YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5J
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGws
IGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwg
V3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxk
KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFz
cyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdEN1c3RvbU5hbWVkR2V0dGVyID4gaW1w
bCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxl
KQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJs
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjRhZTQ0YzU5ZTQ0
NzE2MzQ1YjEzYTlhOTJlY2RlMjAwMzM4OWQyNy4uNzE3MDM1YWQxYmQ5Y2I0ZDdjNjYxMDc2NzMy
YzA5MjFkNjk5NDY1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAt
ODEsNiArODEsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyMUF0dHJHZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKICAgICByZXR1cm4gVGVzdEV2
ZW50Q29uc3RydWN0b3JWOEludGVybmFsOjphdHRyMUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9
CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cjFBdHRyR2V0dGVyRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXAgPSBWOFRlc3RFdmVudENvbnN0
cnVjdG9yOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhTdHJpbmcoaW1w
LT5hdHRyMSgpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFuZGxlKTsKK30KKwor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyMUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdEV2ZW50Q29uc3RydWN0b3JWOEludGVybmFsOjph
dHRyMUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RFdmVudENvbnN0
cnVjdG9yKiBpbXAgPSBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKQEAgLTkyLDYgKzEwMywxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0
dHIyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogICAgIHJl
dHVybiBUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWw6OmF0dHIyQXR0ckdldHRlcihuYW1l
LCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyMkF0dHJHZXR0
ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcCA9IFY4VGVz
dEV2ZW50Q29uc3RydWN0b3I6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2
OFN0cmluZyhpbXAtPmF0dHIyKCksIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5k
bGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHIyQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0RXZlbnRDb25zdHJ1Y3RvclY4
SW50ZXJuYWw6OmF0dHIyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwog
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3Rvcihjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKQEAgLTExNSw5ICsxMzcs
OSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNo
ZWRBdHRyaWJ1dGUgVjhUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHJzW10gPSB7CiAgICAgLy8gQXR0
cmlidXRlICdhdHRyMScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQot
ICAgIHsiYXR0cjEiLCBUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWw6OmF0dHIxQXR0ckdl
dHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImF0dHIxIiwgVGVzdEV2ZW50
Q29uc3RydWN0b3JWOEludGVybmFsOjphdHRyMUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgVGVzdEV2
ZW50Q29uc3RydWN0b3JWOEludGVybmFsOjphdHRyMUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdhdHRyMicgKFR5cGU6
ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICdJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1
Y3RvcicpCi0gICAgeyJhdHRyMiIsIFRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0
cjJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiYXR0cjIiLCBU
ZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWw6OmF0dHIyQXR0ckdldHRlckNhbGxiYWNrLCAw
LCBUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWw6OmF0dHIyQXR0ckdldHRlckNhbGxiYWNr
Rm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKIH07CiAKIGJvb2wgZmlsbFRlc3RFdmVu
dENvbnN0cnVjdG9ySW5pdChUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQmIGV2ZW50SW5pdCwgY29u
c3QgRGljdGlvbmFyeSYgb3B0aW9ucykKQEAgLTEzNywxNCArMTU5LDE0IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1CiAgICAgcmV0dXJuIFRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6
Y29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRlbXBsYXRlKHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0
ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNj
LT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRl
ZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlv
bjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6
OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgVjhUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHJz
LCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdEV2ZW50Q29uc3RydWN0b3JBdHRycyksCi0gICAgICAg
IDAsIDAsIGlzb2xhdGUpOworICAgICAgICAwLCAwLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBl
KTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMs
IGl0IHdpbGwgbm90IGJlIHVzZWQuCiAgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjhUZXN0RXZl
bnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0b3JDYWxsYmFjayk7CiAgICAgCkBAIC0xNTQsMjMgKzE3
NiwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZp
Z3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbAogICAgIHJldHVybiBkZXNjOwogfQogCi12
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rv
cjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29y
bGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50
Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6
VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlw
ZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3Js
ZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRv
ciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZv
KTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUp
LmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVT
Y29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGxh
dGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlw
ZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsK
KyAgICAgICAgQ29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRlbXBsYXRlKGRhdGEtPnJh
d1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxk
VHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZv
LCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdEV2ZW50Q29uc3Ry
dWN0b3I6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RFdmVu
dENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7
Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNl
KCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBl
KTsKIH0KIAogYm9vbCBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZUluQW55V29y
bGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCmluZGV4IGZjNGEwMTMzNGE5ZTJmNjgyNjA3OThj
ZmEzNTBiZmFjYzdhZGYxNzIuLjQ1OTIyZmU4ZDcwZDM5NDY3NDgwNzU1ODI3MTk4YjJlOGVlMDg0
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFdmVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaApAQCAtNzcsNiArNzcsMTcgQEAg
aW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RFdmVudENvbnN0cnVjdG9yKiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmoKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhG
b3JNYWluV29ybGQoVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NF
UlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFp
bXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1h
aW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJs
ZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdEV2ZW50Q29uc3Ry
dWN0b3IqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUq
IHdyYXBwYWJsZSkKIHsKQEAgLTg5LDYgKzEwMCwyNSBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjhGYXN0KFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXBsLCBjb25zdCBIb2xkZXJD
bwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4K
K2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVzdEV2
ZW50Q29uc3RydWN0b3IqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBX
cmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5lci5H
ZXRJc29sYXRlKCkpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAg
ICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWlu
V29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250
YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVy
LCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0
Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IFRlc3RFdmVudENvbnN0cnVjdG9yID4gaW1wbCwgY29u
c3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQorewor
ICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdy
YXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBX
cmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQ
dHI8IFRlc3RFdmVudENvbnN0cnVjdG9yID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBj
b250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChp
bXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNw
cAppbmRleCBlNTI1ODFhMzBmNmVmYTkzYTFhNzFjMGIyMmU5MjRkY2U4YmVhMWY4Li4wYzhlYTFh
ZThmZWM1NWY0MmQ1OWFmOTkzMDE0MjRlYzhkZjdmYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdl
dC5jcHAKQEAgLTE1OSwxNCArMTU5LDE0IEBAIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRp
b246OkJhdGNoZWRNZXRob2QgVjhUZXN0RXZlbnRUYXJnZXRNZXRob2RzW10gPSB7CiAgICAgeyJy
ZW1vdmVFdmVudExpc3RlbmVyIiwgVGVzdEV2ZW50VGFyZ2V0VjhJbnRlcm5hbDo6cmVtb3ZlRXZl
bnRMaXN0ZW5lck1ldGhvZENhbGxiYWNrfSwKIH07CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZSh2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRl
KHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2Mt
PlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVm
YXVsdFNpZ25hdHVyZTsKICAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9u
Ojpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEV2ZW50VGFyZ2V0Iiwgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdEV2ZW50VGFyZ2V0OjppbnRlcm5hbEZp
ZWxkQ291bnQsCiAgICAgICAgIDAsIDAsCi0gICAgICAgIFY4VGVzdEV2ZW50VGFyZ2V0TWV0aG9k
cywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RFdmVudFRhcmdldE1ldGhvZHMpLCBpc29sYXRlKTsK
KyAgICAgICAgVjhUZXN0RXZlbnRUYXJnZXRNZXRob2RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVz
dEV2ZW50VGFyZ2V0TWV0aG9kcyksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIFVO
VVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBu
b3QgYmUgdXNlZC4KICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9
IGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBs
YXRlPiBwcm90byA9IGRlc2MtPlByb3RvdHlwZVRlbXBsYXRlKCk7CkBAIC0xNzksNyArMTc5LDcg
QEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVW
OFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKHYKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2Rp
c3BhdGNoRXZlbnQnCiAgICAgY29uc3QgaW50IGRpc3BhdGNoRXZlbnRBcmdjID0gMTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkaXNwYXRjaEV2ZW50QXJndltkaXNwYXRj
aEV2ZW50QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBs
YXRlKCZWOEV2ZW50OjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gZGlzcGF0Y2hFdmVudEFyZ3ZbZGlzcGF0Y2hFdmVudEFyZ2NdID0geyBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhFdmVudDo6aW5m
bywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGRp
c3BhdGNoRXZlbnRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZGlzcGF0Y2hF
dmVudEFyZ2MsIGRpc3BhdGNoRXZlbnRBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgiZGlzcGF0Y2hFdmVudCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRl
c3RFdmVudFRhcmdldFY4SW50ZXJuYWw6OmRpc3BhdGNoRXZlbnRNZXRob2RDYWxsYmFjaywgdjhV
bmRlZmluZWQoKSwgZGlzcGF0Y2hFdmVudFNpZ25hdHVyZSkpOwogCkBAIC0xODgsMjMgKzE4OCwy
MyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3Vy
ZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUodgogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRUYXJnZXQ6OkdldFRl
bXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkK
K3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFdmVudFRhcmdldDo6
R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVu
dFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6
aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZv
KTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkp
CisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRh
dGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChy
ZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAg
ICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0g
ICAgICAgIENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxh
dGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVt
cGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJl
VjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVu
dFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBs
YXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0
ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RFdmVudFRhcmdldDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdEV2ZW50VGFyZ2V0OjpIYXNJbnN0YW5jZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRU
eXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICBy
ZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8s
IHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogYm9vbCBWOFRlc3RFdmVudFRhcmdldDo6
SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oCmluZGV4IGZlMDA4NTEzNGY3OTMw
N2FkNjQ5ZjU5Y2E4ZDQ0Zjc3YzQxMmIzYTUuLjg3NTU2MjQ3NzAwYjBmNmNkYjI5YzM4YTBkZWY4
ZDYyNTAyOGUxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oCkBAIC03OSw2ICs3OSwxNyBAQCBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEV2ZW50VGFyZ2V0KiBpbXBsLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+CiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9y
TWFpbldvcmxkKFRlc3RFdmVudFRhcmdldCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVCh3b3Js
ZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQor
ICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxk
KGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFw
cGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9
CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5s
aW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0RXZlbnRUYXJnZXQqIGltcGws
IGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkK
IHsKQEAgLTkxLDYgKzEwMiwyNSBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhG
YXN0KFRlc3RFdmVudFRhcmdldCogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbgogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVzdEV2ZW50VGFyZ2V0KiBp
bXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFi
bGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBN
YWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51
bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAg
IGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJl
dHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUo
KSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxl
PgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNz
UmVmUHRyPCBUZXN0RXZlbnRUYXJnZXQgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNv
bnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9y
TWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1w
bGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdEV2ZW50VGFyZ2V0ID4g
aW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBh
YmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBw
YWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCmluZGV4IGU2YzUxYjI5MzJkOGNkZjFiZDM3YTdk
NjJiN2EyZmU5OTI2YmU0N2UuLjQxMjk5ZWZiMWI1NDQzZGMxN2MwNDQ2MzQxZGZkYTA2NmVlN2Q5
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCkBAIC04MCwyMSArODAsMzIgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBuYW1lQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLAogICAgIHJldHVybiBUZXN0RXhjZXB0aW9uVjhJbnRlcm5hbDo6bmFtZUF0
dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
bmFtZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdEV4Y2VwdGlvbiogaW1wID0g
VjhUZXN0RXhjZXB0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhT
dHJpbmcoaW1wLT5uYW1lKCksIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUp
OworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVBdHRyR2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RFeGNlcHRpb25WOEludGVybmFsOjpu
YW1lQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgVGVzdEV4Y2VwdGlvblY4SW50ZXJuYWwKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJh
dGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RFeGNlcHRpb25BdHRyc1tdID0gewogICAgIC8v
IEF0dHJpYnV0ZSAnbmFtZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcn
KQotICAgIHsibmFtZSIsIFRlc3RFeGNlcHRpb25WOEludGVybmFsOjpuYW1lQXR0ckdldHRlckNh
bGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7Im5hbWUiLCBUZXN0RXhjZXB0aW9uVjhJ
bnRlcm5hbDo6bmFtZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgVGVzdEV4Y2VwdGlvblY4SW50ZXJu
YWw6Om5hbWVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAogfTsKIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25m
aWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29y
bGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25m
aWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3Vy
cmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAg
djg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVsdFNp
Z25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRl
c3RFeGNlcHRpb24iLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhU
ZXN0RXhjZXB0aW9uOjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIFY4VGVzdEV4Y2VwdGlv
bkF0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdEV4Y2VwdGlvbkF0dHJzKSwKLSAgICAgICAg
MCwgMCwgaXNvbGF0ZSk7CisgICAgICAgIDAsIDAsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUp
OwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywg
aXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICAKIApAQCAtMTAzLDIzICsxMTQsMjMgQEAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFeGNl
cHRpb25UZW1wbGF0ZSh2ODoKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsK
ICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0
ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVz
dWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29s
YXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFw
KGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+
dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1
bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3Vy
ZVY4VGVzdEV4Y2VwdGlvblRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5
cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlw
ZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdEV4Y2VwdGlvblRl
bXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0
ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxk
VHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4
VGVzdEV4Y2VwdGlvbjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4
VGVzdEV4Y2VwdGlvbjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQog
ewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5j
ZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlw
ZSk7CiB9CiAKIGJvb2wgVjhUZXN0RXhjZXB0aW9uOjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNl
cHRpb24uaAppbmRleCBiYWUyMmVjYTI4ODUxNzU2MDQxNzg1M2E4YjlkNDdjOTkxMzE4MjI5Li4w
NzJhYmNmMmUyNjcxZGVjNDJmYTIzZGUwMGFlYWIyYzk1M2E2MTg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlv
bi5oCkBAIC03NSw2ICs3NSwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgo
VGVzdEV4Y2VwdGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcgogICAgIHJldHVy
biB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0RXhjZXB0aW9uKiBpbXBsLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOworICAg
IGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNv
bGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6
OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVy
LCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0
KFRlc3RFeGNlcHRpb24qIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBX
cmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTg3LDYgKzk4LDI1IEBAIGlubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdEV4Y2VwdGlvbiogaW1wbCwgY29uc3QgSG9sZGVy
Q29udGFpbmVyCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3Jh
cHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3Js
ZChUZXN0RXhjZXB0aW9uKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwg
V3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIu
R2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisg
ICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFp
bldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29u
dGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5l
ciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFz
dEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0RXhjZXB0aW9uID4gaW1wbCwgY29uc3QgSG9s
ZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJl
dHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJs
ZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFi
bGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRl
c3RFeGNlcHRpb24gPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3Jh
cHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNv
bnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKaW5kZXggOWNjMGNkODJk
NWVjNGRkMzU4NGY3MzJlYjZmNDIxYzlhNzBlMjRlZi4uM2RjN2E5NjI4NzE4MzZlZDFjMzM5MmYw
YWJkNGYxNTVmNmFkOTU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKQEAgLTk3LDYgKzk3LDI0
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RhdGljUmVhZE9u
bHlBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8
IEVOQUJMRShDb25kaXRpb24xMikKIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBw
bGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IHJldHVybiB2OEludGVnZXIoVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RhdGljUmVh
ZE9ubHlBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gc3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIHJldHVybiBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVu
dGFsU3RhdGljUmVhZE9ubHlBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsK
K30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEy
KQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCiB7CiAgICAgcmV0dXJuIHY4U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRh
bFN0YXRpY0F0dHIoKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhhbmRsZSk7CkBA
IC0xMTUsNiArMTMzLDI0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVu
dGFsU3RhdGljQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8CiAKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIAorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3sKKyAgICByZXR1cm4gdjhTdHJpbmcoVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3Rh
dGljQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFuZGxlKTsKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKK3N0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJHZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6
OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8p
OworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKwog
c3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0Vf
Vk9JRChWOFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKQEAgLTEzNSw2ICsxNzEsMjYgQEAg
c3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQogCitzdGF0aWMgdm9pZCBzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0
clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
VjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lEKFY4U3RyaW5nUmVzb3VyY2U8Piwg
diwgdmFsdWUpOworICAgIFRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbFN0YXRpY0F0
dHIodik7CisgICAgcmV0dXJuOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKKworc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENv
bmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RyMUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdEludGVyZmFj
ZSogaW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE1
NCw2ICsyMTAsMjUgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxT
dHIxQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKIAogI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjFBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0
cjEoaW1wKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhhbmRsZSk7Cit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworI2lm
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjFBdHRyR2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVt
ZW50YWxTdHIxQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKworI2VuZGlm
IC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5B
QkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RyMkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdElu
dGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
QEAgLTE3Myw2ICsyNDgsMjUgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVt
ZW50YWxTdHIyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKIAogI2lmIEVOQUJM
RShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1l
bnRhbFN0cjIoaW1wKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhhbmRsZSk7Cit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikK
KworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjJBdHRyR2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpz
dXBwbGVtZW50YWxTdHIyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKIHN0YXRpYyB2
b2lkIHN1cHBsZW1lbnRhbFN0cjJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRlcmZhY2U6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwpAQCAtMTk0LDYgKzI4OCwyNyBAQCBzdGF0aWMgdm9pZCBzdXBwbGVt
ZW50YWxTdHIyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TAogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAK
K3N0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbFN0cjJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRl
c3RJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfRk9S
X1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKKyAg
ICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxTdHIyKGltcCwgdik7CisgICAgcmV0
dXJuOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikK
Kworc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3RyMkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdEludGVyZmFjZVY4
SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZh
bHVlLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTIpCisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RyM0F0
dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICByZXR1cm4gVjhUZXN0SW50ZXJmYWNlOjpzdXBwbGVt
ZW50YWxTdHIzQXR0ckdldHRlckN1c3RvbShuYW1lLCBpbmZvKTsKQEAgLTIwMyw2ICszMTgsMTUg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxTdHIzQXR0ckdldHRl
ckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBs
ZW1lbnRhbFN0cjNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJu
IFY4VGVzdEludGVyZmFjZTo6c3VwcGxlbWVudGFsU3RyM0F0dHJHZXR0ZXJDdXN0b20obmFtZSwg
aW5mbyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25k
aXRpb24xMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEy
KQorCiBzdGF0aWMgdm9pZCBzdXBwbGVtZW50YWxTdHIzQXR0clNldHRlckNhbGxiYWNrKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBWOFRlc3RJbnRlcmZhY2U6OnN1cHBsZW1l
bnRhbFN0cjNBdHRyU2V0dGVyQ3VzdG9tKG5hbWUsIHZhbHVlLCBpbmZvKTsKQEAgLTIxMiw2ICsz
MzYsMTUgQEAgc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3RyM0F0dHJTZXR0ZXJDYWxsYmFjayh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkwKIAogI2lmIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogCitzdGF0aWMgdm9pZCBzdXBwbGVtZW50YWxTdHIz
QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBWOFRlc3RJbnRlcmZhY2U6OnN1cHBsZW1lbnRhbFN0cjNBdHRyU2V0dGVyQ3Vz
dG9tKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxl
bWVudGFsTm9kZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhUZXN0
SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTIzMSw2ICszNjQsMjUgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxOb2RlQXR0ckdldHRlckNh
bGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1l
bnRhbE5vZGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RJbnRlcmZhY2UqIGlt
cCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJu
IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE5vZGUo
aW1wKSwgaW5mbywgaW1wKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFs
Tm9kZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdElu
dGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRyR2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIGluZm8pOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMTIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25k
aXRpb24xMikKKwogc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsTm9kZUF0dHJTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVz
dEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0yNTIsNiArNDA0LDI3IEBA
IHN0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbE5vZGVBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVO
QUJMRShDb25kaXRpb24xMikKIAorc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsTm9kZUF0dHJTZXR0
ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RJ
bnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CisgICAgTm9kZSogdiA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0
ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4Tm9kZTo6dG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBUZXN0U3VwcGxlbWVu
dGFsOjpzZXRTdXBwbGVtZW50YWxOb2RlKGltcCwgV1RGOjpnZXRQdHIodikpOworICAgIHJldHVy
bjsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisK
K3N0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbE5vZGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RJbnRlcmZhY2VWOElu
dGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1
ZSwgaW5mbyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE1ldGhvZDFN
ZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBUZXN0SW50ZXJmYWNlKiBp
bXAgPSBWOFRlc3RJbnRlcmZhY2U6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpAQCAtMzU3LDI3
ICs1MzAsMjcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3Rvcihjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6
QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RJbnRlcmZhY2VBdHRyc1tdID0gewogI2lmIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIC8vIEF0dHJpYnV0ZSAnc3Vw
cGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScg
RXh0QXR0cjogJ0NvbmRpdGlvbmFsIEltcGxlbWVudGVkQnknKQotICAgIHsic3VwcGxlbWVudGFs
U3RhdGljUmVhZE9ubHlBdHRyIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRh
bFN0YXRpY1JlYWRPbmx5QXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CisgICAgeyJzdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHIiLCBUZXN0SW50ZXJmYWNlVjhJ
bnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyQXR0ckdldHRlckNhbGxiYWNr
LCAwLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlB
dHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNl
bmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICAvLyBBdHRyaWJ1
dGUgJ3N1cHBsZW1lbnRhbFN0YXRpY0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAn
Q29uZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCi0gICAgeyJzdXBwbGVtZW50YWxTdGF0aWNBdHRy
IiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyR2V0
dGVyQ2FsbGJhY2ssIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdGF0aWNB
dHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InN1cHBsZW1lbnRh
bFN0YXRpY0F0dHIiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGlj
QXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1l
bnRhbFN0YXRpY0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RJbnRlcmZhY2VWOEludGVybmFs
OjpzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBU
ZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJTZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAjZW5kaWYgLy8gRU5BQkxFKENv
bmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgLy8gQXR0cmlidXRlICdzdXBwbGVtZW50YWxT
dHIxJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFsIElt
cGxlbWVudGVkQnknKQotICAgIHsic3VwcGxlbWVudGFsU3RyMSIsIFRlc3RJbnRlcmZhY2VWOElu
dGVybmFsOjpzdXBwbGVtZW50YWxTdHIxQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKKyAgICB7InN1cHBsZW1lbnRhbFN0cjEiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6
c3VwcGxlbWVudGFsU3RyMUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgVGVzdEludGVyZmFjZVY4SW50
ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjFBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAs
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjEyKQogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKQogICAgIC8vIEF0dHJpYnV0ZSAnc3VwcGxlbWVudGFsU3RyMicgKFR5cGU6ICdhdHRyaWJ1
dGUnIEV4dEF0dHI6ICdDb25kaXRpb25hbCBJbXBsZW1lbnRlZEJ5JykKLSAgICB7InN1cHBsZW1l
bnRhbFN0cjIiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyMkF0dHJH
ZXR0ZXJDYWxsYmFjaywgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJB
dHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3VwcGxlbWVudGFsU3Ry
MiIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIyQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyMkF0dHJTZXR0
ZXJDYWxsYmFjaywgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBw
bGVtZW50YWxTdHIyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICAvLyBB
dHRyaWJ1dGUgJ3N1cHBsZW1lbnRhbFN0cjMnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAn
Q3VzdG9tU2V0dGVyIEN1c3RvbUdldHRlciBDb25kaXRpb25hbCBJbXBsZW1lbnRlZEJ5JykKLSAg
ICB7InN1cHBsZW1lbnRhbFN0cjMiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVu
dGFsU3RyM0F0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBs
ZW1lbnRhbFN0cjNBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3Vw
cGxlbWVudGFsU3RyMyIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIz
QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFs
U3RyM0F0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1l
bnRhbFN0cjNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RJbnRlcmZhY2VWOElu
dGVybmFsOjpzdXBwbGVtZW50YWxTdHIzQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKICAgICAvLyBBdHRyaWJ1dGUgJ3N1cHBsZW1lbnRhbE5vZGUnIChUeXBlOiAnYXR0cmlidXRl
JyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCi0gICAgeyJzdXBwbGVtZW50
YWxOb2RlIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRyR2V0
dGVyQ2FsbGJhY2ssIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0
clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InN1cHBsZW1lbnRhbE5vZGUi
LCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTm9kZUF0dHJHZXR0ZXJDYWxs
YmFjaywgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRyU2V0dGVy
Q2FsbGJhY2ssIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxl
bWVudGFsTm9kZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiB9
OwogCkBAIC00MTgsMTQgKzU5MSwxNCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0SW50
ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgcmV0
dXJuIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpjb25zdHJ1Y3RvcihhcmdzKTsKIH0KIAotc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJ
bnRlcmZhY2VUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVz
Yywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJ
bnRlcmZhY2VUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVz
Yywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlw
ZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4
OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4
RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RJbnRlcmZhY2Ui
LCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0SW50ZXJmYWNl
OjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIFY4VGVzdEludGVyZmFjZUF0dHJzLCBXVEZf
QVJSQVlfTEVOR1RIKFY4VGVzdEludGVyZmFjZUF0dHJzKSwKLSAgICAgICAgVjhUZXN0SW50ZXJm
YWNlTWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RJbnRlcmZhY2VNZXRob2RzKSwgaXNv
bGF0ZSk7CisgICAgICAgIFY4VGVzdEludGVyZmFjZU1ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgo
VjhUZXN0SW50ZXJmYWNlTWV0aG9kcyksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAg
IFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2ls
bCBub3QgYmUgdXNlZC4KICNpZiBFTkFCTEUoVEVTVF9JTlRFUkZBQ0UpCiAgICAgZGVzYy0+U2V0
Q2FsbEhhbmRsZXIoVjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKTsKQEAgLTQz
OCw3ICs2MTEsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKHY4OgogCiAgICAgLy8gQ3VzdG9tIFNp
Z25hdHVyZSAnc3VwcGxlbWVudGFsTWV0aG9kMicKICAgICBjb25zdCBpbnQgc3VwcGxlbWVudGFs
TWV0aG9kMkFyZ2MgPSAyOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN1
cHBsZW1lbnRhbE1ldGhvZDJBcmd2W3N1cHBsZW1lbnRhbE1ldGhvZDJBcmdjXSA9IHsgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN1cHBsZW1lbnRhbE1ldGhvZDJBcmd2W3N1
cHBsZW1lbnRhbE1ldGhvZDJBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVz
dE9iajo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWdu
YXR1cmU+IHN1cHBsZW1lbnRhbE1ldGhvZDJTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXco
ZGVzYywgc3VwcGxlbWVudGFsTWV0aG9kMkFyZ2MsIHN1cHBsZW1lbnRhbE1ldGhvZDJBcmd2KTsK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICBwcm90
by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3VwcGxlbWVudGFsTWV0aG9kMiIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50
YWxNZXRob2QyTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHN1cHBsZW1lbnRhbE1ldGhv
ZDJTaWduYXR1cmUpKTsKQEAgLTQ1MywyMyArNjI2LDIzIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUo
djg6CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3RJbnRlcmZhY2U6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBWOFRlc3RJbnRlcmZhY2U6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29s
YXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQ
ZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBs
YXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50
ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBs
YXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRU
eXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1
cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAog
ICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RJbnRlcmZh
Y2VUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwg
d29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywg
dGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZShkYXRhLT5y
YXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3Js
ZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5m
bywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RJbnRlcmZhY2U6
Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RJbnRlcmZhY2U6
Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVl
LCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiBib29s
IFY4VGVzdEludGVyZmFjZTo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKaW5kZXgg
YWVhMTljOTg0NWIxYWFiYTBjZTAyYWE3ZTZiNzk1ODc5NTdiMWE3Ny4uOGQ1MTA4YTc4MmMwMTll
ZWQyM2ZhYjZjNWExMDJhNWU0OGE4NjZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaApAQCAtNzksNiAr
NzksMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RJbnRlcmZhY2Uq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3IKICAgICByZXR1cm4gd3JhcChpbXBsLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjhGb3JNYWluV29ybGQoVGVzdEludGVyZmFjZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFT
U0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFko
IWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9y
TWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBh
YmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0SW50ZXJmYWNl
KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFw
cGFibGUpCiB7CkBAIC05MSw2ICsxMDIsMjUgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4RmFzdChUZXN0SW50ZXJmYWNlKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+Citpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRlc3RJbnRlcmZh
Y2UqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdy
YXBwYWJsZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5lci5HZXRJc29sYXRlKCkp
ID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJu
IHY4TnVsbChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7
CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7Cisg
ICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNv
bGF0ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFw
cGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxk
KFBhc3NSZWZQdHI8IFRlc3RJbnRlcmZhY2UgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0
Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0
ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdEludGVyZmFjZSA+
IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBw
YWJsZSkKIHsKICAgICByZXR1cm4gdG9WOEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFw
cGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmlu
ZGV4IDg1ZmNjNWNjMTE1NGQ3ZjVlYmI3NWQwZWY2Y2FkZTMxZDJhYWU1YmQuLmIxZmYyM2NjNDhl
MGI0YTM5OTIyOGNiMDEwZjRkNmFjOWVhODk4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTkyLDE0ICs5MiwxNCBAQCBzdGF0aWMgY29uc3Qg
VjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkTWV0aG9kIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJNZXRobwogICAgIHsibWV0aG9kIiwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJWOElu
dGVybmFsOjptZXRob2RNZXRob2RDYWxsYmFja30sCiB9OwogCi1zdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywg
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJl
bnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAgIHY4
OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwogICAgIGRlZmF1bHRTaWdu
YXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPigpLCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjppbnRlcm5hbEZpZWxkQ291bnQs
CiAgICAgICAgIDAsIDAsCi0gICAgICAgIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJNZXRo
b2RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJNZXRob2Rz
KSwgaXNvbGF0ZSk7CisgICAgICAgIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJNZXRob2Rz
LCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJNZXRob2RzKSwg
aXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWdu
YXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gZGVzYy0+SW5zdGFuY2VUZW1wbGF0
ZSgpOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvID0gZGVzYy0+UHJv
dG90eXBlVGVtcGxhdGUoKTsKQEAgLTExMiwyMyArMTEyLDIzIEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lCiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6
R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVu
dFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6
aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZv
KTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkp
CisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRh
dGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChy
ZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAg
ICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0g
ICAgICAgIENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUZW1wbGF0ZShkYXRh
LT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAg
ICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAg
ICBDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGVtcGxhdGUoZGF0YS0+cmF3
VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRU
eXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8s
IHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdv
cmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJl
bnRXb3JsZFR5cGUpOwogfQogCiBib29sIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6Okhh
c0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgK
aW5kZXggMTA3MTdmZmI5ODcwZmVkZjFlZDI4MDk5YjdlNWY4OGJjODVmMTliZS4uZGE0ZThmODFi
MGZhY2M4ZGRhODcyMTkwNjQ1ODliMGYyZWUwZjk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5oCkBAIC03NSw2ICs3NSwxNyBAQCBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjgoVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIHY4OjpI
YW5kbGU8dgogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CiB9CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5
cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAg
ICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGlt
cGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVy
OworICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisK
IHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ciogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3Jh
cHBhYmxlKQogewpAQCAtODcsNiArOTgsMjUgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4RmFzdChUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wbCwgY29uc3QgSG8KIH0K
IAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+Citpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwg
V3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIu
R2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisg
ICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFp
bldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29u
dGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5l
ciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFz
dEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA+IGlt
cGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJs
ZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFp
bmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwg
Y2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQ
YXNzUmVmUHRyPCBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA+IGltcGwsIGNvbnN0IEhvbGRl
ckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKICAgICByZXR1
cm4gdG9WOEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IDhkMDU0ZGNjZjIwYjZkYzkyNTIzNWI5MWM2
ZjZlNWU1NTM1Y2I0NTUuLjQxOTVmMzAwNjhjMTM3MGI1ZjlkZDI3OWNiYTUzNjg4MTA2OTZmOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTEwOSw3ICsxMDksNyBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25z
dHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OgogICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1
Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUg
Y3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGNhY2hlZFRlbXBsYXRlOwogICAgIGlmICghY2FjaGVkVGVtcGxhdGUuSXNF
bXB0eSgpKQpAQCAtMTIxLDIwICsxMjEsMjAgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6R2V0VGVtcGwKICAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IHJlc3VsdC0+SW5zdGFu
Y2VUZW1wbGF0ZSgpOwogICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvcjo6aW50ZXJuYWxGaWVsZENvdW50KTsKICAgICByZXN1bHQtPlNldENs
YXNzTmFtZSh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIlRlc3ROYW1lZENvbnN0cnVjdG9yIikpOwot
ICAgIHJlc3VsdC0+SW5oZXJpdChWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZShp
c29sYXRlLCB3b3JsZFR5cGUpKTsKKyAgICByZXN1bHQtPkluaGVyaXQoVjhUZXN0TmFtZWRDb25z
dHJ1Y3Rvcjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpOwogCiAgICAg
Y2FjaGVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5l
dyhpc29sYXRlLCByZXN1bHQpOwogICAgIHJldHVybiBjYWNoZWRUZW1wbGF0ZTsKIH0KIAotc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RO
YW1lZENvbnN0cnVjdG9yVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJl
VjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBj
dXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAg
ICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBkZWZhdWx0
U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAi
VGVzdE5hbWVkQ29uc3RydWN0b3IiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4oKSwgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAg
ICAwLCAwLAotICAgICAgICAwLCAwLCBpc29sYXRlKTsKKyAgICAgICAgMCwgMCwgaXNvbGF0ZSwg
Y3VycmVudFdvcmxkVHlwZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAv
LyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIAogCkBAIC0xNDMsMjMg
KzE0MywyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbAogICAgIHJldHVybiBkZXNjOwogfQog
Ci12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TmFtZWRDb25zdHJ1
Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUg
d29ybGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5h
bWVkQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0
YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0
YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVy
YXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZp
bmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5
cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5k
bGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3ROYW1lZENvbnN0cnVjdG9yVGVt
cGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxk
VHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBs
KTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKGRhdGEt
PnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdv
cmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZp
bmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdE5hbWVkQ29u
c3RydWN0b3I6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RO
YW1lZENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUp
CiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3Rh
bmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRU
eXBlKTsKIH0KIAogYm9vbCBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZUluQW55
V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3ROYW1lZENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCmluZGV4IDMwYTc1NmI2NDliNjliYTVkOTQz
ZDFlNzhkZThjODMzY2U1NTIzNTQuLjg1ZWM1ZmRiZDBlNWIwNTFjZDJmNGRjYzczNTQ0YmI2YTcw
MjVlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaApAQCAtODIsNiArODIsMTcg
QEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3ROYW1lZENvbnN0cnVjdG9y
KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmoKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjhGb3JNYWluV29ybGQoVGVzdE5hbWVkQ29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBB
U1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZ
KCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZv
ck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBw
YWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE5hbWVkQ29u
c3RydWN0b3IqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFi
bGUqIHdyYXBwYWJsZSkKIHsKQEAgLTk0LDYgKzEwNSwyNSBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBsLCBjb25zdCBIb2xk
ZXJDbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJs
ZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVz
dE5hbWVkQ29uc3RydWN0b3IqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVy
LCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5l
ci5HZXRJc29sYXRlKCkpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkK
KyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JN
YWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBj
b250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFp
bmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhG
YXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IFRlc3ROYW1lZENvbnN0cnVjdG9yID4gaW1wbCwg
Y29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQor
eworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIs
IHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFz
cyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NS
ZWZQdHI8IFRlc3ROYW1lZENvbnN0cnVjdG9yID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVy
JiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFz
dChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKaW5kZXggMjU5
ODg1MzBmMGI4N2IyMmY4ZjAyY2U2OThkMDE5ODQwZjE5ZTAwMy4uNmRhMWRlNDI2Y2YxNzg0MzRm
ZDlkNmI2NzM5ZTVmYmYwNTViOWJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcApAQCAtOTMsMTQgKzkzLDE0IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3ROb2RlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIFRlc3ROb2RlVjhJbnRlcm5hbDo6
Y29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0Tm9kZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldv
cmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5
cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwog
CiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7Ci0gICAgZGVm
YXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVz
YywgIlRlc3ROb2RlIiwgVjhOb2RlOjpHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpLCBW
OFRlc3ROb2RlOjppbnRlcm5hbEZpZWxkQ291bnQsCisgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4
RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3ROb2RlIiwgVjhO
b2RlOjpHZXRUZW1wbGF0ZShpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSwgVjhUZXN0Tm9kZTo6
aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICAwLCAwLAotICAgICAgICAwLCAwLCBpc29sYXRl
KTsKKyAgICAgICAgMCwgMCwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CiAgICAgVU5VU0VE
X1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBi
ZSB1c2VkLgogICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4VGVzdE5vZGU6OmNvbnN0cnVjdG9y
Q2FsbGJhY2spOwogICAgIApAQCAtMTEwLDIzICsxMTAsMjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3ROb2RlVGVtcGxhdGUodjg6
OlBlcnMKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IFY4VGVzdE5vZGU6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3ROb2RlOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3Jh
cHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEq
IGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0
ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6
aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmlu
ZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29y
bGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6
SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0Tm9kZVRlbXBsYXRlKGRh
dGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwot
ICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAg
ICAgIENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywg
Y3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEt
PnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJl
dHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3ROb2RlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0Tm9kZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJy
ZW50V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwg
Y3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhUZXN0Tm9kZTo6SGFzSW5zdGFuY2VJbkFu
eVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE5vZGUuaAppbmRleCA5NDRiMmE4OWI4ZGM4ZDlmNWUyYmI5ZTQwZWMxZTVmOGMzOGUyOGRiLi5h
Y2ZlMTU1NGNlZTJiNmY4MDgzOGJiMGFkOTNkMGRjZWY4Y2U1MDVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgKQEAgLTc3
LDYgKzc3LDE3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0Tm9kZSog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvCiAgICAgcmV0dXJuIHdyYXAoaW1w
bCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4Rm9yTWFpbldvcmxkKFRlc3ROb2RlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNT
RVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSgh
aW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CisgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JN
YWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFi
bGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3ROb2RlKiBpbXBs
LCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUp
CiB7CkBAIC04OSw2ICsxMDAsMjUgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
RmFzdChUZXN0Tm9kZSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb24KIH0KIAogdGVt
cGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRlc3ROb2RlKiBpbXBsLCBj
b25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7
CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29y
bGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29u
dGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICgh
d3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3
cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5s
aW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRy
PCBUZXN0Tm9kZSA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFw
cGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1w
bC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhv
bGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0Tm9kZSA+IGltcGwsIGNvbnN0IEhvbGRlckNv
bnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKICAgICByZXR1cm4g
dG9WOEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRl
eCA3MjA1YWUxMzYwMjE1MjhiOTM5ZWUxYzFmZjdiYmI4NjI4NDc4YmQzLi40OGI5NDM1ZTVkYTI2
NGJjOGU2ZDlhNTQ2ODY4MDlhNDE1MWVjZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMTIzLDYgKzEyMywx
NyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0
dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdAogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5h
bDo6cmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+cmVhZE9ubHlMb25nQXR0cigpLCBpbmZv
LkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZE9u
bHlMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4g
VGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRPbmx5
U3RyaW5nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEzNCw2ICsxNDUsMTcgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiByZWFkT25seVN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6
OkxvY2FsPHY4OjoKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5U3RyaW5n
QXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gcmVhZE9ubHlTdHJpbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJl
dHVybiB2OFN0cmluZyhpbXAtPnJlYWRPbmx5U3RyaW5nQXR0cigpLCBpbmZvLkdldElzb2xhdGUo
KSwgUmV0dXJuVW5zYWZlSGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiByZWFkT25seVN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVN0cmluZ0F0dHJBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJlYWRPbmx5VGVzdE9iakF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNTIsNiArMTc0LDI0IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpy
ZWFkT25seVRlc3RPYmpBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiByZWFkT25seVRlc3RPYmpBdHRyQXR0ckdldHRlckZvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOworICAgIFJlZlB0cjxUZXN0T2JqPiByZXN1bHQgPSBpbXAtPnJlYWRPbmx5VGVzdE9i
akF0dHIoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IHJlc3VsdC5nZXQo
KSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPihET01EYXRhU3RvcmU6OmdldFdyYXBwZXIocmVzdWx0
LmdldCgpLCBpbmZvLkdldElzb2xhdGUoKSkpIDogdjhVbmRlZmluZWQoKTsKKyAgICBpZiAod3Jh
cHBlci5Jc0VtcHR5KCkpIHsKKyAgICAgICAgd3JhcHBlciA9IHRvVjgocmVzdWx0LmdldCgpLCBp
bmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgICAgIGlmICghd3JhcHBlci5J
c0VtcHR5KCkpCisgICAgICAgICAgICBWOEhpZGRlblByb3BlcnR5TmFtZTo6c2V0TmFtZWRIaWRk
ZW5SZWZlcmVuY2UoaW5mby5Ib2xkZXIoKSwgInJlYWRPbmx5VGVzdE9iakF0dHIiLCB3cmFwcGVy
KTsKKyAgICB9CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gcmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5VGVzdE9iakF0dHJB
dHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHN0YXRpY1JlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHJl
dHVybiB2OEludGVnZXIoVGVzdE9iajo6c3RhdGljUmVhZE9ubHlMb25nQXR0cigpLCBpbmZvLkdl
dElzb2xhdGUoKSk7CkBAIC0xNjIsNiArMjAyLDE2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gc3RhdGljUmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8
CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNSZWFkT25seUxvbmdBdHRyQXR0
ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBz
dGF0aWNSZWFkT25seUxvbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1
cm4gdjhJbnRlZ2VyKFRlc3RPYmo6OnN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIoKSwgaW5mby5HZXRJ
c29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0YXRpY1JlYWRP
bmx5TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJu
IFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNSZWFkT25seUxvbmdBdHRyQXR0ckdldHRlckZvck1h
aW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBz
dGF0aWNTdHJpbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICByZXR1cm4gdjhTdHJpbmcoVGVzdE9i
ajo6c3RhdGljU3RyaW5nQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFu
ZGxlKTsKQEAgLTE3Miw2ICsyMjIsMTYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBz
dGF0aWNTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKICAgICBy
ZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0cmluZ0F0dHJBdHRyR2V0dGVyKG5hbWUs
IGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0YXRpY1N0cmluZ0F0
dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiB2OFN0cmluZyhUZXN0T2Jq
OjpzdGF0aWNTdHJpbmdBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5k
bGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0YXRpY1N0cmluZ0F0dHJB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOElu
dGVybmFsOjpzdGF0aWNTdHJpbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZv
KTsKK30KKwogc3RhdGljIHZvaWQgc3RhdGljU3RyaW5nQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VS
Q0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKQEAgLTE4NCw2ICsyNDQsMTgg
QEAgc3RhdGljIHZvaWQgc3RhdGljU3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkwKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGlj
U3RyaW5nQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9p
ZCBzdGF0aWNTdHJpbmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lE
KFY4U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOworICAgIFRlc3RPYmo6OnNldFN0YXRpY1N0
cmluZ0F0dHIodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBzdGF0aWNTdHJpbmdB
dHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljU3RyaW5nQXR0ckF0dHJTZXR0
ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGVudW1BdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTk1LDYgKzI2NywxNyBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVudW1BdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZW51
bUF0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGVudW1BdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OFN0
cmluZyhpbXAtPmVudW1BdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5k
bGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVudW1BdHRyQXR0ckdldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6
ZW51bUF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMg
dm9pZCBlbnVtQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBA
IC0yMTEsNiArMjk0LDIyIEBAIHN0YXRpYyB2b2lkIGVudW1BdHRyQXR0clNldHRlckNhbGxiYWNr
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6CiAgICAgVGVzdE9ialY4
SW50ZXJuYWw6OmVudW1BdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0
YXRpYyB2b2lkIGVudW1BdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZPSUQo
VjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CisgICAgU3RyaW5nIHN0cmluZyA9IHY7Cisg
ICAgaWYgKCEoc3RyaW5nID09ICIiIHx8IHN0cmluZyA9PSAiRW51bVZhbHVlMSIgfHwgc3RyaW5n
ID09ICJFbnVtVmFsdWUyIiB8fCBzdHJpbmcgPT0gIkVudW1WYWx1ZTMiKSkKKyAgICAgICAgcmV0
dXJuOworICAgIGltcC0+c2V0RW51bUF0dHIodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMg
dm9pZCBlbnVtQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OmVudW1BdHRyQXR0clNl
dHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gc2hvcnRBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMjIyLDYgKzMyMSwxNyBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNob3J0QXR0ckF0dHJHZXR0ZXJDYWxsYmFj
ayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6
c2hvcnRBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBzaG9ydEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJu
IHY4SW50ZWdlcihpbXAtPnNob3J0QXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc2hvcnRBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c2hvcnRBdHRyQXR0
ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgc2hvcnRB
dHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTIzNSw2ICsz
NDUsMTkgQEAgc3RhdGljIHZvaWQgc2hvcnRBdHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djgKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6
c2hvcnRBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lk
IHNob3J0QXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNldFNob3J0QXR0
cih2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHNob3J0QXR0ckF0dHJTZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
VGVzdE9ialY4SW50ZXJuYWw6OnNob3J0QXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwg
dmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHVuc2lnbmVk
U2hvcnRBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMjQ2LDYgKzM2OSwxNyBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHVuc2lnbmVkU2hvcnRBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpM
b2NhbDx2ODo6UwogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRTaG9ydEF0
dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHVuc2lnbmVkU2hvcnRBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVy
biB2OEludGVnZXIoaW1wLT51bnNpZ25lZFNob3J0QXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSk7
Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdW5zaWduZWRTaG9ydEF0dHJBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVy
bmFsOjp1bnNpZ25lZFNob3J0QXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7
Cit9CisKIHN0YXRpYyB2b2lkIHVuc2lnbmVkU2hvcnRBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTI1OSw2ICszOTMsMTkgQEAgc3RhdGljIHZvaWQgdW5z
aWduZWRTaG9ydEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjoKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRTaG9ydEF0dHJBdHRyU2V0
dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgdW5zaWduZWRTaG9ydEF0
dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIGludCB2ID0gdG9VSW50MzIodmFsdWUpOworICAgIGltcC0+c2V0VW5zaWduZWRTaG9ydEF0
dHIodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCB1bnNpZ25lZFNob3J0QXR0ckF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkU2hvcnRBdHRyQXR0clNldHRlckZv
ck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gbG9uZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0yNzAsNiArNDE3LDE3IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hCiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0
ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gbG9uZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdl
cihpbXAtPmxvbmdBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBsb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdBdHRyQXR0ckdldHRlckZvck1h
aW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgbG9uZ0F0dHJBdHRyU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMjgzLDYgKzQ0MSwxOSBAQCBzdGF0
aWMgdm9pZCBsb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OgogICAgIFRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0dHJT
ZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBsb25nQXR0ckF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50
IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNldExvbmdBdHRyKHYpOworICAgIHJldHVy
bjsKK30KKworc3RhdGljIHZvaWQgbG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFs
Ojpsb25nQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQor
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGxvbmdMb25nQXR0ckF0dHJHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
QEAgLTI5NCw2ICs0NjUsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBsb25nTG9u
Z0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmcKICAgICByZXR1cm4g
VGVzdE9ialY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9
CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbG9uZ0xvbmdBdHRyQXR0ckdldHRlckZv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXcoc3RhdGljX2Nhc3Q8ZG91
YmxlPihpbXAtPmxvbmdMb25nQXR0cigpKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gbG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0xvbmdBdHRyQXR0ckdldHRlckZvck1haW5X
b3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgbG9uZ0xvbmdBdHRyQXR0clNldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTMwNyw2ICs0ODksMTkgQEAgc3Rh
dGljIHZvaWQgbG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWwKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0xvbmdBdHRy
QXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIGxvbmdMb25n
QXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CisgICAgbG9uZyBsb25nIHYgPSB0b0ludDY0KHZhbHVlKTsKKyAgICBpbXAtPnNldExvbmdMb25n
QXR0cih2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGxvbmdMb25nQXR0ckF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29y
bGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMzE4LDYgKzUxMywxNyBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRl
ckNhbGxiYWNrKHY4OjpMb2NhbDx2OAogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6dW5z
aWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlckZvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOworICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXcoc3RhdGljX2Nhc3Q8ZG91YmxlPihp
bXAtPnVuc2lnbmVkTG9uZ0xvbmdBdHRyKCkpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRy
QXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgdW5z
aWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwpAQCAtMzMxLDYgKzUzNywxOSBAQCBzdGF0aWMgdm9pZCB1bnNpZ25lZExvbmdMb25nQXR0ckF0
dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdgogICAgIFRlc3RP
YmpWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUs
IGluZm8pOwogfQogCitzdGF0aWMgdm9pZCB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJG
b3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgdW5zaWduZWQg
bG9uZyBsb25nIHYgPSB0b1VJbnQ2NCh2YWx1ZSk7CisgICAgaW1wLT5zZXRVbnNpZ25lZExvbmdM
b25nQXR0cih2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHVuc2lnbmVkTG9uZ0xv
bmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMzQyLDYgKzU2
MSwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJBdHRyR2V0dGVy
Q2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVy
bmFsOjpzdHJpbmdBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAg
IHJldHVybiB2OFN0cmluZyhpbXAtPnN0cmluZ0F0dHIoKSwgaW5mby5HZXRJc29sYXRlKCksIFJl
dHVyblVuc2FmZUhhbmRsZSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3Ry
aW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGlu
Zm8pOworfQorCiBzdGF0aWMgdm9pZCBzdHJpbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKQEAgLTM1NSw2ICs1ODUsMTkgQEAgc3RhdGljIHZvaWQgc3RyaW5n
QXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHYKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0ckF0dHJTZXR0ZXIobmFtZSwg
dmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBzdHJpbmdBdHRyQXR0clNldHRlckZvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBWOFRSWUNBVENIX0ZP
Ul9WOFNUUklOR1JFU09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7Cisg
ICAgaW1wLT5zZXRTdHJpbmdBdHRyKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQg
c3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJBdHRyU2V0
dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0ZXN0T2JqQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTM2Nyw2ICs2MTAsMTgg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0ZXN0T2JqQXR0ckF0dHJHZXR0ZXJDYWxs
YmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6
OnRlc3RPYmpBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0ZXN0T2JqQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBy
ZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wLT50ZXN0T2JqQXR0cigpLCBpbmZvLCBpbXAp
OworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRlc3RPYmpBdHRyQXR0ckdldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIEZlYXR1cmVPYnNlcnZlcjo6b2JzZXJ2ZShh
Y3RpdmVET01XaW5kb3coQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpKSwgRmVhdHVyZU9ic2VydmVy
OjpUZXN0RmVhdHVyZSk7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp0ZXN0T2JqQXR0
ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHRl
c3RPYmpBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTM4
MSw2ICs2MzYsMjAgQEAgc3RhdGljIHZvaWQgdGVzdE9iakF0dHJBdHRyU2V0dGVyQ2FsbGJhY2so
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDwKICAgICBUZXN0T2JqVjhJbnRl
cm5hbDo6dGVzdE9iakF0dHJBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3Rh
dGljIHZvaWQgdGVzdE9iakF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNl
KHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkg
PyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUp
KSA6IDA7CisgICAgaW1wLT5zZXRUZXN0T2JqQXR0cihXVEY6OmdldFB0cih2KSk7CisgICAgcmV0
dXJuOworfQorCitzdGF0aWMgdm9pZCB0ZXN0T2JqQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgRmVhdHVyZU9ic2Vy
dmVyOjpvYnNlcnZlKGFjdGl2ZURPTVdpbmRvdyhCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCkpLCBG
ZWF0dXJlT2JzZXJ2ZXI6OlRlc3RGZWF0dXJlKTsKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6dGVz
dE9iakF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwog
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBYTUxPYmpBdHRyQXR0ckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAt
MzkyLDYgKzY2MSwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFhNTE9iakF0dHJB
dHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJuIFRlc3RP
YmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBYTUxPYmpBdHRyQXR0ckdldHRlckZvck1haW5Xb3Js
ZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXAtPnhtbE9iakF0dHIoKSwg
aW5mbywgaW1wKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBYTUxPYmpBdHRy
QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJ
bnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9
CisKIHN0YXRpYyB2b2lkIFhNTE9iakF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwpAQCAtNDA1LDYgKzY4NSwxOSBAQCBzdGF0aWMgdm9pZCBYTUxPYmpBdHRyQXR0
clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8dgog
ICAgIFRlc3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwg
aW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIFhNTE9iakF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RP
Ymo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8u
R2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgaW1wLT5zZXRYTUxPYmpBdHRyKFdURjo6Z2V0UHRy
KHYpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIFhNTE9iakF0dHJBdHRyU2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1l
LCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRl
QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwpAQCAtNDE2LDYgKzcwOSwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGNyZWF0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZQogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0ckdldHRlcihuYW1lLCBp
bmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4Qm9vbGVhbihpbXAtPmlzQ3JlYXRlKCksIGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVh
dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpW
OEludGVybmFsOjpjcmVhdGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQor
CiBzdGF0aWMgdm9pZCBjcmVhdGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwpAQCAtNDI5LDYgKzczMywxOSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVBdHRyU2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VgogICAgIFRl
c3RPYmpWOEludGVybmFsOjpjcmVhdGVBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0K
IAorc3RhdGljIHZvaWQgY3JlYXRlQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKKyAgICBib29sIHYgPSB2YWx1ZS0+Qm9vbGVhblZhbHVlKCk7Cisg
ICAgaW1wLT5zZXRDcmVhdGUodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBjcmVh
dGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpjcmVhdGVBdHRyU2V0dGVyRm9yTWFpbldv
cmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiByZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNDQwLDYgKzc1NywxNyBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVy
Q2FsbGJhY2sodjg6OkxvY2FsPHY4OgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVm
bGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKKyAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5mYXN0R2V0QXR0cmlidXRlKFdlYkNvcmU6
OkhUTUxOYW1lczo6cmVmbGVjdGVkc3RyaW5nYXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSwg
UmV0dXJuVW5zYWZlSGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBy
ZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJG
b3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFN0cmlu
Z0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNDUzLDYg
Kzc4MSwxOSBAQCBzdGF0aWMgdm9pZCByZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckNhbGxi
YWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2OAogICAgIFRlc3RPYmpWOEludGVybmFs
OjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAK
K3N0YXRpYyB2b2lkIHJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5H
UkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hlY2s+LCB2LCB2YWx1ZSk7
CisgICAgaW1wLT5zZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJp
bmdhdHRyQXR0ciwgdik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRT
dHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0
ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
QEAgLTQ2NCw3ICs4MDUsMTggQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0
ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHYKICAgICByZXR1cm4g
VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJHZXR0ZXIobmFtZSwg
aW5mbyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiByZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0
dXJuIHY4SW50ZWdlcihpbXAtPmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0ciksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKwor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFs
OjpyZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8p
OworfQorCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CkBA
IC00NzcsNiArODI5LDE5IEBAIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJT
ZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKICAgICBUZXN0T2JqVjhJ
bnRlcm5hbDo6cmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5m
byk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0ZXJGb3JN
YWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0lu
dDMyKHZhbHVlKTsKKyAgICBpbXAtPnNldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxO
YW1lczo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0ciwgdik7CisgICAgcmV0dXJuOworfQorCitz
dGF0aWMgdm9pZCByZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVy
bmFsOjpyZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZh
bHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRV
bnNpZ25lZEludGVncmFsQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTQ4OCw2ICs4NTMsMTcgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0
dHJHZXR0ZXJDYWxsYmFjayh2ODoKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxl
Y3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0
dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhVbnNpZ25lZEludGVnZXIoc3Rk
OjptYXgoMCwgaW1wLT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJl
ZmxlY3RlZHVuc2lnbmVkaW50ZWdyYWxhdHRyQXR0cikpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9
CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkVW5zaWduZWRJbnRlZ3Jh
bEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RP
YmpWOEludGVybmFsOjpyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJHZXR0ZXJGb3JN
YWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFVuc2lnbmVk
SW50ZWdyYWxBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAg
LTUwMSw2ICs4NzcsMTkgQEAgc3RhdGljIHZvaWQgcmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0
dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmcKICAgICBUZXN0T2JqVjhJ
bnRlcm5hbDo6cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyKG5hbWUsIHZh
bHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgcmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0
dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIHVuc2lnbmVkIHYgPSB0b1VJbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRVbnNpZ25lZElu
dGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdW5zaWduZWRpbnRl
Z3JhbGF0dHJBdHRyLCB2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHJlZmxlY3Rl
ZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVj
dGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVl
LCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRCb29s
ZWFuQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTUxMiw2ICs5MDEsMTcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiByZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6
TG9jYWw8djgKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5B
dHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiByZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBy
ZXR1cm4gdjhCb29sZWFuKGltcC0+ZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6
OnJlZmxlY3RlZGJvb2xlYW5hdHRyQXR0ciksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJl
ZmxlY3RlZEJvb2xlYW5BdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30K
Kwogc3RhdGljIHZvaWQgcmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNTI1LDYgKzkyNSwxOSBAQCBzdGF0aWMgdm9pZCByZWZs
ZWN0ZWRCb29sZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdgogICAgIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJT
ZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRCb29s
ZWFuQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CisgICAgYm9vbCB2ID0gdmFsdWUtPkJvb2xlYW5WYWx1ZSgpOworICAgIGltcC0+c2V0Qm9v
bGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGJvb2xlYW5hdHRyQXR0
ciwgdik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRCb29sZWFuQXR0
ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0clNl
dHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkVVJMQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTUzNiw2ICs5
NDksMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRVUkxBdHRyQXR0
ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKICAgICByZXR1cm4gVGVzdE9ialY4SW50
ZXJuYWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZFVSTEF0dHJBdHRyR2V0dGVyRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+Z2V0VVJMQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSwg
UmV0dXJuVW5zYWZlSGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBy
ZWZsZWN0ZWRVUkxBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJl
dHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFVSTEF0dHJBdHRy
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNTQ5LDYgKzk3MywxOSBA
QCBzdGF0aWMgdm9pZCByZWZsZWN0ZWRVUkxBdHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TAogICAgIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0
ZWRVUkxBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lk
IHJlZmxlY3RlZFVSTEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChW
OFN0cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hlY2s+LCB2LCB2YWx1ZSk7CisgICAgaW1wLT5zZXRB
dHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0ciwgdik7Cisg
ICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRVUkxBdHRyQXR0clNldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQo
bmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJl
ZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC01NjAsNiArOTk3LDE3IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxs
YmFjayh2ODo6TG9jYWw8djg6CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0
ZWRTdHJpbmdBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiByZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmZhc3RHZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRN
TE5hbWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSwg
UmV0dXJuVW5zYWZlSGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBy
ZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJG
b3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFN0cmlu
Z0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNTczLDYg
KzEwMjEsMTkgQEAgc3RhdGljIHZvaWQgcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxs
YmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjgKICAgICBUZXN0T2JqVjhJbnRlcm5h
bDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQog
CitzdGF0aWMgdm9pZCByZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklO
R1JFU09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTxXaXRoTnVsbENoZWNrPiwgdiwgdmFsdWUp
OworICAgIGltcC0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVu
dFN0cmluZ0F0dHJBdHRyLCB2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHJlZmxl
Y3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJp
bmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwpAQCAtNTg0LDYgKzEwNDUsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiByZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkwK
ICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0
ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpI
VE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJBdHRyKSwgaW5mby5HZXRJc29sYXRl
KCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZEN1c3RvbUlu
dGVncmFsQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4g
VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJHZXR0ZXJG
b3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3Rv
bUludGVncmFsQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBA
IC01OTcsNiArMTA2OSwxOSBAQCBzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0
dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgVGVzdE9ialY4
SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFs
dWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAg
IGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRJbnRlZ3JhbEF0dHJpYnV0ZShX
ZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3JhbEF0dHJBdHRyLCB2KTsKKyAg
ICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0
dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0ckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwpAQCAtNjA4LDYgKzEwOTMsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZs
ZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG8KICAgICByZXR1
cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0ckdldHRl
cihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0
ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4g
djhCb29sZWFuKGltcC0+ZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3Rv
bUNvbnRlbnRCb29sZWFuQXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyR2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFs
OjpyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwg
aW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTYyMSw2ICsxMTE3LDE5IEBA
IHN0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlckNhbGxiYWNr
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0
YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlckZvck1haW5Xb3Js
ZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBib29sIHYgPSB2YWx1ZS0+Qm9v
bGVhblZhbHVlKCk7CisgICAgaW1wLT5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxO
YW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0ciwgdik7CisgICAgcmV0dXJuOworfQor
CitzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9i
alY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlckZvck1haW5X
b3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTYzMiw2ICsxMTQxLDE3
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0
dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFs
OjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0ckdldHRl
ckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmdldFVSTEF0dHJpYnV0
ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0ciksIGluZm8uR2V0
SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21V
UkxBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZv
aWQgcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CkBAIC02NDUsNiArMTE2NSwxOSBAQCBzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0
b21VUkxBdHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAog
ICAgIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlcihu
YW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbVVSTEF0
dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNl
PFdpdGhOdWxsQ2hlY2s+LCB2LCB2YWx1ZSk7CisgICAgaW1wLT5zZXRBdHRyaWJ1dGUoV2ViQ29y
ZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIsIHYpOworICAgIHJldHVybjsK
K30KKworc3RhdGljIHZvaWQgcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJTZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9i
alY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
eXBlZEFycmF5QXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTY1Niw2ICsxMTg5LDE3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdHlwZWRBcnJheUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6
OkxvY2FsPHY4OjpTdHJpCiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5
QXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdHlwZWRBcnJheUF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJu
IHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcC0+dHlwZWRBcnJheUF0dHIoKSwgaW5mbywgaW1wKTsK
K30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0eXBlZEFycmF5QXR0ckF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6
OnR5cGVkQXJyYXlBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwog
c3RhdGljIHZvaWQgdHlwZWRBcnJheUF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwpAQCAtNjY5LDYgKzEyMTMsMTkgQEAgc3RhdGljIHZvaWQgdHlwZWRBcnJheUF0
dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2MK
ICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6dHlwZWRBcnJheUF0dHJBdHRyU2V0dGVyKG5hbWUsIHZh
bHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgdHlwZWRBcnJheUF0dHJBdHRyU2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIEZsb2F0MzJBcnJh
eSogdiA9IFY4RmxvYXQzMkFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRl
KCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhGbG9hdDMyQXJyYXk6OnRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgaW1wLT5z
ZXRUeXBlZEFycmF5QXR0cihXVEY6OmdldFB0cih2KSk7CisgICAgcmV0dXJuOworfQorCitzdGF0
aWMgdm9pZCB0eXBlZEFycmF5QXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnR5cGVk
QXJyYXlBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisK
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRy
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CkBAIC02ODQsNiArMTI0MSwyMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbAog
ICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRy
R2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIGludCB2ID0gaW1wLT5hdHRyV2l0aEdldHRlckV4Y2VwdGlv
bihlYyk7CisgICAgaWYgKFVOTElLRUxZKGVjKSkKKyAgICAgICAgcmV0dXJuIHNldERPTUV4Y2Vw
dGlvbihlYywgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB2OEludGVnZXIodiwgaW5m
by5HZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0
dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBhdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBA
IC02OTcsNiArMTI2OSwxOSBAQCBzdGF0aWMgdm9pZCBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0
dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZQogICAgIFRlc3RPYmpW
OEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIobmFtZSwgdmFsdWUs
IGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0
ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYg
PSB0b0ludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKHYp
OworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25B
dHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAt
NzA4LDYgKzEyOTMsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWwKICAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcihuYW1lLCBp
bmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aFNldHRlckV4
Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKGlt
cC0+YXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5h
bDo6YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGlu
Zm8pOworfQorCiBzdGF0aWMgdm9pZCBhdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC03MjQsNiArMTMyMCwyMiBAQCBzdGF0
aWMgdm9pZCBhdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZQogICAgIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbkF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9p
ZCBhdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXAtPnNldEF0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KHYsIGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAgICAgICBzZXRET01FeGNlcHRpb24o
ZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGF0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldp
dGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZv
KTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTczOSw2ICsxMzUxLDIxIEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVy
Q2FsbGJhY2sodjg6CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU3RyaW5nIHYg
PSBpbXAtPnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKTsKKyAgICBpZiAoVU5MSUtF
TFkoZWMpKQorICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xh
dGUoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKHYsIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5V
bnNhZmVIYW5kbGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBz
dHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CkBAIC03NTIsNiArMTM3OSwxOSBAQCBzdGF0aWMgdm9pZCBzdHJpbmdBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmlu
ZwogICAgIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0
dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBzdHJpbmdBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lE
KFY4U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOworICAgIGltcC0+c2V0U3RyaW5nQXR0cldp
dGhHZXR0ZXJFeGNlcHRpb24odik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBzdHJp
bmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0
cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2
YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0
cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC03NjMsNiArMTQwMywxNyBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
QXR0ckdldHRlckNhbGxiYWNrKHY4OgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3Ry
aW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
QXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPnN0cmlu
Z0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNh
ZmVIYW5kbGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25B
dHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBzdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CkBAIC03NzksMTYgKzE0MzAsNDIgQEAgc3RhdGljIHZvaWQgc3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmcK
ICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRy
U2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgc3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChW
OFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBpbXAtPnNldFN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKHYsIGVjKTsKKyAgICBp
ZiAoVU5MSUtFTFkoZWMpKQorICAgICAgICBzZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNv
bGF0ZSgpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsK
K30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXN0b21BdHRyQXR0ckdldHRlckNh
bGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIHJldHVybiBWOFRlc3RPYmo6OmN1c3RvbUF0dHJBdHRyR2V0dGVyQ3Vz
dG9tKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGN1c3Rv
bUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFY4VGVz
dE9iajo6Y3VzdG9tQXR0ckF0dHJHZXR0ZXJDdXN0b20obmFtZSwgaW5mbyk7Cit9CisKIHN0YXRp
YyB2b2lkIGN1c3RvbUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIFY4VGVzdE9iajo6Y3VzdG9tQXR0ckF0dHJTZXR0ZXJDdXN0b20obmFt
ZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBjdXN0b21BdHRyQXR0clNldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBW
OFRlc3RPYmo6OmN1c3RvbUF0dHJBdHRyU2V0dGVyQ3VzdG9tKG5hbWUsIHZhbHVlLCBpbmZvKTsK
K30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CkBAIC04MDQsNiArMTQ4MSwyMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6
TG9jYQogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7Cisg
ICAgaWYgKCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworICAg
IFNjcmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CisgICAgcmV0dXJuIHY4SW50ZWdl
cihpbXAtPndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgmc3RhdGUpLCBpbmZvLkdldElzb2xhdGUo
KSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0
T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5X
b3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgd2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTgyMyw2ICsx
NTE1LDI1IEBAIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6
OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwog
fQogCitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2ID0gdG9JbnQz
Mih2YWx1ZSk7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpj
dXJyZW50KCk7CisgICAgaWYgKCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBT
Y3JpcHRTdGF0ZSYgc3RhdGUgPSAqY3VycmVudFN0YXRlOworICAgIGltcC0+c2V0V2l0aFNjcmlw
dFN0YXRlQXR0cmlidXRlKCZzdGF0ZSwgdik7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpLCBpbmZvLkdldElzb2xhdGUo
KSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0
dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKQEAgLTgzNSw2ICsxNTQ2LDE4IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJh
CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4
dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JN
YWluV29ybGQoaW1wLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShzY3JpcHRD
b250ZXh0KSwgaW5mbywgaW1wKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsK
K30KKwogc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRy
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtODQ5LDYgKzE1NzIsMjAg
QEAgc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0
dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjoKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZv
KTsKIH0KIAorc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAg
IFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xh
dGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKKyAgICBpbXAtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKHNjcmlw
dENvbnRleHQsIFdURjo6Z2V0UHRyKHYpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lk
IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJ
bnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyRm9y
TWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC04
NzAsNiArMTYwNywyNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFjayh2OAogICAgIHJldHVybiBUZXN0
T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlcihu
YW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0
YXRlOjpjdXJyZW50KCk7CisgICAgaWYgKCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOworICAgIFNjcmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7Cisg
ICAgUmVmUHRyPFRlc3RPYmo+IHYgPSBpbXAtPndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
cygmc3RhdGUsIGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAgICAgICByZXR1cm4gc2V0
RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwg
aW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZCh2LnJl
bGVhc2UoKSwgaW5mbywgaW1wKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXNBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0
aWMgdm9pZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtODg5LDYgKzE2NDcsMjUgQEAgc3RhdGljIHZvaWQg
d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2Nh
bDx2ODo6U3RyaW4KICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlUmFpc2VzQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lk
IHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6
SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJ
c29sYXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0
U3RhdGU6OmN1cnJlbnQoKTsKKyAgICBpZiAoIWN1cnJlbnRTdGF0ZSkKKyAgICAgICAgcmV0dXJu
OworICAgIFNjcmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CisgICAgaW1wLT5zZXRX
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoJnN0YXRlLCBXVEY6OmdldFB0cih2KSk7Cisg
ICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQorICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLmV4
Y2VwdGlvbigpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMg
dm9pZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOElu
dGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyRm9yTWFpbldv
cmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
QEAgLTkwNSw2ICsxNjgyLDIyIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyCiAgICAgcmV0dXJu
IFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJh
aXNlc0F0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKKyAgICBSZWZQdHI8VGVzdE9iaj4gdiA9IGltcC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGVSYWlzZXMoc2NyaXB0Q29udGV4dCwgZWMpOworICAgIGlmIChVTkxJS0VMWShl
YykpCisgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgp
KTsKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQodi5yZWxlYXNlKCksIGluZm8sIGlt
cCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisK
IHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTkxOSw2ICsxNzEyLDIw
IEBAIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2Vz
QXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0clNldHRlcihuYW1lLCB2YWx1
ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlUmFpc2VzQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwg
aW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhUZXN0
T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOwor
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CisgICAgaW1wLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZVJhaXNlcyhzY3JpcHRDb250ZXh0LCBXVEY6OmdldFB0cih2KSk7CisgICAgcmV0dXJu
OworfQorCitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJh
aXNlc0F0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlUmFpc2VzQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5m
byk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTkzNSw2ICsx
NzQyLDIyIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0CiAgICAgcmV0dXJuIFRlc3RPYmpWOElu
dGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdl
dHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3Jp
cHRTdGF0ZTo6Y3VycmVudCgpOworICAgIGlmICghY3VycmVudFN0YXRlKQorICAgICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKKyAgICBTY3JpcHRTdGF0ZSYgc3RhdGUgPSAqY3VycmVudFN0YXRl
OworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcC0+
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgmc3RhdGUs
IHNjcmlwdENvbnRleHQpLCBpbmZvLCBpbXApOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOElu
dGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
QXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC05NTUsNiArMTc3OCwyNiBAQCBzdGF0
aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
QXR0clNldHRlckNhbGxiYWNrKAogICAgIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlcihuYW1lLCB2YWx1
ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNl
KHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkg
PyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUp
KSA6IDA7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJy
ZW50KCk7CisgICAgaWYgKCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBTY3Jp
cHRTdGF0ZSYgc3RhdGUgPSAqY3VycmVudFN0YXRlOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaW1w
LT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKCZz
dGF0ZSwgc2NyaXB0Q29udGV4dCwgV1RGOjpnZXRQdHIodikpOworICAgIGlmIChzdGF0ZS5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgaW5mby5H
ZXRJc29sYXRlKCkpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4
SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtOTc3LDYgKzE4MjAsMjggQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmEKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6Ondp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRy
R2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU2Ny
aXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAgaWYg
KCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworICAgIFNjcmlw
dFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBSZWZQ
dHI8VGVzdE9iaj4gdiA9IGltcC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlcygmc3RhdGUsIHNjcmlwdENvbnRleHQsIGVjKTsKKyAgICBpZiAo
VU5MSUtFTFkoZWMpKQorICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdl
dElzb2xhdGUoKSk7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAg
IHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZCh2LnJlbGVhc2UoKSwgaW5mbywgaW1wKTsKK30K
Kworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJGb3JNYWluV29y
bGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwpAQCAtOTk3LDYgKzE4NjIsMjYgQEAgc3RhdGljIHZvaWQgd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0
ZXJDYWwKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8p
OwogfQogCitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2
YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8g
VjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkg
OiAwOworICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVu
dCgpOworICAgIGlmICghY3VycmVudFN0YXRlKQorICAgICAgICByZXR1cm47CisgICAgU2NyaXB0
U3RhdGUmIHN0YXRlID0gKmN1cnJlbnRTdGF0ZTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGltcC0+
c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
cygmc3RhdGUsIHNjcmlwdENvbnRleHQsIFdURjo6Z2V0UHRyKHYpKTsKKyAgICBpZiAoc3RhdGUu
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCksIGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5m
byk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBA
IC0xMDEzLDYgKzE4OTgsMjIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0EKICAgICByZXR1cm4g
VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBT
Y3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKKyAgICBp
ZiAoIWN1cnJlbnRTdGF0ZSkKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgU2Ny
aXB0U3RhdGUmIHN0YXRlID0gKmN1cnJlbnRTdGF0ZTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIHJl
dHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXAtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCZzdGF0ZSwgc2NyaXB0Q29udGV4dCks
IGluZm8sIGltcCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyR2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFs
Ojp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lk
IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmli
dXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEwMzMsNiAr
MTkzNCwyNiBAQCBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJTZXR0ZQogICAgIFRlc3RPYmpWOEludGVybmFs
Ojp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YnV0ZUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCB3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0
dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAg
VGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0
ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBTY3JpcHRTdGF0
ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKKyAgICBpZiAoIWN1cnJl
bnRTdGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIFNjcmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJy
ZW50U3RhdGU7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdl
dFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpbXAtPnNldFdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCZzdGF0ZSwgc2NyaXB0
Q29udGV4dCwgV1RGOjpnZXRQdHIodikpOworICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkp
OworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOElu
dGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQor
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxs
U3RhY2tBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMDQ0LDYgKzE5NjUsMTcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0
cmlidXRlQXR0ckdldHRlckMKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3Jp
cHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwog
fQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRBcmd1bWVudHNBbmRD
YWxsU3RhY2tBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHRv
VjhGYXN0Rm9yTWFpbldvcmxkKGltcC0+d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0
dHJpYnV0ZSgpLCBpbmZvLCBpbXApOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2Ny
aXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZChu
YW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxT
dGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBA
IC0xMDU3LDYgKzE5ODksMTkgQEAgc3RhdGljIHZvaWQgd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENh
bGxTdGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWwKICAgICBUZXN0T2Jq
VjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJT
ZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0QXJn
dW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJ
bnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xh
dGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KHZhbHVlKSkgOiAwOworICAgIGltcC0+c2V0V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFj
a0F0dHJpYnV0ZShXVEY6OmdldFB0cih2KSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9p
ZCB3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0
dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGVuZm9yY2VkUmFuZ2VMb25nQXR0ckF0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAg
LTEwNjgsNiArMjAxMywxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuZm9yY2Vk
UmFuZ2VMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8dgogICAgIHJldHVybiBU
ZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZUxvbmdBdHRyQXR0ckdldHRlcihuYW1lLCBp
bmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmZvcmNlZFJhbmdlTG9u
Z0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAt
PmVuZm9yY2VkUmFuZ2VMb25nQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5mb3JjZWRSYW5nZUxvbmdBdHRyQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5m
b3JjZWRSYW5nZUxvbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30K
Kwogc3RhdGljIHZvaWQgZW5mb3JjZWRSYW5nZUxvbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEwODEsNiArMjAzNywxOSBAQCBzdGF0aWMgdm9pZCBl
bmZvcmNlZFJhbmdlTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nQXR0ckF0
dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBlbmZvcmNlZFJh
bmdlTG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfV0lUSF9UWVBFQ0hFQ0tfVk9JRChpbnQsIHYsIHRvSW50
MzIodmFsdWUsIEVuZm9yY2VSYW5nZSwgb2spLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgaW1w
LT5zZXRFbmZvcmNlZFJhbmdlTG9uZ0F0dHIodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMg
dm9pZCBlbmZvcmNlZFJhbmdlTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpl
bmZvcmNlZFJhbmdlTG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBp
bmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmZvcmNlZFJhbmdlVW5z
aWduZWRMb25nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEwOTIsNiArMjA2MSwxNyBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdBdHRyQXR0ckdl
dHRlckNhbGxiYWNrKHY4OgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRS
YW5nZVVuc2lnbmVkTG9uZ0F0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdBdHRyQXR0ckdl
dHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OFVuc2lnbmVkSW50ZWdlcihpbXAtPmVu
Zm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKwor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0
ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdBdHRyQXR0ckdldHRlckZvck1haW5X
b3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgZW5mb3JjZWRSYW5nZVVuc2lnbmVk
TG9uZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTEw
NSw2ICsyMDg1LDE5IEBAIHN0YXRpYyB2b2lkIGVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdBdHRy
QXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nCiAgICAgVGVzdE9ialY4SW50
ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1
ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIGVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdBdHRy
QXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAg
ICBWOFRSWUNBVENIX1dJVEhfVFlQRUNIRUNLX1ZPSUQodW5zaWduZWQsIHYsIHRvVUludDMyKHZh
bHVlLCBFbmZvcmNlUmFuZ2UsIG9rKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIGltcC0+c2V0
RW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0F0dHIodik7CisgICAgcmV0dXJuOworfQorCitzdGF0
aWMgdm9pZCBlbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4
SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdBdHRyQXR0clNldHRlckZvck1haW5X
b3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gZW5mb3JjZWRSYW5nZUxvbmdMb25nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTExMTYsNiArMjEw
OSwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuZm9yY2VkUmFuZ2VMb25nTG9u
Z0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvYwogICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6ZW5mb3JjZWRSYW5nZUxvbmdMb25nQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9
CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5mb3JjZWRSYW5nZUxvbmdMb25nQXR0
ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KHN0
YXRpY19jYXN0PGRvdWJsZT4oaW1wLT5lbmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRyKCkpKTsKK30K
Kworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRy
QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJ
bnRlcm5hbDo6ZW5mb3JjZWRSYW5nZUxvbmdMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQo
bmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGVuZm9yY2VkUmFuZ2VMb25nTG9uZ0F0dHJB
dHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTEyOSw2ICsyMTMz
LDE5IEBAIHN0YXRpYyB2b2lkIGVuZm9yY2VkUmFuZ2VMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OmVu
Zm9yY2VkUmFuZ2VMb25nTG9uZ0F0dHJBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0K
IAorc3RhdGljIHZvaWQgZW5mb3JjZWRSYW5nZUxvbmdMb25nQXR0ckF0dHJTZXR0ZXJGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgVjhUUllDQVRDSF9XSVRI
X1RZUEVDSEVDS19WT0lEKGxvbmcgbG9uZywgdiwgdG9JbnQ2NCh2YWx1ZSwgRW5mb3JjZVJhbmdl
LCBvayksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICBpbXAtPnNldEVuZm9yY2VkUmFuZ2VMb25n
TG9uZ0F0dHIodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBlbmZvcmNlZFJhbmdl
TG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZUxv
bmdMb25nQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQor
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdM
b25nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTExNDAsNiArMjE1NywxNyBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0
ZXJDYWxsYmFjawogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZVVu
c2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBlbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nTG9uZ0F0dHJBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5ldyhzdGF0aWNf
Y2FzdDxkb3VibGU+KGltcC0+ZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0xvbmdBdHRyKCkpKTsK
K30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmZvcmNlZFJhbmdlVW5zaWduZWRM
b25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJu
IFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nTG9uZ0F0dHJBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBlbmZvcmNl
ZFJhbmdlVW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwpAQCAtMTE1Myw2ICsyMTgxLDE5IEBAIHN0YXRpYyB2b2lkIGVuZm9yY2VkUmFu
Z2VVbnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0
CiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdMb25nQXR0
ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBlbmZvcmNl
ZFJhbmdlVW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfV0lUSF9UWVBFQ0hFQ0tfVk9J
RCh1bnNpZ25lZCBsb25nIGxvbmcsIHYsIHRvVUludDY0KHZhbHVlLCBFbmZvcmNlUmFuZ2UsIG9r
KSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIGltcC0+c2V0RW5mb3JjZWRSYW5nZVVuc2lnbmVk
TG9uZ0xvbmdBdHRyKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgZW5mb3JjZWRS
YW5nZVVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5m
b3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1l
LCB2YWx1ZSwgaW5mbyk7Cit9CisKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIAogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRpb25hbEF0dHIxQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAgLTExNzQs
NiArMjIxNSwyNSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbmRpdGlvbmFsQXR0
cjFBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdAogCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjEpCiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxBdHRyMUF0
dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+Y29uZGl0
aW9uYWxBdHRyMSgpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
Q29uZGl0aW9uMSkKKworI2lmIEVOQUJMRShDb25kaXRpb24xKQorCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNvbmRpdGlvbmFsQXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIxQXR0
ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShD
b25kaXRpb24xKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpCisKIHN0YXRpYyB2b2lkIGNvbmRp
dGlvbmFsQXR0cjFBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAt
MTE5Myw2ICsyMjUzLDI3IEBAIHN0YXRpYyB2b2lkIGNvbmRpdGlvbmFsQXR0cjFBdHRyU2V0dGVy
Q2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMCiAKICNlbmRpZiAvLyBF
TkFCTEUoQ29uZGl0aW9uMSkKIAorI2lmIEVOQUJMRShDb25kaXRpb24xKQorCitzdGF0aWMgdm9p
ZCBjb25kaXRpb25hbEF0dHIxQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOworICAgIGltcC0+c2V0
Q29uZGl0aW9uYWxBdHRyMSh2KTsKKyAgICByZXR1cm47Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
Q29uZGl0aW9uMSkKKworI2lmIEVOQUJMRShDb25kaXRpb24xKQorCitzdGF0aWMgdm9pZCBjb25k
aXRpb25hbEF0dHIxQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRy
MUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKENvbmRpdGlvbjEpCisKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxF
KENvbmRpdGlvbjIpCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxB
dHRyMkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCkBAIC0xMjE0LDYgKzIyOTUsMjUgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjb25kaXRpb25hbEF0dHIyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2
ODo6U3QKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKIAor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRpb25hbEF0dHIyQXR0ckdldHRlckZv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5jb25kaXRpb25hbEF0dHIy
KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24x
KSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFC
TEUoQ29uZGl0aW9uMikKKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRpb25h
bEF0dHIyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0
T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFt
ZSwgaW5mbyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENv
bmRpdGlvbjIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIp
CisKIHN0YXRpYyB2b2lkIGNvbmRpdGlvbmFsQXR0cjJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwpAQCAtMTIzMyw2ICsyMzMzLDI3IEBAIHN0YXRpYyB2b2lkIGNvbmRp
dGlvbmFsQXR0cjJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMCiAKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlv
bjIpCiAKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCisKK3N0
YXRpYyB2b2lkIGNvbmRpdGlvbmFsQXR0cjJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAg
aW1wLT5zZXRDb25kaXRpb25hbEF0dHIyKHYpOworICAgIHJldHVybjsKK30KKworI2VuZGlmIC8v
IEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKKworI2lmIEVOQUJMRShD
b25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKKworc3RhdGljIHZvaWQgY29uZGl0aW9u
YWxBdHRyMkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVO
QUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKKwogI2lmIEVOQUJMRShDb25k
aXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBjb25kaXRpb25hbEF0dHIzQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAgLTEyNTQsNiArMjM3NSwyNSBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbmRpdGlvbmFsQXR0cjNBdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OjpTdAogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJM
RShDb25kaXRpb24yKQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbmRpdGlvbmFs
QXR0cjNBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAt
PmNvbmRpdGlvbmFsQXR0cjMoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCisjZW5kaWYgLy8g
RU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorCisjaWYgRU5BQkxFKENv
bmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGNvbmRpdGlvbmFsQXR0cjNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIzQXR0ckdldHRl
ckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRp
b24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMikKKwogc3RhdGljIHZvaWQgY29uZGl0aW9uYWxBdHRyM0F0dHJTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMjczLDYgKzI0MTMsMjcgQEAg
c3RhdGljIHZvaWQgY29uZGl0aW9uYWxBdHRyM0F0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkwKIAogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMikKIAorI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMikKKworc3RhdGljIHZvaWQgY29uZGl0aW9uYWxBdHRyM0F0dHJTZXR0ZXJGb3JN
YWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0lu
dDMyKHZhbHVlKTsKKyAgICBpbXAtPnNldENvbmRpdGlvbmFsQXR0cjModik7CisgICAgcmV0dXJu
OworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24y
KQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorCitzdGF0
aWMgdm9pZCBjb25kaXRpb25hbEF0dHIzQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6Y29u
ZGl0aW9uYWxBdHRyM0F0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQor
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZEF0dHJpYnV0ZTFBdHRyR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CkBAIC0xMjg0LDYgKzI0NDUsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBj
YWNoZWRBdHRyaWJ1dGUxQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKICAgICBy
ZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTFBdHRyR2V0dGVyKG5hbWUs
IGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZEF0dHJpYnV0
ZTFBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIGltcC0+Y2FjaGVkQXR0cmli
dXRlMSgpLnY4VmFsdWUoKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNo
ZWRBdHRyaWJ1dGUxQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVy
biBUZXN0T2JqVjhJbnRlcm5hbDo6Y2FjaGVkQXR0cmlidXRlMUF0dHJHZXR0ZXJGb3JNYWluV29y
bGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FjaGVk
QXR0cmlidXRlMkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEyOTUsNiArMjQ2NywxNyBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6
OkxvY2FsPHY4OjpTdAogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6Y2FjaGVkQXR0cmli
dXRlMkF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY2FjaGVkQXR0cmlidXRlMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1
cm4gaW1wLT5jYWNoZWRBdHRyaWJ1dGUyKCkudjhWYWx1ZSgpOworfQorCitzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpjYWNoZWRBdHRyaWJ1dGUy
QXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBhbnlBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMzA2LDYgKzI0ODks
MTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhbnlBdHRyaWJ1dGVBdHRyR2V0dGVy
Q2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmcKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJu
YWw6OmFueUF0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gYW55QXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIHJldHVybiBpbXAtPmFueUF0dHJpYnV0ZSgpLnY4VmFsdWUoKTsKK30KKworc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBhbnlBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjphbnlBdHRyaWJ1dGVBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBhbnlBdHRy
aWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTMxOSw2
ICsyNTEzLDE5IEBAIHN0YXRpYyB2b2lkIGFueUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjayh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsCiAgICAgVGVzdE9ialY4SW50ZXJu
YWw6OmFueUF0dHJpYnV0ZUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0
aWMgdm9pZCBhbnlBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOworICAgIFNjcmlwdFZhbHVlIHYgPSBTY3JpcHRWYWx1ZSh2YWx1ZSk7
CisgICAgaW1wLT5zZXRBbnlBdHRyaWJ1dGUoV1RGOjpnZXRQdHIodikpOworICAgIHJldHVybjsK
K30KKworc3RhdGljIHZvaWQgYW55QXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5h
bDo6YW55QXR0cmlidXRlQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7
Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZEF0UnVudGltZUF0dHIx
QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwpAQCAtMTMzMCw2ICsyNTM3LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2Nh
bDx2CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFB
dHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1
cm4gdjhJbnRlZ2VyKGltcC0+ZW5hYmxlZEF0UnVudGltZUF0dHIxKCksIGluZm8uR2V0SXNvbGF0
ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkQXRSdW50aW1l
QXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RP
YmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyR2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBlbmFibGVkQXRSdW50aW1lQXR0cjFBdHRy
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTM0Myw2ICsyNTYxLDE5
IEBAIHN0YXRpYyB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXJDYWxsYmFjayh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxl
ZEF0UnVudGltZUF0dHIxQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRp
YyB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAg
ICBpbXAtPnNldEVuYWJsZWRBdFJ1bnRpbWVBdHRyMSh2KTsKKyAgICByZXR1cm47Cit9CisKK3N0
YXRpYyB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJu
YWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFs
dWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1
bnRpbWVBdHRyMkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEzNTQsNiArMjU4NSwxNyBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0ZXJDYWxsYmFj
ayh2ODo6TG9jYWw8dgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVu
dGltZUF0dHIyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBlbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CisgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPmVuYWJsZWRBdFJ1bnRpbWVBdHRyMigpLCBpbmZv
LkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxl
ZEF0UnVudGltZUF0dHIyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJl
dHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0ckdldHRlckZv
ck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGlt
ZUF0dHIyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEzNjcs
NiArMjYwOSwxOSBAQCBzdGF0aWMgdm9pZCBlbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyU2V0dGVy
Q2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAgICAgVGVzdE9ialY4SW50ZXJu
YWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwog
fQogCitzdGF0aWMgdm9pZCBlbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyU2V0dGVyRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2ID0gdG9JbnQzMih2
YWx1ZSk7CisgICAgaW1wLT5zZXRFbmFibGVkQXRSdW50aW1lQXR0cjIodik7CisgICAgcmV0dXJu
OworfQorCitzdGF0aWMgdm9pZCBlbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RP
YmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyU2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBl
bmFibGVkUGVyQ29udGV4dEF0dHIxQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTM3OCw2ICsyNjMzLDE3IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJH
ZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpl
bmFibGVkUGVyQ29udGV4dEF0dHIxQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0ckdldHRlckZv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5lbmFibGVkUGVyQ29udGV4
dEF0dHIxKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBlbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRB
dHRyMUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lk
IGVuYWJsZWRQZXJDb250ZXh0QXR0cjFBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOwpAQCAtMTM5MSw2ICsyNjU3LDE5IEBAIHN0YXRpYyB2b2lkIGVuYWJsZWRQZXJDb250
ZXh0QXR0cjFBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAg
ICAgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjFBdHRyU2V0dGVyKG5h
bWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgZW5hYmxlZFBlckNvbnRleHRBdHRy
MUF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNldEVuYWJsZWRQZXJDb250ZXh0
QXR0cjEodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBlbmFibGVkUGVyQ29udGV4
dEF0dHIxQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRy
MUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRQZXJDb250ZXh0QXR0cjJBdHRyR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CkBAIC0xNDAyLDYgKzI2ODEsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFi
bGVkUGVyQ29udGV4dEF0dHIyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDwKICAgICByZXR1
cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjJBdHRyR2V0dGVyKG5h
bWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRQZXJD
b250ZXh0QXR0cjJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdl
cihpbXAtPmVuYWJsZWRQZXJDb250ZXh0QXR0cjIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQor
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRQZXJDb250ZXh0QXR0cjJBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVy
bmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBp
bmZvKTsKK30KKwogc3RhdGljIHZvaWQgZW5hYmxlZFBlckNvbnRleHRBdHRyMkF0dHJTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNDEyLDcgKzI3MDIsMjAgQEAgc3Rh
dGljIHZvaWQgZW5hYmxlZFBlckNvbnRleHRBdHRyMkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2MKIAogc3RhdGljIHZvaWQgZW5hYmxlZFBlckNvbnRleHRBdHRy
MkF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAg
VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjJBdHRyU2V0dGVyKG5hbWUs
IHZhbHVlLCBpbmZvKTsKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRB
dHRyMkF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOworfQorCitzdGF0aWMgdm9pZCBlbmFi
bGVkUGVyQ29udGV4dEF0dHIyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOworICAgIGltcC0+c2V0
RW5hYmxlZFBlckNvbnRleHRBdHRyMih2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lk
IGVuYWJsZWRQZXJDb250ZXh0QXR0cjJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjplbmFi
bGVkUGVyQ29udGV4dEF0dHIyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5m
byk7CiB9CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZmxvYXRBcnJheUF0dHJHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCkBAIC0xNDI2LDYgKzI3MjksMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBm
bG9hdEFycmF5QXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIHJl
dHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZmxvYXRBcnJheUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7
CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZmxvYXRBcnJheUF0dHJHZXR0ZXJG
b3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhBcnJheShpbXAtPmZsb2F0QXJyYXkoKSwgaW5m
by5HZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGZsb2F0
QXJyYXlBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RP
YmpWOEludGVybmFsOjpmbG9hdEFycmF5QXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZv
KTsKK30KKwogc3RhdGljIHZvaWQgZmxvYXRBcnJheUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CkBAIC0xNDM5LDYgKzI3NTMsMTkgQEAgc3RhdGljIHZvaWQgZmxvYXRB
cnJheUF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHYKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6ZmxvYXRBcnJheUF0dHJTZXR0ZXIobmFtZSwg
dmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBmbG9hdEFycmF5QXR0clNldHRlckZvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBWZWN0b3I8ZmxvYXQ+
IHYgPSB0b05hdGl2ZUFycmF5PGZsb2F0Pih2YWx1ZSk7CisgICAgaW1wLT5zZXRGbG9hdEFycmF5
KHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgZmxvYXRBcnJheUF0dHJTZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
VGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUs
IHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkb3VibGVB
cnJheUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE0NTAsNiArMjc3NywxNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGRvdWJsZUFycmF5QXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZG91YmxlQXJyYXlBdHRyR2V0
dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRvdWJs
ZUFycmF5QXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OEFycmF5KGltcC0+
ZG91YmxlQXJyYXkoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGRvdWJsZUFycmF5QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZG91YmxlQXJyYXlBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBkb3VibGVBcnJheUF0dHJT
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNDYzLDYgKzI4MDEsMTkg
QEAgc3RhdGljIHZvaWQgZG91YmxlQXJyYXlBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDwKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6ZG91Ymxl
QXJyYXlBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgZG91
YmxlQXJyYXlBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIFZlY3Rvcjxkb3VibGU+IHYgPSB0b05hdGl2ZUFycmF5PGRvdWJsZT4odmFsdWUp
OworICAgIGltcC0+c2V0RG91YmxlQXJyYXkodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMg
dm9pZCBkb3VibGVBcnJheUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OmRvdWJsZUFycmF5
QXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udGVudERvY3VtZW50QXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTQ3
Nyw2ICsyODI4LDIwIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udGVudERvY3Vt
ZW50QXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyCiAgICAgcmV0dXJuIFRlc3RP
YmpWOEludGVybmFsOjpjb250ZW50RG9jdW1lbnRBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQog
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnRlbnREb2N1bWVudEF0dHJHZXR0ZXJG
b3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb05vZGUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBpbXAtPmNvbnRlbnREb2N1bWVudCgp
KSkKKyAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OE51bGwoaW5mby5HZXRJ
c29sYXRlKCkpKTsKKworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXAtPmNvbnRl
bnREb2N1bWVudCgpLCBpbmZvLCBpbXApOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNvbnRlbnREb2N1bWVudEF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmNvbnRlbnREb2N1bWVudEF0dHJHZXR0ZXJGb3JN
YWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
bXV0YWJsZVBvaW50QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTQ4OCw2ICsyODUzLDE3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbXV0YWJsZVBvaW50QXR0ckdldHRlckNhbGxiYWNrKHY4OjpM
b2NhbDx2ODo6U3RyaW5nCiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9p
bnRBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG11dGFibGVQb2ludEF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdG9W
OEZhc3RGb3JNYWluV29ybGQoV1RGOjpnZXRQdHIoU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmPFRl
c3RPYmosIEZsb2F0UG9pbnQ+OjpjcmVhdGUoaW1wLCBpbXAtPm11dGFibGVQb2ludCgpLCAmVGVz
dE9iajo6dXBkYXRlTXV0YWJsZVBvaW50KSksIGluZm8sIGltcCk7Cit9CisKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gbXV0YWJsZVBvaW50QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50QXR0ckdl
dHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgbXV0YWJsZVBv
aW50QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE1MDEsNiAr
Mjg3NywxOSBAQCBzdGF0aWMgdm9pZCBtdXRhYmxlUG9pbnRBdHRyU2V0dGVyQ2FsbGJhY2sodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbAogICAgIFRlc3RPYmpWOEludGVybmFs
OjptdXRhYmxlUG9pbnRBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGlj
IHZvaWQgbXV0YWJsZVBvaW50QXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICBSZWZQdHI8U1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UG9pbnQ+
ID4gdiA9IFY4U1ZHUG9pbnQ6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwg
d29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOFNWR1BvaW50Ojp0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIGltcC0+c2V0TXV0YWJs
ZVBvaW50KFdURjo6Z2V0UHRyKHYpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIG11
dGFibGVQb2ludEF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGltbXV0YWJsZVBvaW50QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTUxMiw2ICsy
OTAxLDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW1tdXRhYmxlUG9pbnRBdHRy
R2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpCiAgICAgcmV0dXJuIFRlc3RPYmpWOElu
dGVybmFsOjppbW11dGFibGVQb2ludEF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW1tdXRhYmxlUG9pbnRBdHRyR2V0dGVyRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKFdURjo6Z2V0UHRyKFNWR1By
b3BlcnR5VGVhck9mZjxGbG9hdFBvaW50Pjo6Y3JlYXRlKGltcC0+aW1tdXRhYmxlUG9pbnQoKSkp
LCBpbmZvLCBpbXApOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGltbXV0YWJs
ZVBvaW50QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0
T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUs
IGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBpbW11dGFibGVQb2ludEF0dHJTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNTI1LDYgKzI5MjUsMTkgQEAgc3RhdGljIHZv
aWQgaW1tdXRhYmxlUG9pbnRBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2MKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRy
U2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgaW1tdXRhYmxlUG9p
bnRBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIFJlZlB0cjxTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD4gPiB2ID0gVjhTVkdQb2lu
dDo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5H
ZXRJc29sYXRlKCkpKSA/IFY4U1ZHUG9pbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgaW1wLT5zZXRJbW11dGFibGVQb2ludChXVEY6Omdl
dFB0cih2KSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBpbW11dGFibGVQb2ludEF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50QXR0clNldHRlckZvck1h
aW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gc3RyYXdiZXJyeUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE1MzYsNiArMjk0OSwxNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmF3YmVycnlBdHRyR2V0dGVyQ2FsbGJhY2sodjg6
OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpzdHJhd2Jl
cnJ5QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBzdHJhd2JlcnJ5QXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OElu
dGVnZXIoaW1wLT5ibHVlYmVycnkoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmF3YmVycnlBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpzdHJhd2JlcnJ5QXR0ckdl
dHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgc3RyYXdiZXJy
eUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNTQ5LDYgKzI5
NzMsMTkgQEAgc3RhdGljIHZvaWQgc3RyYXdiZXJyeUF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHYKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6
c3RyYXdiZXJyeUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9p
ZCBzdHJhd2JlcnJ5QXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKKyAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOworICAgIGltcC0+c2V0Qmx1ZWJl
cnJ5KHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgc3RyYXdiZXJyeUF0dHJTZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmF3YmVycnlBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5h
bWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJp
Y3RGbG9hdEF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE1NjAsNiArMjk5NywxNyBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHN0cmljdEZsb2F0QXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRy
R2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0
cmljdEZsb2F0QXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2ODo6TnVtYmVy
OjpOZXcoaW1wLT5zdHJpY3RGbG9hdCgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBzdHJpY3RGbG9hdEF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBy
ZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZsb2F0QXR0ckdldHRlckZvck1haW5Xb3Js
ZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgc3RyaWN0RmxvYXRBdHRyU2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTU3Myw2ICszMDIxLDE5IEBAIHN0YXRp
YyB2b2lkIHN0cmljdEZsb2F0QXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8CiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZsb2F0QXR0
clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHN0cmljdEZsb2F0
QXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAg
ICBmbG9hdCB2ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlLT5OdW1iZXJWYWx1ZSgpKTsKKyAg
ICBpbXAtPnNldFN0cmljdEZsb2F0KHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQg
c3RyaWN0RmxvYXRBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGbG9hdEF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGRlc2NyaXB0aW9uQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTU4NCw2ICszMDQ1
LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzY3JpcHRpb25BdHRyR2V0dGVy
Q2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVy
bmFsOjpkZXNjcmlwdGlvbkF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gZGVzY3JpcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPmRlc2NyaXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgp
KTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkZXNjcmlwdGlvbkF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6
OmRlc2NyaXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpZEF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE1OTUsNiArMzA2
NywxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGlkQXR0ckdldHRlckNhbGxiYWNr
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjbwogICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6aWRBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGlkQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OEludGVn
ZXIoaW1wLT5pZCgpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gaWRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0
dXJuIFRlc3RPYmpWOEludGVybmFsOjppZEF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5m
byk7Cit9CisKIHN0YXRpYyB2b2lkIGlkQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKQEAgLTE2MDgsNiArMzA5MSwxOSBAQCBzdGF0aWMgdm9pZCBpZEF0dHJTZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZQog
ICAgIFRlc3RPYmpWOEludGVybmFsOjppZEF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwog
fQogCitzdGF0aWMgdm9pZCBpZEF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNl
dElkKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgaWRBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RP
YmpWOEludGVybmFsOjppZEF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8p
OworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhc2hBdHRyR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBA
IC0xNjE5LDYgKzMxMTUsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBoYXNoQXR0
ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogICAgIHJldHVybiBU
ZXN0T2JqVjhJbnRlcm5hbDo6aGFzaEF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaGFzaEF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAg
ICByZXR1cm4gdjhTdHJpbmcoaW1wLT5oYXNoKCksIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5V
bnNhZmVIYW5kbGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhc2hBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVy
bmFsOjpoYXNoQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
QEAgLTE2MzAsNiArMzEzNywxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlcGxh
Y2VhYmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2OAogICAgIHJldHVy
biBUZXN0T2JqVjhJbnRlcm5hbDo6cmVwbGFjZWFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUs
IGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlcGxhY2VhYmxlQXR0
cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OEludGVnZXIoaW1w
LT5yZXBsYWNlYWJsZUF0dHJpYnV0ZSgpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVwbGFjZWFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZXBs
YWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisK
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRy
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CkBAIC0xNjQ1LDYgKzMxNjMsMjEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBudWxsYWJsZURvdWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWwK
ICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlRG91YmxlQXR0cmlidXRlQXR0
ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBu
dWxsYWJsZURvdWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBib29s
IGlzTnVsbCA9IGZhbHNlOworICAgIGRvdWJsZSB2ID0gaW1wLT5udWxsYWJsZURvdWJsZUF0dHJp
YnV0ZShpc051bGwpOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybiB2OE51bGwoaW5m
by5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXcodik7Cit9CisKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFs
OjpudWxsYWJsZURvdWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5m
byk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVMb25nQXR0cmli
dXRlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwpAQCAtMTY2MCw2ICszMTkzLDIxIEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gbnVsbGFibGVMb25nQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpM
b2NhbDx2CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdBdHRyaWJ1
dGVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG51bGxhYmxlTG9uZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBi
b29sIGlzTnVsbCA9IGZhbHNlOworICAgIGludCB2ID0gaW1wLT5udWxsYWJsZUxvbmdBdHRyaWJ1
dGUoaXNOdWxsKTsKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1cm4gdjhOdWxsKGluZm8u
R2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKHYsIGluZm8uR2V0SXNvbGF0ZSgp
KTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZUxvbmdBdHRyaWJ1
dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpW
OEludGVybmFsOjpudWxsYWJsZUxvbmdBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5h
bWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlQm9v
bGVhbkF0dHJpYnV0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE2NzUsNiArMzIyMywyMSBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZUF0dHJHZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYQogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVC
b29sZWFuQXR0cmlidXRlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CisgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICBib29sIHYgPSBpbXAtPm51
bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShpc051bGwpOworICAgIGlmIChpc051bGwpCisgICAgICAg
IHJldHVybiB2OE51bGwoaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB2OEJvb2xlYW4o
diwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IG51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlQm9vbGVhbkF0dHJpYnV0
ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVTdHJpbmdBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0x
NjkwLDYgKzMyNTMsMjEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZVN0
cmluZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWwKICAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRlcihuYW1lLCBp
bmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZVN0cmluZ0F0
dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBib29sIGlzTnVsbCA9IGZhbHNl
OworICAgIFN0cmluZyB2ID0gaW1wLT5udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShpc051bGwpOwor
ICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybiB2OE51bGwoaW5mby5HZXRJc29sYXRlKCkp
OworICAgIHJldHVybiB2OFN0cmluZyh2LCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZl
SGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZVN0cmlu
Z0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4g
VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRlckZvck1h
aW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBu
dWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE3MDUsNiArMzI4
MywyMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlTG9uZ1NldHRhYmxl
QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKHY4OgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGluZm8p
OwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlTG9uZ1NldHRhYmxl
QXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGJvb2wgaXNOdWxsID0gZmFs
c2U7CisgICAgaW50IHYgPSBpbXAtPm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKGlzTnVs
bCk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChpbmZvLkdldElzb2xh
dGUoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcih2LCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1
dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpW
OEludGVybmFsOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIG51bGxhYmxlTG9uZ1NldHRhYmxl
QXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE3
MTgsNiArMzMxMSwxOSBAQCBzdGF0aWMgdm9pZCBudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0
ZUF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZwogICAgIFRlc3RPYmpWOElu
dGVybmFsOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJTZXR0ZXIobmFtZSwgdmFs
dWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0
ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNldE51bGxhYmxlTG9uZ1NldHRh
YmxlQXR0cmlidXRlKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgbnVsbGFibGVM
b25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJs
ZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUs
IGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlU3RyaW5n
VmFsdWVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNzM2LDYgKzMzNDIsMjQgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBudWxsYWJsZVN0cmluZ1ZhbHVlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpM
b2NhbDx2ODoKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFs
dWVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG51bGxhYmxlU3RyaW5nVmFsdWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKKyAgICBpbnQgdiA9
IGltcC0+bnVsbGFibGVTdHJpbmdWYWx1ZShpc051bGwsIGVjKTsKKyAgICBpZiAoaXNOdWxsKQor
ICAgICAgICByZXR1cm4gdjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICBpZiAoVU5MSUtF
TFkoZWMpKQorICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xh
dGUoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcih2LCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6
Om51bGxhYmxlU3RyaW5nVmFsdWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOwor
fQorCiBzdGF0aWMgdm9pZCBudWxsYWJsZVN0cmluZ1ZhbHVlQXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE3NDksNiArMzM3MywxOSBAQCBzdGF0aWMgdm9pZCBu
dWxsYWJsZVN0cmluZ1ZhbHVlQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2OAogICAgIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0
clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIG51bGxhYmxlU3Ry
aW5nVmFsdWVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXROdWxsYWJsZVN0
cmluZ1ZhbHVlKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgbnVsbGFibGVTdHJp
bmdWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEgPSBpbmZvLkRhdGEoKTsKQEAgLTMwODAsMTU1ICs0NzE3
LDE1NSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJh
dGNoZWRBdHRyaWJ1dGUgVjhUZXN0T2JqQXR0cnNbXSA9IHsKICAgICAvLyBBdHRyaWJ1dGUgJ3Jl
YWRPbmx5TG9uZ0F0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykK
LSAgICB7InJlYWRPbmx5TG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlMb25n
QXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZWFkT25s
eUxvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVy
Q2FsbGJhY2ssIDAsIFRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seUxvbmdBdHRyQXR0ckdldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1
dGUgJ3JlYWRPbmx5U3RyaW5nQXR0cicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0
dHI6ICcnKQotICAgIHsicmVhZE9ubHlTdHJpbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJl
YWRPbmx5U3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisg
ICAgeyJyZWFkT25seVN0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlTdHJp
bmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCAwLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlT
dHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlYWRPbmx5VGVzdE9iakF0dHInIChUeXBlOiAncmVhZG9u
bHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InJlYWRPbmx5VGVzdE9iakF0dHIiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywg
MCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZWFkT25seVRlc3RPYmpBdHRyIiwgVGVzdE9ialY4
SW50ZXJuYWw6OnJlYWRPbmx5VGVzdE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIFRlc3RP
YmpWOEludGVybmFsOjpyZWFkT25seVRlc3RPYmpBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0YXRpY1JlYWRP
bmx5TG9uZ0F0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAg
ICB7InN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljUmVh
ZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAg
eyJzdGF0aWNSZWFkT25seUxvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1JlYWRP
bmx5TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIFRlc3RPYmpWOEludGVybmFsOjpzdGF0
aWNSZWFkT25seUxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0YXRpY1N0cmluZ0F0dHInIChUeXBlOiAn
YXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InN0YXRpY1N0cmluZ0F0dHIiLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6c3RhdGljU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4
SW50ZXJuYWw6OnN0YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAorICAgIHsic3RhdGljU3RyaW5nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNT
dHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljU3Ry
aW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0cmlu
Z0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpz
dGF0aWNTdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ1Rlc3RTdWJPYmonIChUeXBlOiAncmVhZG9ubHkgYXR0
cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7IlRlc3RTdWJPYmoiLCBUZXN0T2JqVjhJbnRlcm5h
bDo6VGVzdE9iakNvbnN0cnVjdG9yR2V0dGVyLCAwLCAmVjhUZXN0U3ViT2JqOjppbmZvLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAg
eyJUZXN0U3ViT2JqIiwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpDb25zdHJ1Y3RvckdldHRl
ciwgMCwgMCwgMCwgJlY4VGVzdFN1Yk9iajo6aW5mbywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnZW51bUF0
dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7ImVudW1BdHRyIiwgVGVz
dE9ialY4SW50ZXJuYWw6OmVudW1BdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRl
cm5hbDo6ZW51bUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsi
ZW51bUF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW51bUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RPYmpWOEludGVybmFsOjplbnVtQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4
SW50ZXJuYWw6OmVudW1BdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6ZW51bUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnc2hvcnRBdHRyJyAoVHlwZTogJ2F0dHJpYnV0
ZScgRXh0QXR0cjogJycpCi0gICAgeyJzaG9ydEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c2hv
cnRBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c2hvcnRBdHRyQXR0
clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InNob3J0QXR0ciIsIFRlc3RP
YmpWOEludGVybmFsOjpzaG9ydEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVy
bmFsOjpzaG9ydEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpzaG9y
dEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpz
aG9ydEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAog
ICAgIC8vIEF0dHJpYnV0ZSAndW5zaWduZWRTaG9ydEF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBF
eHRBdHRyOiAnJykKLSAgICB7InVuc2lnbmVkU2hvcnRBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6
OnVuc2lnbmVkU2hvcnRBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6
dW5zaWduZWRTaG9ydEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAg
IHsidW5zaWduZWRTaG9ydEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRTaG9ydEF0
dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZFNob3J0QXR0
ckF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkU2hvcnRBdHRy
QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWdu
ZWRTaG9ydEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAogICAgIC8vIEF0dHJpYnV0ZSAnbG9uZ0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRy
OiAnJykKLSAgICB7ImxvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdBdHRyQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAorICAgIHsibG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
bG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0
dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdBdHRyQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0dHJBdHRyU2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAn
bG9uZ0xvbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJsb25n
TG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxi
YWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyAgICB7ImxvbmdMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjps
b25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpsb25nTG9u
Z0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpsb25nTG9u
Z0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAg
IC8vIEF0dHJpYnV0ZSAndW5zaWduZWRMb25nTG9uZ0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBF
eHRBdHRyOiAnJykKLSAgICB7InVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJu
YWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRl
cm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAorICAgIHsidW5zaWduZWRMb25nTG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dW5z
aWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp1
bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6
OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0
T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnc3RyaW5nQXR0cicg
KFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsic3RyaW5nQXR0ciIsIFRlc3RP
YmpWOEludGVybmFsOjpzdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRl
cm5hbDo6c3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAg
eyJzdHJpbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAndGVzdE9iakF0dHInIChU
eXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnVjhNZWFzdXJlQXMnKQotICAgIHsidGVzdE9iakF0
dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRl
c3RPYmpWOEludGVybmFsOjp0ZXN0T2JqQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgeyJ0ZXN0T2JqQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjp0ZXN0T2JqQXR0
ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnRlc3RPYmpBdHRyQXR0clNl
dHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9iakF0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjp0ZXN0T2JqQXR0ckF0dHJTZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRl
ICdYTUxPYmpBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJYTUxP
YmpBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OlhNTE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKKyAgICB7IlhNTE9iakF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6WE1MT2JqQXR0
ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OlhNTE9iakF0dHJBdHRyU2V0
dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJTZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdj
cmVhdGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7ImNyZWF0ZSIsIFRl
c3RPYmpWOEludGVybmFsOjpjcmVhdGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVy
bmFsOjpjcmVhdGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiY3Jl
YXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNyZWF0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OmNyZWF0ZUF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6
OmNyZWF0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6
OmNyZWF0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAg
ICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRTdHJpbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScg
RXh0QXR0cjogJ1JlZmxlY3QnKQotICAgIHsicmVmbGVjdGVkU3RyaW5nQXR0ciIsIFRlc3RPYmpW
OEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCisgICAgeyJyZWZsZWN0ZWRTdHJpbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6
OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFs
OjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVz
dE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkSW50
ZWdyYWxBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1JlZmxlY3QnKQotICAgIHsi
cmVmbGVjdGVkSW50ZWdyYWxBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEludGVn
cmFsQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZElu
dGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZWZs
ZWN0ZWRJbnRlZ3JhbEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkSW50ZWdyYWxB
dHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkSW50ZWdy
YWxBdHRyQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkSW50
ZWdyYWxBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5h
bDo6cmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlZmxlY3RlZFVuc2lnbmVkSW50ZWdy
YWxBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1JlZmxlY3QnKQotICAgIHsicmVm
bGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVk
VW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFs
OjpyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCisgICAgeyJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIsIFRlc3RPYmpW
OEludGVybmFsOjpyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0clNl
dHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3Jh
bEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRCb29sZWFuQXR0
cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykKLSAgICB7InJlZmxlY3Rl
ZEJvb2xlYW5BdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0
ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQm9vbGVhbkF0dHJB
dHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsicmVmbGVjdGVkQm9vbGVh
bkF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRyR2V0dGVy
Q2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJTZXR0
ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQm9v
bGVhbkF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAog
ICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkVVJMQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4
dEF0dHI6ICdVUkwgUmVmbGVjdCcpCi0gICAgeyJyZWZsZWN0ZWRVUkxBdHRyIiwgVGVzdE9ialY4
SW50ZXJuYWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOElu
dGVybmFsOjpyZWZsZWN0ZWRVUkxBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKKyAgICB7InJlZmxlY3RlZFVSTEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVk
VVJMQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVS
TEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRVUkxB
dHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVm
bGVjdGVkVVJMQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiAgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRTdHJpbmdBdHRyJyAoVHlwZTogJ2F0dHJp
YnV0ZScgRXh0QXR0cjogJ1JlZmxlY3QnKQotICAgIHsicmVmbGVjdGVkU3RyaW5nQXR0ciIsIFRl
c3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCisgICAgeyJyZWZsZWN0ZWRTdHJpbmdBdHRyIiwgVGVzdE9ialY4SW50
ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOElu
dGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVj
dGVkQ3VzdG9tSW50ZWdyYWxBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1JlZmxl
Y3QnKQotICAgIHsicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIiwgVGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFj
aywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0
clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tSW50ZWdy
YWxBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6
cmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlZmxlY3RlZEN1c3RvbUJvb2xl
YW5BdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1JlZmxlY3QnKQotICAgIHsicmVm
bGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3Vz
dG9tQm9vbGVhbkF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZs
ZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CisgICAgeyJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlckNhbGxiYWNrLCBUZXN0
T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyR2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21Cb29sZWFu
QXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAg
Ly8gQXR0cmlidXRlICdyZWZsZWN0ZWRDdXN0b21VUkxBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScg
RXh0QXR0cjogJ1VSTCBSZWZsZWN0JykKLSAgICB7InJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyU2V0dGVyQ2Fs
bGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsicmVmbGVjdGVkQ3VzdG9tVVJMQXR0ciIsIFRl
c3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJTZXR0ZXJDYWxs
YmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21V
UkxBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAg
ICAvLyBBdHRyaWJ1dGUgJ3R5cGVkQXJyYXlBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0
cjogJycpCi0gICAgeyJ0eXBlZEFycmF5QXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFy
cmF5QXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJyYXlB
dHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InR5cGVkQXJyYXlB
dHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJyYXlBdHRyQXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6dHlwZWRBcnJheUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIFRl
c3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJyYXlBdHRyQXR0clNldHRlckNhbGxiYWNr
Rm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJh
dHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmF0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7
ImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldp
dGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjph
dHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVz
dE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNr
Rm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJh
dHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmF0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7
ImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldp
dGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjph
dHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVz
dE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNr
Rm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0cmluZ0F0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0g
ICAgeyJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjpz
dHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4
SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNr
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKKyAgICB7InN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwg
VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRl
ckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b25BdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50
ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0cmluZ0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAg
eyJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyAgICB7InN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgVGVz
dE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25B
dHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJu
YWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2N1c3RvbUF0dHInIChU
eXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ3VzdG9tJykKLSAgICB7ImN1c3RvbUF0dHIiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6Y3VzdG9tQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4
SW50ZXJuYWw6OmN1c3RvbUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAor
ICAgIHsiY3VzdG9tQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpjdXN0b21BdHRyQXR0ckdldHRl
ckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3VzdG9tQXR0ckF0dHJTZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OmN1c3RvbUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpjdXN0b21BdHRyQXR0clNldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRT
dGF0ZUF0dHJpYnV0ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcpCi0g
ICAgeyJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6
d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKKyAgICB7IndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjp3
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpW
OEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRy
U2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJp
YnV0ZSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmli
dXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQotICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIsIFRlc3RP
YmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJHZXR0
ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQs
IFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0
cmlidXRlICd3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMnIChUeXBlOiAnYXR0cmlidXRl
JyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQotICAgIHsid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0
dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlc0F0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJ3aXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckNhbGxiYWNrLCBUZXN0
T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKICAgICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRoJykKLSAgICB7Indp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIiwgVGVzdE9ialY4SW50ZXJu
YWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiLCBUZXN0T2JqVjhJbnRlcm5h
bDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyQ2Fs
bGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZVJhaXNlc0F0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAogICAgIC8vIEF0dHJpYnV0ZSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcpCi0g
ICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIiwg
VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlckNhbGxi
YWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVz
dE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNr
Rm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0
QXR0cjogJ0NhbGxXaXRoJykKLSAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxs
YmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAorICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZVJhaXNlcyIsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZVJhaXNlc0F0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlJyAoVHlwZTog
J2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRoJykKLSAgICB7IndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIiwgVGVzdE9ialY4SW50
ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2Vz
QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyU2V0
dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5h
bDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRy
aWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJTZXR0ZXJD
YWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQs
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnd2l0aFNjcmlwdEFyZ3VtZW50c0Fu
ZENhbGxTdGFja0F0dHJpYnV0ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0
aCcpCi0gICAgeyJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIiwgVGVz
dE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVB
dHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0QXJndW1lbnRz
QW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
KyAgICB7IndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJH
ZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRD
YWxsU3RhY2tBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3
aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNr
Rm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENh
bGxTdGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdlbmZvcmNlZFJhbmdlTG9uZ0F0dHInIChUeXBlOiAn
YXR0cmlidXRlJyBFeHRBdHRyOiAnRW5mb3JjZVJhbmdlJykKLSAgICB7ImVuZm9yY2VkUmFuZ2VM
b25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlTG9uZ0F0dHJBdHRyR2V0
dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlTG9uZ0F0dHJBdHRy
U2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiZW5mb3JjZWRSYW5nZUxvbmdB
dHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nQXR0ckF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nQXR0ckF0dHJTZXR0
ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFu
Z2VMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CiAgICAgLy8gQXR0cmlidXRlICdlbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0cicgKFR5cGU6
ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdFbmZvcmNlUmFuZ2UnKQotICAgIHsiZW5mb3JjZWRSYW5n
ZVVuc2lnbmVkTG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZVVuc2ln
bmVkTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNl
ZFJhbmdlVW5zaWduZWRMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CisgICAgeyJlbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFs
OjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdBdHRyQXR0clNldHRlckNhbGxi
YWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0F0dHJBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJh
bmdlVW5zaWduZWRMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdlbmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRyJyAo
VHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0VuZm9yY2VSYW5nZScpCi0gICAgeyJlbmZvcmNl
ZFJhbmdlTG9uZ0xvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25n
TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJh
bmdlTG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7
ImVuZm9yY2VkUmFuZ2VMb25nTG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRS
YW5nZUxvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVu
Zm9yY2VkUmFuZ2VMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVy
bmFsOjplbmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZUxvbmdMb25nQXR0ckF0dHJTZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRl
ICdlbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nTG9uZ0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBF
eHRBdHRyOiAnRW5mb3JjZVJhbmdlJykKLSAgICB7ImVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdM
b25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nTG9u
Z0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdl
VW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAor
ICAgIHsiZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJu
YWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywg
VGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdMb25nQXR0ckF0dHJT
ZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExv
bmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJu
YWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiAgICAg
Ly8gQXR0cmlidXRlICdjb25kaXRpb25hbEF0dHIxJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0
cjogJ0NvbmRpdGlvbmFsJykKLSAgICB7ImNvbmRpdGlvbmFsQXR0cjEiLCBUZXN0T2JqVjhJbnRl
cm5hbDo6Y29uZGl0aW9uYWxBdHRyMUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJu
YWw6OmNvbmRpdGlvbmFsQXR0cjFBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAor
ICAgIHsiY29uZGl0aW9uYWxBdHRyMSIsIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0
dHIxQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRy
MUF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjFB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRp
b25hbEF0dHIxQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
ICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYg
RU5BQkxFKENvbmRpdGlvbjIpCiAgICAgLy8gQXR0cmlidXRlICdjb25kaXRpb25hbEF0dHIyJyAo
VHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFsJykKLSAgICB7ImNvbmRpdGlv
bmFsQXR0cjIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMkF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRyU2V0dGVyQ2Fs
bGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiY29uZGl0aW9uYWxBdHRyMiIsIFRlc3RPYmpW
OEludGVybmFsOjpjb25kaXRpb25hbEF0dHIyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMkF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRl
c3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIyQXR0clNldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgJiYg
RU5BQkxFKENvbmRpdGlvbjIpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25k
aXRpb24yKQogICAgIC8vIEF0dHJpYnV0ZSAnY29uZGl0aW9uYWxBdHRyMycgKFR5cGU6ICdhdHRy
aWJ1dGUnIEV4dEF0dHI6ICdDb25kaXRpb25hbCcpCi0gICAgeyJjb25kaXRpb25hbEF0dHIzIiwg
VGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjNBdHRyR2V0dGVyQ2FsbGJhY2ssIFRl
c3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIzQXR0clNldHRlckNhbGxiYWNrLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKKyAgICB7ImNvbmRpdGlvbmFsQXR0cjMiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
Y29uZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmNv
bmRpdGlvbmFsQXR0cjNBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpjb25k
aXRpb25hbEF0dHIzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRl
cm5hbDo6Y29uZGl0aW9uYWxBdHRyM0F0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25k
aXRpb24yKQogI2lmIEVOQUJMRShDb25kaXRpb24xKQogICAgIC8vIEF0dHJpYnV0ZSAnY29uZGl0
aW9uYWxBdHRyNCcgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDb25kaXRpb25hbCcpCi0g
ICAgeyJjb25kaXRpb25hbEF0dHI0IiwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpDb25zdHJ1
Y3RvckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJTZXR0
ZXJDYWxsYmFjaywgJlY4VGVzdE9iamVjdEE6OmluZm8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImNvbmRpdGlvbmFsQXR0cjQi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9iakNvbnN0cnVjdG9yR2V0dGVyLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6VGVzdE9ialJlcGxhY2VhYmxlQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAmVjhU
ZXN0T2JqZWN0QTo6aW5mbywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKQogI2lmIEVOQUJM
RShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKICAgICAvLyBBdHRyaWJ1dGUgJ2Nv
bmRpdGlvbmFsQXR0cjUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwn
KQotICAgIHsiY29uZGl0aW9uYWxBdHRyNSIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqQ29u
c3RydWN0b3JHZXR0ZXIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqUmVwbGFjZWFibGVBdHRy
U2V0dGVyQ2FsbGJhY2ssICZWOFRlc3RPYmplY3RCOjppbmZvLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJjb25kaXRpb25hbEF0
dHI1IiwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpDb25zdHJ1Y3RvckdldHRlciwgVGVzdE9i
alY4SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwg
JlY4VGVzdE9iamVjdEI6OmluZm8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5B
QkxFKENvbmRpdGlvbjIpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRp
b24yKQogICAgIC8vIEF0dHJpYnV0ZSAnY29uZGl0aW9uYWxBdHRyNicgKFR5cGU6ICdhdHRyaWJ1
dGUnIEV4dEF0dHI6ICdDb25kaXRpb25hbCcpCi0gICAgeyJjb25kaXRpb25hbEF0dHI2IiwgVGVz
dE9ialY4SW50ZXJuYWw6OlRlc3RPYmpDb25zdHJ1Y3RvckdldHRlciwgVGVzdE9ialY4SW50ZXJu
YWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJTZXR0ZXJDYWxsYmFjaywgJlY4VGVzdE9iamVjdEM6
OmluZm8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKKyAgICB7ImNvbmRpdGlvbmFsQXR0cjYiLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9i
akNvbnN0cnVjdG9yR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9ialJlcGxhY2VhYmxl
QXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAmVjhUZXN0T2JqZWN0Qzo6aW5mbywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogI2VuZGlmIC8v
IEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKICAgICAvLyBBdHRyaWJ1
dGUgJ2NhY2hlZEF0dHJpYnV0ZTEnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRy
OiAnQ2FjaGVkQXR0cmlidXRlJykKLSAgICB7ImNhY2hlZEF0dHJpYnV0ZTEiLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6Y2FjaGVkQXR0cmlidXRlMUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgeyJjYWNoZWRBdHRyaWJ1dGUxIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNhY2hl
ZEF0dHJpYnV0ZTFBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIFRlc3RPYmpWOEludGVybmFsOjpjYWNo
ZWRBdHRyaWJ1dGUxQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2NhY2hlZEF0dHJpYnV0ZTInIChUeXBlOiAncmVhZG9u
bHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FjaGVkQXR0cmlidXRlJykKLSAgICB7ImNhY2hlZEF0
dHJpYnV0ZTIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y2FjaGVkQXR0cmlidXRlMkF0dHJHZXR0ZXJD
YWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJjYWNoZWRBdHRyaWJ1dGUyIiwgVGVz
dE9ialY4SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIFRl
c3RPYmpWOEludGVybmFsOjpjYWNoZWRBdHRyaWJ1dGUyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2FueUF0dHJpYnV0
ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiYW55QXR0cmlidXRlIiwg
VGVzdE9ialY4SW50ZXJuYWw6OmFueUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OmFueUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCisgICAgeyJhbnlBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6YW55QXR0cmlidXRl
QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6YW55QXR0cmlidXRlQXR0clNl
dHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6YW55QXR0cmlidXRlQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6YW55QXR0cmlidXRlQXR0clNl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1
dGUgJ2Zsb2F0QXJyYXknIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7ImZs
b2F0QXJyYXkiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZmxvYXRBcnJheUF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIHsiZmxvYXRBcnJheSIsIFRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFy
cmF5QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZmxvYXRBcnJheUF0dHJT
ZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFycmF5QXR0clNldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUg
J2RvdWJsZUFycmF5JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJkb3Vi
bGVBcnJheSIsIFRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0clNldHRlckNhbGxiYWNrLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKKyAgICB7ImRvdWJsZUFycmF5IiwgVGVzdE9ialY4SW50ZXJuYWw6OmRvdWJs
ZUFycmF5QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZG91YmxlQXJyYXlB
dHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0
clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRy
aWJ1dGUgJ2NvbnRlbnREb2N1bWVudCcgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0
dHI6ICdDaGVja1NlY3VyaXR5Rm9yTm9kZScpCi0gICAgeyJjb250ZW50RG9jdW1lbnQiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6Y29udGVudERvY3VtZW50QXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKKyAgICB7ImNvbnRlbnREb2N1bWVudCIsIFRlc3RPYmpWOEludGVybmFsOjpj
b250ZW50RG9jdW1lbnRBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIFRlc3RPYmpWOEludGVybmFsOjpj
b250ZW50RG9jdW1lbnRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnbXV0YWJsZVBvaW50JyAoVHlwZTogJ2F0dHJpYnV0
ZScgRXh0QXR0cjogJycpCi0gICAgeyJtdXRhYmxlUG9pbnQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
bXV0YWJsZVBvaW50QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJs
ZVBvaW50QXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7Im11dGFibGVQ
b2ludCIsIFRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRBdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RP
YmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQs
IFRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnaW1tdXRhYmxlUG9pbnQn
IChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnSW1tdXRhYmxlJykKLSAgICB7ImltbXV0YWJs
ZVBvaW50IiwgVGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50QXR0ckdldHRlckNhbGxi
YWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRyU2V0dGVyQ2FsbGJhY2ss
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAorICAgIHsiaW1tdXRhYmxlUG9pbnQiLCBUZXN0T2JqVjhJbnRlcm5h
bDo6aW1tdXRhYmxlUG9pbnRBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpp
bW11dGFibGVQb2ludEF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmltbXV0
YWJsZVBvaW50QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5h
bDo6aW1tdXRhYmxlUG9pbnRBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnc3RyYXdiZXJyeScgKFR5cGU6ICdhdHRyaWJ1dGUn
IEV4dEF0dHI6ICdJbXBsZW1lbnRlZEFzJykKLSAgICB7InN0cmF3YmVycnkiLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6c3RyYXdiZXJyeUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6
OnN0cmF3YmVycnlBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3Ry
YXdiZXJyeSIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJhd2JlcnJ5QXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJyeUF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OnN0cmF3YmVycnlBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRl
c3RPYmpWOEludGVybmFsOjpzdHJhd2JlcnJ5QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0cmljdEZsb2F0JyAoVHlwZTog
J2F0dHJpYnV0ZScgRXh0QXR0cjogJ1N0cmljdFR5cGVDaGVja2luZycpCi0gICAgeyJzdHJpY3RG
bG9hdCIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGbG9hdEF0dHJHZXR0ZXJDYWxsYmFjaywg
VGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZsb2F0QXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKKyAgICB7InN0cmljdEZsb2F0IiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZs
b2F0QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRy
U2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGbG9hdEF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZsb2F0QXR0clNl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1
dGUgJ2Rlc2NyaXB0aW9uJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycp
Ci0gICAgeyJkZXNjcmlwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjpkZXNjcmlwdGlvbkF0dHJH
ZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJkZXNjcmlwdGlvbiIsIFRl
c3RPYmpWOEludGVybmFsOjpkZXNjcmlwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgVGVzdE9i
alY4SW50ZXJuYWw6OmRlc2NyaXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAw
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2lkJyAoVHlwZTogJ2F0dHJpYnV0
ZScgRXh0QXR0cjogJycpCi0gICAgeyJpZCIsIFRlc3RPYmpWOEludGVybmFsOjppZEF0dHJHZXR0
ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0clNldHRlckNhbGxiYWNrLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKKyAgICB7ImlkIiwgVGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6aWRBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpW
OEludGVybmFsOjppZEF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50
ZXJuYWw6OmlkQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
ICAgICAvLyBBdHRyaWJ1dGUgJ2hhc2gnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRB
dHRyOiAnJykKLSAgICB7Imhhc2giLCBUZXN0T2JqVjhJbnRlcm5hbDo6aGFzaEF0dHJHZXR0ZXJD
YWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJoYXNoIiwgVGVzdE9ialY4SW50ZXJu
YWw6Omhhc2hBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIFRlc3RPYmpWOEludGVybmFsOjpoYXNoQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBB
dHRyaWJ1dGUgJ3JlcGxhY2VhYmxlQXR0cmlidXRlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0
ZScgRXh0QXR0cjogJ1JlcGxhY2VhYmxlJykKLSAgICB7InJlcGxhY2VhYmxlQXR0cmlidXRlIiwg
VGVzdE9ialY4SW50ZXJuYWw6OnJlcGxhY2VhYmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9ialJlcGxhY2VhYmxlQXR0clNldHRlckNhbGxiYWNr
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKKyAgICB7InJlcGxhY2VhYmxlQXR0cmlidXRlIiwgVGVzdE9ialY4
SW50ZXJuYWw6OnJlcGxhY2VhYmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6VGVzdE9ialJlcGxhY2VhYmxlQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6cmVwbGFjZWFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnbnVsbGFibGVEb3Vi
bGVBdHRyaWJ1dGUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAg
ICB7Im51bGxhYmxlRG91YmxlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxl
RG91YmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAg
ICB7Im51bGxhYmxlRG91YmxlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxl
RG91YmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCAwLCBUZXN0T2JqVjhJbnRlcm5hbDo6
bnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAs
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnbnVsbGFibGVMb25nQXR0cmlidXRl
JyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJudWxsYWJs
ZUxvbmdBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nQXR0cmlidXRl
QXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7Im51bGxhYmxlTG9u
Z0F0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdBdHRyaWJ1dGVBdHRy
R2V0dGVyQ2FsbGJhY2ssIDAsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdBdHRyaWJ1
dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAg
IC8vIEF0dHJpYnV0ZSAnbnVsbGFibGVCb29sZWFuQXR0cmlidXRlJyAoVHlwZTogJ3JlYWRvbmx5
IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVCb29sZWFuQXR0cmlidXRlQXR0ckdldHRlckNh
bGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7Im51bGxhYmxlQm9vbGVhbkF0dHJpYnV0
ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGVBdHRyR2V0dGVy
Q2FsbGJhY2ssIDAsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGVB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8v
IEF0dHJpYnV0ZSAnbnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUnIChUeXBlOiAncmVhZG9ubHkgYXR0
cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7Im51bGxhYmxlU3RyaW5nQXR0cmlidXRlIiwgVGVz
dE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNr
LCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7Im51bGxhYmxlU3RyaW5nQXR0cmlidXRlIiwgVGVz
dE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNr
LCAwLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGVBdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0
ZSAnbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRB
dHRyOiAnJykKLSAgICB7Im51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIiwgVGVzdE9ialY4
SW50ZXJuYWw6Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyU2V0
dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsibnVsbGFibGVMb25nU2V0dGFibGVB
dHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1
dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdTZXR0
YWJsZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxh
YmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAn
bnVsbGFibGVTdHJpbmdWYWx1ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAg
IHsibnVsbGFibGVTdHJpbmdWYWx1ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmlu
Z1ZhbHVlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJp
bmdWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJudWxsYWJs
ZVN0cmluZ1ZhbHVlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVBdHRy
R2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0
clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0
dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxl
U3RyaW5nVmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAogfTsKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZE1ldGhvZCBW
OFRlc3RPYmpNZXRob2RzW10gPSB7CkBAIC0zMzMxLDE0ICs0OTY4LDE0IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFRlc3RPYmo6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmNvbnN0cnVjdG9yKGFy
Z3MpOwogfQogCi1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5
cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3Vy
ZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBk
ZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRU
eXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8
djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBkZWZhdWx0U2lnbmF0dXJlID0g
VjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdE9iamVjdCIs
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6OmludGVy
bmFsRmllbGRDb3VudCwKICAgICAgICAgVjhUZXN0T2JqQXR0cnMsIFdURl9BUlJBWV9MRU5HVEgo
VjhUZXN0T2JqQXR0cnMpLAotICAgICAgICBWOFRlc3RPYmpNZXRob2RzLCBXVEZfQVJSQVlfTEVO
R1RIKFY4VGVzdE9iak1ldGhvZHMpLCBpc29sYXRlKTsKKyAgICAgICAgVjhUZXN0T2JqTWV0aG9k
cywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RPYmpNZXRob2RzKSwgaXNvbGF0ZSwgY3VycmVudFdv
cmxkVHlwZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21l
IGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4
VGVzdE9iajo6Y29uc3RydWN0b3JDYWxsYmFjayk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RU
ZW1wbGF0ZT4gaW5zdGFuY2UgPSBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCk7CkBAIC0zMzQ5LDQz
ICs0OTg2LDQzIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
Q29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNpCiAgICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUVuYWJsZWQoKSkgewogICAgICAgICBz
dGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRh
ID1cCiAgICAgICAgIC8vIEF0dHJpYnV0ZSAnZW5hYmxlZEF0UnVudGltZUF0dHIxJyAoVHlwZTog
J2F0dHJpYnV0ZScgRXh0QXR0cjogJ1Y4RW5hYmxlZEF0UnVudGltZScpCi0gICAgICAgIHsiZW5h
YmxlZEF0UnVudGltZUF0dHIxIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVB
dHRyMUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRp
bWVBdHRyMUF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL307Ci0gICAgICAgIFY4RE9N
Q29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRh
dGEsIGlzb2xhdGUpOworICAgICAgICB7ImVuYWJsZWRBdFJ1bnRpbWVBdHRyMSIsIFRlc3RPYmpW
OEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RP
YmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyU2V0dGVyQ2FsbGJhY2ssIFRl
c3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRy
U2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99OworICAgICAgICBWOERP
TUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJE
YXRhLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICB9CiAgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmZlYXR1cmVOYW1lRW5hYmxlZCgpKSB7CiAgICAgICAgIHN0YXRpYyBj
b25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPVwKICAg
ICAgICAgLy8gQXR0cmlidXRlICdlbmFibGVkQXRSdW50aW1lQXR0cjInIChUeXBlOiAnYXR0cmli
dXRlJyBFeHRBdHRyOiAnVjhFbmFibGVkQXRSdW50aW1lJykKLSAgICAgICAgeyJlbmFibGVkQXRS
dW50aW1lQXR0cjIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0
ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIy
QXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfTsKLSAgICAgICAgVjhET01Db25maWd1
cmF0aW9uOjpjb25maWd1cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSwgaXNv
bGF0ZSk7CisgICAgICAgIHsiZW5hYmxlZEF0UnVudGltZUF0dHIyIiwgVGVzdE9ialY4SW50ZXJu
YWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4
SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJTZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL307CisgICAgICAgIFY4RE9NQ29uZmln
dXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEsIGlz
b2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIH0KIAogICAgIC8vIEN1c3RvbSBTaWduYXR1
cmUgJ3ZvaWRNZXRob2RXaXRoQXJncycKICAgICBjb25zdCBpbnQgdm9pZE1ldGhvZFdpdGhBcmdz
QXJnYyA9IDM7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdm9pZE1ldGhv
ZFdpdGhBcmdzQXJndlt2b2lkTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwg
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6
aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHZvaWRNZXRob2RXaXRoQXJnc0FyZ3Zbdm9pZE1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZW
OFRlc3RPYmo6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6
U2lnbmF0dXJlPiB2b2lkTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpO
ZXcoZGVzYywgdm9pZE1ldGhvZFdpdGhBcmdzQXJnYywgdm9pZE1ldGhvZFdpdGhBcmdzQXJndik7
CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZvaWRNZXRob2RXaXRoQXJn
cyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjp2b2lkTWV0
aG9kV2l0aEFyZ3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdm9pZE1ldGhvZFdpdGhB
cmdzU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdsb25nTWV0aG9kV2l0
aEFyZ3MnCiAgICAgY29uc3QgaW50IGxvbmdNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOwotICAgIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGxvbmdNZXRob2RXaXRoQXJnc0FyZ3ZbbG9u
Z01ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlwZSkg
fTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBsb25nTWV0aG9kV2l0aEFy
Z3NBcmd2W2xvbmdNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
blRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCBj
dXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbG9uZ01l
dGhvZFdpdGhBcmdzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGxvbmdNZXRo
b2RXaXRoQXJnc0FyZ2MsIGxvbmdNZXRob2RXaXRoQXJnc0FyZ3YpOwogICAgIHByb3RvLT5TZXQo
djg6OlN0cmluZzo6TmV3U3ltYm9sKCJsb25nTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9u
VGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ01ldGhvZFdpdGhBcmdzTWV0aG9k
Q2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGxvbmdNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwog
CiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnb2JqTWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3Qg
aW50IG9iak1ldGhvZFdpdGhBcmdzQXJnYyA9IDM7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gb2JqTWV0aG9kV2l0aEFyZ3NBcmd2W29iak1ldGhvZFdpdGhBcmdzQXJnY10g
PSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1Rl
bXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBvYmpNZXRob2RXaXRoQXJnc0FyZ3Zbb2JqTWV0aG9kV2l0aEFy
Z3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAg
ICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG9iak1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlID0g
djg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG9iak1ldGhvZFdpdGhBcmdzQXJnYywgb2JqTWV0aG9k
V2l0aEFyZ3NBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgib2Jq
TWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRl
cm5hbDo6b2JqTWV0aG9kV2l0aEFyZ3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgb2Jq
TWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ21l
dGhvZFdpdGhTZXF1ZW5jZUFyZycKICAgICBjb25zdCBpbnQgbWV0aG9kV2l0aFNlcXVlbmNlQXJn
QXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kV2l0
aFNlcXVlbmNlQXJnQXJndlttZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjXSA9IHsgVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4c2VxdWVuY2U8U2NyaXB0UHJv
ZmlsZT46OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhvZFdpdGhTZXF1ZW5jZUFyZ0Fy
Z2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhz
ZXF1ZW5jZTxTY3JpcHRQcm9maWxlPjo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2
ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSA9
IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjLCBtZXRo
b2RXaXRoU2VxdWVuY2VBcmdBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5
bWJvbCgibWV0aG9kV2l0aFNlcXVlbmNlQXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXco
VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhTZXF1ZW5jZUFyZ01ldGhvZENhbGxiYWNrLCB2
OFVuZGVmaW5lZCgpLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWduYXR1cmUpKTsKIAogICAgIC8v
IEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MnCiAg
ICAgY29uc3QgaW50IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjID0gMjsK
LSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RUaGF0UmVxdWlyZXNB
bGxBcmdzQW5kVGhyb3dzQXJndlttZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJn
Y10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlw
ZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RUaGF0UmVx
dWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJndlttZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhy
b3dzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIGN1
cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RU
aGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3
KGRlc2MsIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjLCBtZXRob2RUaGF0
UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5n
OjpOZXdTeW1ib2woIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKSwgdjg6OkZ1
bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kVGhhdFJlcXVpcmVz
QWxsQXJnc0FuZFRocm93c01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RUaGF0
UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzU2lnbmF0dXJlKSk7CiAgICAgZGVzYy0+U2V0KHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmci
KSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljTWV0
aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmdNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQo
KSwgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkpKTsKQEAgLTM0MDMsNDMgKzUwNDAsNDMgQEAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRl
c3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmlu
Z0FycmF5RnVuY3Rpb24nCiAgICAgY29uc3QgaW50IHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjID0g
MTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0
aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZvLCB3b3JsZFR5cGUp
IH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5j
dGlvbkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgY3VycmVudFdv
cmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHN0cmluZ0FycmF5RnVu
Y3Rpb25TaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgc3RyaW5nQXJyYXlGdW5j
dGlvbkFyZ2MsIHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgic3RyaW5nQXJyYXlGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBcnJheUZ1bmN0aW9uTWV0aG9kQ2Fs
bGJhY2ssIHY4VW5kZWZpbmVkKCksIHN0cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1cmUpKTsKIAog
ICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2RvbVN0cmluZ0xpc3RGdW5jdGlvbicKICAgICBjb25z
dCBpbnQgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJndltkb21TdHJpbmdMaXN0
RnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVt
cGxhdGUoJlY4RE9NU3RyaW5nTGlzdDo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ3ZbZG9tU3Ry
aW5nTGlzdEZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSkt
PnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ0xpc3Q6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07
CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBkb21TdHJpbmdMaXN0RnVuY3Rpb25TaWdu
YXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJn
YywgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5n
OjpOZXdTeW1ib2woImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpkb21TdHJpbmdMaXN0RnVuY3Rpb25NZXRob2RDYWxs
YmFjaywgdjhVbmRlZmluZWQoKSwgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uU2lnbmF0dXJlKSk7CiAK
ICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdjb252ZXJ0MScKICAgICBjb25zdCBpbnQgY29udmVy
dDFBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0
MUFyZ3ZbY29udmVydDFBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
cmF3VGVtcGxhdGUoJlY4YTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQxQXJndltjb252ZXJ0MUFyZ2NdID0geyBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhhOjppbmZvLCBjdXJyZW50
V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDFTaWdu
YXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgY29udmVydDFBcmdjLCBjb252ZXJ0MUFy
Z3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0MSIpLCB2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0MU1ldGhv
ZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0MVNpZ25hdHVyZSkpOwogCiAgICAgLy8g
Q3VzdG9tIFNpZ25hdHVyZSAnY29udmVydDInCiAgICAgY29uc3QgaW50IGNvbnZlcnQyQXJnYyA9
IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDJBcmd2W2Nv
bnZlcnQyQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBs
YXRlKCZWOGI6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBjb252ZXJ0MkFyZ3ZbY29udmVydDJBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Yjo6aW5mbywgY3VycmVudFdvcmxkVHlw
ZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZlcnQyU2lnbmF0dXJlID0g
djg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGNvbnZlcnQyQXJnYywgY29udmVydDJBcmd2KTsKICAg
ICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVydDIiKSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDJNZXRob2RDYWxsYmFj
aywgdjhVbmRlZmluZWQoKSwgY29udmVydDJTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBT
aWduYXR1cmUgJ2NvbnZlcnQ0JwogICAgIGNvbnN0IGludCBjb252ZXJ0NEFyZ2MgPSAxOwotICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQ0QXJndltjb252ZXJ0NEFy
Z2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhk
OjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gY29udmVydDRBcmd2W2NvbnZlcnQ0QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGQ6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAg
ICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBjb252ZXJ0NFNpZ25hdHVyZSA9IHY4OjpTaWdu
YXR1cmU6Ok5ldyhkZXNjLCBjb252ZXJ0NEFyZ2MsIGNvbnZlcnQ0QXJndik7CiAgICAgcHJvdG8t
PlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNvbnZlcnQ0IiksIHY4OjpGdW5jdGlvblRlbXBs
YXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQ0TWV0aG9kQ2FsbGJhY2ssIHY4VW5k
ZWZpbmVkKCksIGNvbnZlcnQ0U2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJl
ICdjb252ZXJ0NScKICAgICBjb25zdCBpbnQgY29udmVydDVBcmdjID0gMTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NUFyZ3ZbY29udmVydDVBcmdjXSA9IHsg
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4ZTo6aW5mbywg
d29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZl
cnQ1QXJndltjb252ZXJ0NUFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5yYXdUZW1wbGF0ZSgmVjhlOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpI
YW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDVTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpO
ZXcoZGVzYywgY29udmVydDVBcmdjLCBjb252ZXJ0NUFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0NSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0NU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgp
LCBjb252ZXJ0NVNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAndmFyaWFk
aWNOb2RlTWV0aG9kJwogICAgIGNvbnN0IGludCB2YXJpYWRpY05vZGVNZXRob2RBcmdjID0gMjsK
LSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2YXJpYWRpY05vZGVNZXRob2RB
cmd2W3ZhcmlhZGljTm9kZU1ldGhvZEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCB3b3JsZFR5cGUpLCBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCB3b3JsZFR5
cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdmFyaWFkaWNOb2Rl
TWV0aG9kQXJndlt2YXJpYWRpY05vZGVNZXRob2RBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbywgY3VycmVudFdvcmxkVHlw
ZSksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOE5vZGU6
OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJl
PiB2YXJpYWRpY05vZGVNZXRob2RTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywg
dmFyaWFkaWNOb2RlTWV0aG9kQXJnYywgdmFyaWFkaWNOb2RlTWV0aG9kQXJndik7CiAgICAgcHJv
dG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZhcmlhZGljTm9kZU1ldGhvZCIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY05vZGVNZXRo
b2RNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdmFyaWFkaWNOb2RlTWV0aG9kU2lnbmF0
dXJlKSk7CiAgICAgVjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyhk
ZXNjLCBwcm90bywgVjhUZXN0T2JqQ29uc3RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdE9iakNv
bnN0cyksIGlzb2xhdGUpOwpAQCAtMzQ0OSwyMyArNTA4NiwyMyBAQCBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4
OjpQZXJzaQogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gVjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gVjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3Jh
cHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEq
IGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0
ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6
aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmlu
ZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29y
bGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6
SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUoZGF0
YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0g
ICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAg
ICAgQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIGN1
cnJlbnRXb3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKKyAgICBkYXRhLT50
ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1
cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdv
cmxkVHlwZSkKK2Jvb2wgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRX
b3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSkt
Pmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJy
ZW50V29ybGRUeXBlKTsKIH0KIAogYm9vbCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlSW5BbnlXb3Js
ZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpAQCAt
MzQ4MywxMyArNTEyMCwxMyBAQCB2b2lkIFY4VGVzdE9iajo6aW5zdGFsbFBlckNvbnRleHRQcm9w
ZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5zdGFuY2UsIFRlcwogICAgIGlmIChDb250
ZXh0RmVhdHVyZXM6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjFFbmFibGVkKGltcGwtPmRvY3VtZW50
KCkpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRB
dHRyaWJ1dGUgYXR0ckRhdGEgPVwKICAgICAgICAgLy8gQXR0cmlidXRlICdlbmFibGVkUGVyQ29u
dGV4dEF0dHIxJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1Y4RW5hYmxlZFBlckNvbnRl
eHQnKQotICAgICAgICB7ImVuYWJsZWRQZXJDb250ZXh0QXR0cjEiLCBUZXN0T2JqVjhJbnRlcm5h
bDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjFBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99OworICAgICAgICB7ImVuYWJsZWRQZXJDb250ZXh0QXR0cjEiLCBUZXN0T2JqVjhJbnRl
cm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4
SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjFBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RP
YmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0ckdldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL307CiAgICAgICAgIFY4RE9N
Q29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRh
dGEsIGlzb2xhdGUpOwogICAgIH0KICAgICBpZiAoQ29udGV4dEZlYXR1cmVzOjpmZWF0dXJlTmFt
ZUVuYWJsZWQoaW1wbC0+ZG9jdW1lbnQoKSkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IFY4RE9N
Q29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XAogICAgICAgICAvLyBB
dHRyaWJ1dGUgJ2VuYWJsZWRQZXJDb250ZXh0QXR0cjInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRB
dHRyOiAnVjhFbmFibGVkUGVyQ29udGV4dCcpCi0gICAgICAgIHsiZW5hYmxlZFBlckNvbnRleHRB
dHRyMiIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0ckdldHRl
ckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMkF0dHJT
ZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL307CisgICAgICAgIHsiZW5hYmxlZFBlckNvbnRl
eHRBdHRyMiIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMkF0
dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0
cjJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjplbmFi
bGVkUGVyQ29udGV4dEF0dHIyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfTsKICAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVBdHRyaWJ1dGUo
aW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSwgaXNvbGF0ZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCmluZGV4
IDFmMjNlNjQ1MDliYTRiYTUxMTg0ZjA2NTBmOTAzNjQ1ODYyNTUxOTUuLmRmYzQ0ZTVhMTYxYWQ3
YWM0NTdlNzc0MGNiNjFjY2VmZTdhOWVhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKQEAgLTgxLDYgKzgxLDE3IEBAIGlu
bGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0T2JqKiBpbXBsLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uCiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9y
TWFpbldvcmxkKFRlc3RPYmoqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGlz
b2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAg
cmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsK
KyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAg
ICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1w
bGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE9iaiogaW1wbCwgY29uc3QgSG9sZGVyQ29u
dGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtOTMsNiArMTA0
LDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE9iaiogaW1w
bCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRl
ckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0T2JqKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWlu
ZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxk
VHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJ
S0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUo
KSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpn
ZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5l
ci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0T2JqID4gaW1wbCwg
Y29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQor
eworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIs
IHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFz
cyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NS
ZWZQdHI8IFRlc3RPYmogPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwg
V3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCks
IGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcAppbmRleCA2ZWFhMzdjMTEzN2ZiMmE4NjI1Y2Q5MTY4OWU0ODRmMzVmOThl
YjM0Li5kMDM1MDFhNGNkNzQwOTRjMjkwZjJiMGM0NWVjMDYxMmE5ZjRlMGE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0xNDcsMTQgKzE0Nywx
NCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2OAogICAgIHJldHVybiBUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1Y4SW50ZXJuYWw6OmNvbnN0cnVjdG9yKGFyZ3MpOwogfQogCi1zdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBl
KQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVW
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRU
eXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsK
IAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwogICAgIGRl
ZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRl
c2MsICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPigpLCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjppbnRlcm5hbEZp
ZWxkQ291bnQsCiAgICAgICAgIDAsIDAsCi0gICAgICAgIDAsIDAsIGlzb2xhdGUpOworICAgICAg
ICAwLCAwLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICBVTlVTRURfUEFSQU0oZGVm
YXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAg
ICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29u
c3RydWN0b3JDYWxsYmFjayk7CiAgICAgCkBAIC0xNjQsMjMgKzE2NCwyMyBAQCBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcgogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6R2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxh
dGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmlu
ZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUp
LmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1
bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAg
ICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgp
KQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBo
YW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVt
cGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGVtcGxh
dGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlw
ZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsK
KyAgICAgICAgQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RlbXBsYXRlKGRh
dGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVu
dFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRk
KCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9v
bCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1
cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVl
LCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogYm9vbCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5oCmluZGV4IDE0YWFiYzRiOGEzMDg5NWJhZDZhM2UwMDZhYzhlYWQyNTZhYjVhZTguLmQw
ZTVhOWEyMmI2NmZlMDhjNGFlOWQ5MWI4YzRiNGRlZmQwYmYxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtNzYsNiArNzYsMTcgQEAgaW5saW5lIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBs
LCB2ODo6SGFuZGxlPHYKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29y
bGQoVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQo
d29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBs
KSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5X
b3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
d3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4K
IGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFi
bGUqIHdyYXBwYWJsZSkKIHsKQEAgLTg4LDYgKzk5LDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwsIGNvbnN0
IEhvCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxl
PgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250
YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29u
dGFpbmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWlt
cGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBl
ckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVy
KCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJD
b250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3
cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCks
IGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250
YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OEZhc3QoUGFzc1JlZlB0cjwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPiBpbXBsLCBjb25z
dCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAg
ICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAKaW5kZXggZDU4YWEzZTBmNGMyMGU0M2EzN2IzODhhNzVhNzgwMTUyMTY3MWZiOC4uZWI4YTM5
OGIzZjc0YTczMDA2NzRhYTZmMjRlYzgyNjEwOTllZjY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTg2LDYgKzg2
LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWVBdHRyR2V0dGVyQ2FsbGJh
Y2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAgICAgcmV0dXJuIFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjp2YWx1ZUF0dHJHZXR0ZXIobmFtZSwgaW5m
byk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWVBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGlt
cCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CisgICAgcmV0dXJuIGltcC0+dmFsdWUoKSA/IGltcC0+dmFsdWUoKS0+ZGVzZXJp
YWxpemUoKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OE51bGwoaW5mby5HZXRJc29sYXRlKCkp
KTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZUF0dHJHZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBp
bmZvKTsKK30KKwogc3RhdGljIHZvaWQgdmFsdWVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBp
bXAgPSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwpAQCAtOTksNiArMTEwLDE5IEBAIHN0YXRpYyB2b2lkIHZhbHVlQXR0clNldHRl
ckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhCiAg
ICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0
clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHZhbHVlQXR0clNl
dHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wID0gVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
dmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICBpbXAtPnNldFZhbHVlKFdURjo6Z2V0UHRy
KHYpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHZhbHVlQXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6dmFsdWVBdHRyU2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiByZWFkb25seVZhbHVlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTEwLDYgKzEzNCwxNyBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyQ2FsbGJh
Y2sodjg6OkxvY2FsPHY4OjpTdHJpbgogICAgIHJldHVybiBUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6cmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIobmFtZSwgaW5m
byk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZG9ubHlWYWx1ZUF0dHJH
ZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSogaW1wID0gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gaW1wLT5yZWFkb25seVZhbHVlKCkgPyBpbXAt
PnJlYWRvbmx5VmFsdWUoKS0+ZGVzZXJpYWxpemUoKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2
OE51bGwoaW5mby5HZXRJc29sYXRlKCkpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiByZWFkb25seVZhbHVlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IHJldHVybiBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6cmVh
ZG9ubHlWYWx1ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FjaGVkVmFsdWVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHY4
OjpIYW5kbGU8djg6OlN0cmluZz4gcHJvcGVydHlOYW1lID0gdjg6OlN0cmluZzo6TmV3U3ltYm9s
KCJjYWNoZWRWYWx1ZSIpOwpAQCAtMTI4LDYgKzE2MywyNCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGNhY2hlZFZhbHVlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPgogICAgIHJldHVybiBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRl
cm5hbDo6Y2FjaGVkVmFsdWVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZFZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3BlcnR5TmFtZSA9IHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgiY2FjaGVkVmFsdWUiKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUg
PSBpbmZvLkhvbGRlcigpLT5HZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgIGlmICgh
dmFsdWUuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wID0gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkID0gaW1wLT5jYWNoZWRWYWx1ZSgpOworICAgIHZhbHVl
ID0gc2VyaWFsaXplZCA/IHNlcmlhbGl6ZWQtPmRlc2VyaWFsaXplKCkgOiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4odjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKSk7CisgICAgaW5mby5Ib2xkZXIoKS0+
U2V0SGlkZGVuVmFsdWUocHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOwor
fQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZFZhbHVlQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkVmFsdWVBdHRyR2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBjYWNoZWRWYWx1ZUF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UqIGltcCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNDIsNiArMTk1LDIwIEBAIHN0YXRpYyB2b2lk
IGNhY2hlZFZhbHVlQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50
ZXJuYWw6OmNhY2hlZFZhbHVlQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0
YXRpYyB2b2lkIGNhY2hlZFZhbHVlQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSogaW1wID0gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2ID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAg
ICBpbXAtPnNldENhY2hlZFZhbHVlKFdURjo6Z2V0UHRyKHYpKTsKKyAgICBpbmZvLkhvbGRlcigp
LT5EZWxldGVIaWRkZW5WYWx1ZSh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNhY2hlZFZhbHVlIikp
OyAvLyBJbnZhbGlkYXRlIHRoZSBjYWNoZWQgdmFsdWUuCisgICAgcmV0dXJuOworfQorCitzdGF0
aWMgdm9pZCBjYWNoZWRWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1l
LCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9ydHNB
dHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewogICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGlt
cCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CkBAIC0xNjAsNiArMjI3LDI0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcG9ydHNBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAg
ICAgcmV0dXJuIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpw
b3J0c0F0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gcG9ydHNBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgTWVzc2FnZVBvcnRBcnJheSog
cG9ydHMgPSBpbXAtPnBvcnRzKCk7CisgICAgaWYgKCFwb3J0cykKKyAgICAgICAgcmV0dXJuIHY4
OjpBcnJheTo6TmV3KDApOworICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHNDb3B5KCpwb3J0cyk7
CisgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gcG9ydEFycmF5ID0gdjg6OkFycmF5OjpOZXcocG9y
dHNDb3B5LnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb3J0c0NvcHkuc2l6
ZSgpOyArK2kpCisgICAgICAgIHBvcnRBcnJheS0+U2V0KHY4SW50ZWdlcihpLCBpbmZvLkdldElz
b2xhdGUoKSksIHRvVjhGYXN0Rm9yTWFpbldvcmxkKHBvcnRzQ29weVtpXS5nZXQoKSwgaW5mbywg
aW1wKSk7CisgICAgcmV0dXJuIHBvcnRBcnJheTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBwb3J0c0F0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1
cm4gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnBvcnRzQXR0
ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjYWNoZWRSZWFkb25seVZhbHVlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICB2ODo6SGFu
ZGxlPHY4OjpTdHJpbmc+IHByb3BlcnR5TmFtZSA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY2Fj
aGVkUmVhZG9ubHlWYWx1ZSIpOwpAQCAtMTc4LDYgKzI2MywyNCBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6Okxv
Y2FsPHY4OgogICAgIHJldHVybiBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJ
bnRlcm5hbDo6Y2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0
ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBwcm9wZXJ0eU5h
bWUgPSB2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNhY2hlZFJlYWRvbmx5VmFsdWUiKTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSBpbmZvLkhvbGRlcigpLT5HZXRIaWRkZW5WYWx1
ZShwcm9wZXJ0eU5hbWUpOworICAgIGlmICghdmFsdWUuSXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wID0g
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkID0gaW1w
LT5jYWNoZWRSZWFkb25seVZhbHVlKCk7CisgICAgdmFsdWUgPSBzZXJpYWxpemVkID8gc2VyaWFs
aXplZC0+ZGVzZXJpYWxpemUoKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OE51bGwoaW5mby5H
ZXRJc29sYXRlKCkpKTsKKyAgICBpbmZvLkhvbGRlcigpLT5TZXRIaWRkZW5WYWx1ZShwcm9wZXJ0
eU5hbWUsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICByZXR1cm4gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4
SW50ZXJuYWw6OmNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUs
IGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFjY2VwdFRyYW5zZmVy
TGlzdE1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxl
bmd0aCgpIDwgMSkKQEAgLTI4MSwxNSArMzg0LDE1IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY29uc3RydWN0b3IoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogc3RhdGljIGNv
bnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VBdHRyc1tdID0gewogICAgIC8vIEF0dHJpYnV0ZSAndmFsdWUn
IChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InZhbHVlIiwgVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0ckdldHRlckNhbGxi
YWNrLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6dmFsdWVB
dHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsidmFsdWUiLCBUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6dmFsdWVBdHRyR2V0dGVyQ2Fs
bGJhY2ssIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjp2YWx1
ZUF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4
SW50ZXJuYWw6OnZhbHVlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6dmFsdWVBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVhZG9u
bHlWYWx1ZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsi
cmVhZG9ubHlWYWx1ZSIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVy
bmFsOjpyZWFkb25seVZhbHVlQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
KyAgICB7InJlYWRvbmx5VmFsdWUiLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
VjhJbnRlcm5hbDo6cmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnJlYWRvbmx5VmFsdWVBdHRyR2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJp
YnV0ZSAnY2FjaGVkVmFsdWUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FjaGVkQXR0
cmlidXRlJykKLSAgICB7ImNhY2hlZFZhbHVlIiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkVmFsdWVBdHRyU2V0
dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiY2FjaGVkVmFsdWUiLCBUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkVmFsdWVBdHRyR2V0
dGVyQ2FsbGJhY2ssIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFs
OjpjYWNoZWRWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2Fj
aGVkVmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAog
ICAgIC8vIEF0dHJpYnV0ZSAncG9ydHMnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRB
dHRyOiAnJykKLSAgICB7InBvcnRzIiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVY4SW50ZXJuYWw6OnBvcnRzQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
KyAgICB7InBvcnRzIiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJu
YWw6OnBvcnRzQXR0ckdldHRlckNhbGxiYWNrLCAwLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlVjhJbnRlcm5hbDo6cG9ydHNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQs
IDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnY2FjaGVkUmVhZG9ubHlWYWx1
ZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWNoZWRBdHRyaWJ1dGUn
KQotICAgIHsiY2FjaGVkUmVhZG9ubHlWYWx1ZSIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRSZWFkb25seVZhbHVlQXR0ckdldHRlckNhbGxiYWNr
LCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImNhY2hlZFJlYWRvbmx5VmFsdWUiLCBUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkUmVhZG9ubHlWYWx1
ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVY4SW50ZXJuYWw6OmNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmln
dXJhdGlvbjo6QmF0Y2hlZE1ldGhvZCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VNZXRob2RzW10gPSB7CkBAIC0zMDgsMTQgKzQxMSwxNCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxi
YWNrKAogICAgIHJldHVybiBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRl
cm5hbDo6Y29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2Ms
IHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRU
eXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsK
IAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwogICAgIGRl
ZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRl
c2MsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZTo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICBWOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VBdHRycywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VBdHRycyksCi0gICAgICAgIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZU1ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlTWV0aG9kcyksIGlzb2xhdGUpOworICAgICAgICBWOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VNZXRob2RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZU1ldGhvZHMpLCBpc29sYXRlLCBjdXJyZW50
V29ybGRUeXBlKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNv
bWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIo
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNr
KTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IGRlc2MtPklu
c3RhbmNlVGVtcGxhdGUoKTsKQEAgLTMyOSwyMyArNDMyLDIzIEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlCiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkdldFRlbXBs
YXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0
YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0
YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVy
YXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZp
bmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5
cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5k
bGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwg
aXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFk
ZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdv
cmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRl
TWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1w
bDsKIH0KIAotYm9vbCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Okhhc0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUs
IFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwg
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkK
IHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFu
Y2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5
cGUpOwogfQogCiBib29sIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6SGFz
SW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmgKaW5kZXggY2E5MmNjODBiYmM5MzdmOWQ4M2QyYWU0MDdkMTNlOTA3Nzlh
N2UzOC4uYTg5OWE4YjNmMDZkNTU4MDQ0ZmJmYjUzYTYwZmI1OWU3Y2Y1MWE1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaApAQCAt
NzcsNiArNzcsMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcGwsIHY4OjoKICAgICByZXR1cm4gd3JhcChp
bXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFp
bldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxs
V2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0g
RE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3Jh
cHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFw
KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhv
bGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4RmFzdChUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXBsLCBj
b25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7
CkBAIC04OSw2ICsxMDAsMjUgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFz
dChUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXBsLAogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdy
YXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVyLkdl
dElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAg
ICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5X
b3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
d3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRh
aW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIs
IGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RG
b3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdy
YXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwg
Y29udGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRh
aW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
RmFzdChQYXNzUmVmUHRyPCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID4gaW1w
bCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxl
KQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJs
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcAppbmRleCAxZGZmYWM4ZThjMjg3N2NiZjViNmZkNTc4Y2Fh
MTIwNWVhZTg2OTg3Li5mN2ZkODk5Nzc1OGJjMGVhYjZkM2Y4ZmFmOGU2ZWVkM2U4YzFlNjM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RUeXBlZGVmcy5jcHAKQEAgLTkxLDYgKzkxLDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6Okxv
Y2FsPHY4CiAgICAgcmV0dXJuIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xv
bmdBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CisgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5ldyhzdGF0aWNfY2FzdDxkb3VibGU+KGlt
cC0+dW5zaWduZWRMb25nTG9uZ0F0dHIoKSkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIHJldHVybiBUZXN0VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25n
QXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lk
IHVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCiB7CiAgICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CkBAIC0xMDQsNiArMTE1LDE5IEBAIHN0YXRpYyB2b2lkIHVuc2lnbmVk
TG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2CiAgICAgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRy
U2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgdW5zaWduZWRMb25n
TG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdiA9IHRvVUludDY0KHZhbHVl
KTsKKyAgICBpbXAtPnNldFVuc2lnbmVkTG9uZ0xvbmdBdHRyKHYpOworICAgIHJldHVybjsKK30K
Kworc3RhdGljIHZvaWQgdW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RUeXBlZGVm
c1Y4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZChu
YW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW1t
dXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0VHlwZWRl
ZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEx
NSw2ICsxMzksMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbW11dGFibGVTZXJp
YWxpemVkU2NyaXB0VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2sodjgKICAgICByZXR1cm4gVGVzdFR5
cGVkZWZzVjhJbnRlcm5hbDo6aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0ckdldHRl
cihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbW11dGFi
bGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OworICAgIHJldHVybiBpbXAtPmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpID8gaW1w
LT5pbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoKS0+ZGVzZXJpYWxpemUoKSA6IHY4OjpI
YW5kbGU8djg6OlZhbHVlPih2OE51bGwoaW5mby5HZXRJc29sYXRlKCkpKTsKK30KKworc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGltbXV0YWJsZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwpAQCAtMTI4LDYgKzE2MywxOSBAQCBzdGF0aWMgdm9pZCBpbW11dGFibGVTZXJpYWxpemVk
U2NyaXB0VmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbgogICAgIFRl
c3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJT
ZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBpbW11dGFibGVTZXJp
YWxpemVkU2NyaXB0VmFsdWVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiB2ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodmFsdWUsIGluZm8uR2V0SXNvbGF0
ZSgpKTsKKyAgICBpbXAtPnNldEltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEY6Omdl
dFB0cih2KSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBpbW11dGFibGVTZXJpYWxp
emVkU2NyaXB0VmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmltbXV0YWJs
ZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUs
IGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5
cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE0Myw2ICsxOTEsMjEgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWwKICAgICByZXR1cm4gVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6
YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRl
ckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZz
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBpbnQgdiA9IGltcC0+YXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oZWMpOworICAgIGlmIChVTkxJ
S0VMWShlYykpCisgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNv
bGF0ZSgpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKHYsIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30K
Kworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0
dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdFR5cGVkZWZz
VjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0
dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RUeXBlZGVm
cyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTU2
LDYgKzIxOSwxOSBAQCBzdGF0aWMgdm9pZCBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZQogICAgIFRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlcihuYW1lLCB2YWx1ZSwg
aW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRl
ckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFR5
cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNldEF0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgYXR0cldpdGhHZXR0ZXJF
eGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisK
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRy
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTY3LDYgKzI0MywxNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrKHY4
OjpMb2NhbAogICAgIHJldHVybiBUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbkF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5hdHRyV2l0aFNldHRlckV4
Y2VwdGlvbigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3Rh
dGljIHZvaWQgYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZz
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE4Myw2ICsyNzAsMjIgQEAgc3RhdGljIHZv
aWQgYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUKICAgICBUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbkF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9p
ZCBhdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlw
ZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1
ZSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wLT5zZXRBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbih2LCBlYyk7CisgICAgaWYgKFVOTElLRUxZKGVjKSkKKyAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuOworfQorCitzdGF0
aWMgdm9pZCBhdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5h
bWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJp
bmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdFR5cGVkZWZz
KiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xOTgs
NiArMzAxLDIxIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2sodjg6CiAgICAgcmV0dXJuIFRlc3RUeXBl
ZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcihu
YW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFR5
cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU3RyaW5nIHYgPSBpbXAtPnN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAgICAgICBy
ZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJu
IHY4U3RyaW5nKHYsIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUpOworfQor
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0VHlw
ZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJG
b3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
CiAgICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CkBAIC0yMTEsNiArMzI5LDE5IEBAIHN0YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nCiAg
ICAgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25B
dHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgc3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZz
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JF
U09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CisgICAgaW1wLT5zZXRT
dHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbih2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRp
YyB2b2lkIHN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0VHlwZWRl
ZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JN
YWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBU
ZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKQEAgLTIyMiw2ICszNTMsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjayh2ODoKICAgICByZXR1
cm4gVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25B
dHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKKyAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5zdHJpbmdBdHRyV2l0aFNldHRlckV4
Y2VwdGlvbigpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFuZGxlKTsKK30KKwor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdFR5cGVk
ZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9y
TWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBzdHJpbmdBdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOwpAQCAtMjM4LDYgKzM4MCwyMiBAQCBzdGF0aWMgdm9pZCBzdHJpbmdBdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZwogICAg
IFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0
clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHN0cmluZ0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNP
VVJDRV9WT0lEKFY4U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOworICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIGltcC0+c2V0U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24odiwg
ZWMpOworICAgIGlmIChVTkxJS0VMWShlYykpCisgICAgICAgIHNldERPTUV4Y2VwdGlvbihlYywg
aW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgc3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6
OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1l
LCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVGVzdFR5
cGVkZWZzQ29uc3RydWN0b3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRh
dGEgPSBpbmZvLkRhdGEoKTsKQEAgLTQ5OCwxOSArNjU2LDE5IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY29uc3RydWN0b3IoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogc3Rh
dGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RUeXBl
ZGVmc0F0dHJzW10gPSB7CiAgICAgLy8gQXR0cmlidXRlICd1bnNpZ25lZExvbmdMb25nQXR0cicg
KFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsidW5zaWduZWRMb25nTG9uZ0F0
dHIiLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0
ZXJDYWxsYmFjaywgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJB
dHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsidW5zaWduZWRMb25nTG9u
Z0F0dHIiLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0
dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnVuc2lnbmVkTG9u
Z0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0VHlwZWRlZnNWOElu
dGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdpbW11dGFibGVTZXJpYWxpemVk
U2NyaXB0VmFsdWUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnSW1tdXRhYmxlJykKLSAg
ICB7ImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJu
YWw6OmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVz
dFR5cGVkZWZzVjhJbnRlcm5hbDo6aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0clNl
dHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImltbXV0YWJsZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmltbXV0YWJsZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6aW1t
dXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0clNldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRl
ZnNWOEludGVybmFsOjppbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmltbXV0YWJsZVNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdUZXN0U3ViT2JqJyAoVHlwZTogJ3JlYWRvbmx5IGF0
dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJUZXN0U3ViT2JqIiwgVGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6VGVzdFR5cGVkZWZzQ29uc3RydWN0b3JHZXR0ZXIsIDAsICZWOFRlc3RTdWJPYmo6
OmluZm8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKKyAgICB7IlRlc3RTdWJPYmoiLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpUZXN0VHlw
ZWRlZnNDb25zdHJ1Y3RvckdldHRlciwgMCwgMCwgMCwgJlY4VGVzdFN1Yk9iajo6aW5mbywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAg
IC8vIEF0dHJpYnV0ZSAnYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24nIChUeXBlOiAnYXR0cmlidXRl
JyBFeHRBdHRyOiAnJykKLSAgICB7ImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwgVGVzdFR5cGVk
ZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRl
ckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
IiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0
dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uQXR0clNldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdFR5cGVkZWZz
VjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnYXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24nIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7ImF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0
ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
KyAgICB7ImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6
YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCBUZXN0
VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJF
eGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAog
ICAgIC8vIEF0dHJpYnV0ZSAnc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24nIChUeXBlOiAn
YXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAg
ICB7InN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5h
bDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RU
eXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRl
ckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdFR5cGVkZWZzVjhJbnRl
cm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnc3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24nIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7
InN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6
c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBl
ZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNh
bGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVy
bmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb25BdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsK
IAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZE1ldGhvZCBWOFRlc3RU
eXBlZGVmc01ldGhvZHNbXSA9IHsKQEAgLTUzMywxNCArNjkxLDE0IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFRlc3RUeXBlZGVmczo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhCiAgICAgcmV0dXJuIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmNvbnN0cnVjdG9y
KGFyZ3MpOwogfQogCi1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
Q29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUg
Y3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAg
ICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVs
dFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywg
IlRlc3RUeXBlZGVmcyIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBW
OFRlc3RUeXBlZGVmczo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICBWOFRlc3RUeXBlZGVm
c0F0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdFR5cGVkZWZzQXR0cnMpLAotICAgICAgICBW
OFRlc3RUeXBlZGVmc01ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0VHlwZWRlZnNNZXRo
b2RzKSwgaXNvbGF0ZSk7CisgICAgICAgIFY4VGVzdFR5cGVkZWZzTWV0aG9kcywgV1RGX0FSUkFZ
X0xFTkdUSChWOFRlc3RUeXBlZGVmc01ldGhvZHMpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBl
KTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMs
IGl0IHdpbGwgbm90IGJlIHVzZWQuCiAgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjhUZXN0VHlw
ZWRlZnM6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVt
cGxhdGU+IGluc3RhbmNlID0gZGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgpOwpAQCAtNTUxLDI1ICs3
MDksMjUgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25m
aWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRlKHY4OjoKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1
cmUgJ21ldGhvZFdpdGhTZXF1ZW5jZUFyZycKICAgICBjb25zdCBpbnQgbWV0aG9kV2l0aFNlcXVl
bmNlQXJnQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0
aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjXSA9IHsgVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4c2VxdWVuY2U8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPjo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3ZbbWV0aG9kV2l0
aFNlcXVlbmNlQXJnQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJh
d1RlbXBsYXRlKCZWOHNlcXVlbmNlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT46OmluZm8sIGN1cnJl
bnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RXaXRo
U2VxdWVuY2VBcmdTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbWV0aG9kV2l0
aFNlcXVlbmNlQXJnQXJnYywgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndik7CiAgICAgcHJvdG8t
PlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6Om1ldGhvZFdpdGhT
ZXF1ZW5jZUFyZ01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RXaXRoU2VxdWVu
Y2VBcmdTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ251bGxhYmxlQXJy
YXlBcmcnCiAgICAgY29uc3QgaW50IG51bGxhYmxlQXJyYXlBcmdBcmdjID0gMTsKLSAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBudWxsYWJsZUFycmF5QXJnQXJndltudWxsYWJs
ZUFycmF5QXJnQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1Rl
bXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbnVsbGFibGVBcnJheUFyZ0FyZ3ZbbnVsbGFibGVBcnJh
eUFyZ0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0
ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpTaWduYXR1cmU+IG51bGxhYmxlQXJyYXlBcmdTaWduYXR1cmUgPSB2ODo6U2lnbmF0
dXJlOjpOZXcoZGVzYywgbnVsbGFibGVBcnJheUFyZ0FyZ2MsIG51bGxhYmxlQXJyYXlBcmdBcmd2
KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibnVsbGFibGVBcnJheUFy
ZyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6Om51
bGxhYmxlQXJyYXlBcmdNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbnVsbGFibGVBcnJh
eUFyZ1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnc3RyaW5nQXJyYXlG
dW5jdGlvbicKICAgICBjb25zdCBpbnQgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MgPSAxOwotICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2
W3N0cmluZ0FycmF5RnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJn
dltzdHJpbmdBcnJheUZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZvLCBjdXJyZW50V29ybGRUeXBl
KSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc3RyaW5nQXJyYXlGdW5jdGlvblNp
Z25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJn
Yywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJzdHJpbmdBcnJheUZ1bmN0aW9uIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpO
ZXcoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXJyYXlGdW5jdGlvbk1ldGhvZENhbGxi
YWNrLCB2OFVuZGVmaW5lZCgpLCBzdHJpbmdBcnJheUZ1bmN0aW9uU2lnbmF0dXJlKSk7CiAKICAg
ICAvLyBDdXN0b20gU2lnbmF0dXJlICdzdHJpbmdBcnJheUZ1bmN0aW9uMicKICAgICBjb25zdCBp
bnQgc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlv
bjJBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUo
JlY4RE9NU3RyaW5nW106OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ3Zbc3RyaW5nQXJyYXlGdW5j
dGlvbjJBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxh
dGUoJlY4RE9NU3RyaW5nW106OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6Okhh
bmRsZTx2ODo6U2lnbmF0dXJlPiBzdHJpbmdBcnJheUZ1bmN0aW9uMlNpZ25hdHVyZSA9IHY4OjpT
aWduYXR1cmU6Ok5ldyhkZXNjLCBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ2MsIHN0cmluZ0FycmF5
RnVuY3Rpb24yQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN0
cmluZ0FycmF5RnVuY3Rpb24yIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVk
ZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXJyYXlGdW5jdGlvbjJNZXRob2RDYWxsYmFjaywgdjhVbmRl
ZmluZWQoKSwgc3RyaW5nQXJyYXlGdW5jdGlvbjJTaWduYXR1cmUpKTsKIApAQCAtNTc4LDIzICs3
MzYsMjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25m
aWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRlKHY4OjoKICAgICByZXR1cm4gZGVzYzsKIH0KIAot
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFR5cGVkZWZzOjpHZXRU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUp
Cit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0VHlwZWRlZnM6Okdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRX
b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7
Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQor
ICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRh
LT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVz
dWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAgICAg
ICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29w
ZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAg
ICAgICBDb25maWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZp
bmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVz
dFR5cGVkZWZzVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5
cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcChj
dXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9
CiAKLWJvb2wgVjhUZXN0VHlwZWRlZnM6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBl
KQorYm9vbCBWOFRlc3RUeXBlZGVmczo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29y
bGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5o
YXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVu
dFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhUZXN0VHlwZWRlZnM6Okhhc0luc3RhbmNlSW5BbnlX
b3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dFR5cGVkZWZzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0VHlwZWRlZnMuaAppbmRleCBlYjM4MDQ0ZGI0OWFkMDFlNTg4YzljZWZkYTU2MWYwZjZlZmE3
ZTA0Li4yNWI3YTVhM2YxMDQzNzFmMGM2ZWZjZGUxMjc0MDc2OWM4MTVhNDkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlw
ZWRlZnMuaApAQCAtNzYsNiArNzYsMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4KFRlc3RUeXBlZGVmcyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmUKICAgICBy
ZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoVGVzdFR5cGVkZWZzKiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOwor
ICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2so
aXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3Rv
cmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFp
bmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhG
YXN0KFRlc3RUeXBlZGVmcyogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIs
IFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtODgsNiArOTksMjUgQEAgaW5saW5lIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0VHlwZWRlZnMqIGltcGwsIGNvbnN0IEhvbGRl
ckNvbnRhaW5lciYKIH0KIAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBX
cmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldv
cmxkKFRlc3RUeXBlZGVmcyogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIs
IFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVy
LkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQor
ICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1h
aW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNv
bnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWlu
ZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZh
c3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdFR5cGVkZWZzID4gaW1wbCwgY29uc3QgSG9s
ZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJl
dHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJs
ZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFi
bGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRl
c3RUeXBlZGVmcyA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFw
cGFibGUqIHdyYXBwYWJsZSkKIHsKICAgICByZXR1cm4gdG9WOEZhc3QoaW1wbC5nZXQoKSwgY29u
dGFpbmVyLCB3cmFwcGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRE9NRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3Rv
cmUuaAppbmRleCBjMDUwMzNmMGI2Y2E1YzM2OThhYTc2NDU4Mzk2ZmFhM2MxMmYwZWE2Li5iNDAw
ZWUzZDMwZjJhOTVhOTE2OGY3ZjliYzE1MjcwNGVmNjdiNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaApAQCAtODQsNiArODQsMTYgQEAgcHVibGljOgogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gZ2V0V3JhcHBlckZvck1haW5Xb3JsZChUKiBvYmplY3QpCisgICAgeworICAgICAg
ICBpZiAobWFpbldvcmxkV3JhcHBlcklzU3RvcmVkSW5PYmplY3Qob2JqZWN0KSAmJiBpc01haW5X
b3JsZE9iamVjdChvYmplY3QpKSB7CisgICAgICAgICAgICBpZiAoTElLRUxZKCFET01XcmFwcGVy
V29ybGQ6Omlzb2xhdGVkV29ybGRzRXhpc3QoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGdl
dFdyYXBwZXJGcm9tT2JqZWN0KG9iamVjdCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1h
aW5Xb3JsZFN0b3JlKCktPmdldChvYmplY3QpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CiAgICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlcihUKiBvYmplY3QsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIGNvbnN0IFdyYXBwZXJD
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIHsKICAgICAgICAgaWYgKG1haW5Xb3Js
ZFdyYXBwZXJJc1N0b3JlZEluT2JqZWN0KG9iamVjdCkgJiYgaXNNYWluV29ybGRPYmplY3Qob2Jq
ZWN0KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db25m
aWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJh
dGlvbi5jcHAKaW5kZXggNWZlN2JjZmFjZGRlNTY1NzJiNWUyMGIwZWIzNjdlNTYwZGVjYWU5ZC4u
NTYxY2FiZDgyYjRjYjM0NjM0ZTEyMDFjNThkYWU1MGVkZmU0OWE0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uY3BwCkBAIC0zMywxMCAr
MzMsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFY4RE9NQ29uZmlndXJhdGlv
bjo6YmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRl
PiBpbnN0YW5jZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvdHlwZSwgY29u
c3QgQmF0Y2hlZEF0dHJpYnV0ZSogYXR0cmlidXRlcywgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3ZvaWQgVjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZp
Z3VyZUF0dHJpYnV0ZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG90eXBlLCBjb25zdCBCYXRjaGVkQXR0
cmlidXRlKiBhdHRyaWJ1dGVzLCBzaXplX3QgYXR0cmlidXRlQ291bnQsIHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBhdHRyaWJ1dGVDb3VudDsgKytpKQotICAgICAgICBjb25maWd1cmVB
dHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvdHlwZSwgYXR0cmlidXRlc1tpXSwgaXNvbGF0ZSk7Cisg
ICAgICAgIGNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG90eXBlLCBhdHRyaWJ1dGVz
W2ldLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogdm9pZCBWOERPTUNvbmZpZ3Vy
YXRpb246OmJhdGNoQ29uZmlndXJlQ29uc3RhbnRzKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGZ1bmN0aW9uRGVzY3JpcHRvciwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+
IHByb3RvdHlwZSwgY29uc3QgQmF0Y2hlZENvbnN0YW50KiBjb25zdGFudHMsIHNpemVfdCBjb25z
dGFudENvdW50LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBW
OERPTUNvbmZpZ3VyYXRpb246OmJhdGNoQ29uZmlndXJlQ2FsbGJhY2tzKHY4OjpIYW5kbGU8djg6
Ok9iamVjdFRlbXBsYXRlPgogfQogCiB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gVjhET01Db25m
aWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gZnVuY3Rpb25EZXNjcmlwdG9yLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcGFyZW50Q2xhc3MsCi0gICAgc2l6
ZV90IGZpZWxkQ291bnQsIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUqIGF0dHJpYnV0ZXMsIHNpemVf
dCBhdHRyaWJ1dGVDb3VudCwgY29uc3QgQmF0Y2hlZE1ldGhvZCogY2FsbGJhY2tzLCBzaXplX3Qg
Y2FsbGJhY2tDb3VudCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAgc2l6ZV90IGZpZWxkQ291
bnQsIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUqIGF0dHJpYnV0ZXMsIHNpemVfdCBhdHRyaWJ1dGVD
b3VudCwgY29uc3QgQmF0Y2hlZE1ldGhvZCogY2FsbGJhY2tzLCBzaXplX3QgY2FsbGJhY2tDb3Vu
dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlw
ZSkKIHsKICAgICBmdW5jdGlvbkRlc2NyaXB0b3ItPlNldENsYXNzTmFtZSh2ODo6U3RyaW5nOjpO
ZXdTeW1ib2woaW50ZXJmYWNlTmFtZSkpOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxh
dGU+IGluc3RhbmNlID0gZnVuY3Rpb25EZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCk7CkBA
IC03MCw3ICs3MCw3IEBAIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBWOERPTUNvbmZpZ3VyYXRp
b246OmNvbmZpZ3VyZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4CiAgICAgfQogCiAgICAgaWYg
KGF0dHJpYnV0ZUNvdW50KQotICAgICAgICBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXMoaW5zdGFu
Y2UsIGZ1bmN0aW9uRGVzY3JpcHRvci0+UHJvdG90eXBlVGVtcGxhdGUoKSwgYXR0cmlidXRlcywg
YXR0cmlidXRlQ291bnQsIGlzb2xhdGUpOworICAgICAgICBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0
ZXMoaW5zdGFuY2UsIGZ1bmN0aW9uRGVzY3JpcHRvci0+UHJvdG90eXBlVGVtcGxhdGUoKSwgYXR0
cmlidXRlcywgYXR0cmlidXRlQ291bnQsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAg
IHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVy
ZTo6TmV3KGZ1bmN0aW9uRGVzY3JpcHRvcik7CiAgICAgaWYgKGNhbGxiYWNrQ291bnQpCiAgICAg
ICAgIGJhdGNoQ29uZmlndXJlQ2FsbGJhY2tzKGZ1bmN0aW9uRGVzY3JpcHRvci0+UHJvdG90eXBl
VGVtcGxhdGUoKSwgZGVmYXVsdFNpZ25hdHVyZSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6RG9udERlbGV0ZSksIGNhbGxiYWNrcywgY2FsbGJhY2tDb3VudCwgaXNvbGF0
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3Vy
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5o
CmluZGV4IDhmOWM5MWEwYWEzMGY5ODQ0MDg1Yjg3MGI4ZWM5YTVkY2UyYTFjZmYuLmQ0MDhiMDk5
Yzk5MDUxOWFlY2I0NWViMzQ4ODI3ODU1NjcwYzQ5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5oCkBAIC00NywxMyArNDcsMTUgQEAgcHVi
bGljOgogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBuYW1lOwogICAgICAgICB2ODo6QWNjZXNz
b3JHZXR0ZXIgZ2V0dGVyOwogICAgICAgICB2ODo6QWNjZXNzb3JTZXR0ZXIgc2V0dGVyOworICAg
ICAgICB2ODo6QWNjZXNzb3JHZXR0ZXIgZ2V0dGVyRm9yTWFpbldvcmxkOworICAgICAgICB2ODo6
QWNjZXNzb3JTZXR0ZXIgc2V0dGVyRm9yTWFpbldvcmxkOwogICAgICAgICBXcmFwcGVyVHlwZUlu
Zm8qIGRhdGE7CiAgICAgICAgIHY4OjpBY2Nlc3NDb250cm9sIHNldHRpbmdzOwogICAgICAgICB2
ODo6UHJvcGVydHlBdHRyaWJ1dGUgYXR0cmlidXRlOwogICAgICAgICBib29sIG9uUHJvdG90eXBl
OwogICAgIH07CiAKLSAgICBzdGF0aWMgdm9pZCBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXModjg6
OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0
ZT4sIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUqLCBzaXplX3QgYXR0cmlidXRlQ291bnQsIHY4OjpJ
c29sYXRlKik7CisgICAgc3RhdGljIHZvaWQgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHY4OjpI
YW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+
LCBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiwgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LCB2ODo6SXNv
bGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSk7CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBPYmplY3RPclRlbXBsYXRlPgogICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjb25maWd1
cmVBdHRyaWJ1dGUodjg6OkhhbmRsZTxPYmplY3RPclRlbXBsYXRlPiBpbnN0YW5jZSwgdjg6Okhh
bmRsZTxPYmplY3RPclRlbXBsYXRlPiBwcm90b3R5cGUsIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSwgdjg6Oklzb2xhdGUqKQpAQCAtNjYsNiArNjgsMjUgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUuYXR0cmlidXRlKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBPYmplY3RPclRlbXBsYXRlPgorICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjb25maWd1cmVBdHRy
aWJ1dGUodjg6OkhhbmRsZTxPYmplY3RPclRlbXBsYXRlPiBpbnN0YW5jZSwgdjg6OkhhbmRsZTxP
YmplY3RPclRlbXBsYXRlPiBwcm90b3R5cGUsIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUmIGF0dHJp
YnV0ZSwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCisg
ICAgeworICAgICAgICB2ODo6QWNjZXNzb3JHZXR0ZXIgZ2V0dGVyID0gYXR0cmlidXRlLmdldHRl
cjsKKyAgICAgICAgdjg6OkFjY2Vzc29yU2V0dGVyIHNldHRlciA9IGF0dHJpYnV0ZS5zZXR0ZXI7
CisgICAgICAgIGlmIChjdXJyZW50V29ybGRUeXBlID09IE1haW5Xb3JsZCkgeworICAgICAgICAg
ICAgaWYgKGF0dHJpYnV0ZS5nZXR0ZXJGb3JNYWluV29ybGQpCisgICAgICAgICAgICAgICAgZ2V0
dGVyID0gYXR0cmlidXRlLmdldHRlckZvck1haW5Xb3JsZDsKKyAgICAgICAgICAgIGlmIChhdHRy
aWJ1dGUuc2V0dGVyRm9yTWFpbldvcmxkKQorICAgICAgICAgICAgICAgIHNldHRlciA9IGF0dHJp
YnV0ZS5zZXR0ZXJGb3JNYWluV29ybGQ7CisgICAgICAgIH0KKyAgICAgICAgKGF0dHJpYnV0ZS5v
blByb3RvdHlwZSA/IHByb3RvdHlwZSA6IGluc3RhbmNlKS0+U2V0QWNjZXNzb3Iodjg6OlN0cmlu
Zzo6TmV3U3ltYm9sKGF0dHJpYnV0ZS5uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXR0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpFeHRlcm5hbDo6TmV3KGF0dHJpYnV0ZS5kYXRh
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlLnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUu
YXR0cmlidXRlKTsKKyAgICB9CisKICAgICAvLyBCYXRjaGVkQ29uc3RhbnQgdHJhbnNsYXRlcyBp
bnRvIGNhbGxzIHRvIFNldCgpIGZvciBzZXR0aW5nIHVwIGFuIG9iamVjdCdzCiAgICAgLy8gY29u
c3RhbnRzLiBJdCBzZXRzIHRoZSBjb25zdGFudCBvbiBib3RoIHRoZSBGdW5jdGlvblRlbXBsYXRl
IGFuZCB0aGUKICAgICAvLyBPYmplY3RUZW1wbGF0ZS4gUHJvcGVydHlBdHRyaWJ1dGVzIGlzIGFs
d2F5cyBSZWFkT25seS4KQEAgLTg0LDcgKzEwNSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2
b2lkIGJhdGNoQ29uZmlndXJlQ2FsbGJhY2tzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRl
Piwgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiwgdjg6OlByb3BlcnR5QXR0cmlidXRlLCBjb25z
dCBCYXRjaGVkTWV0aG9kKiwgc2l6ZV90IGNhbGxiYWNrQ291bnQsIHY4OjpJc29sYXRlKik7CiAK
LSAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGNvbmZpZ3VyZVRlbXBsYXRlKHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiwgY29uc3QgY2hhciogaW50ZXJmYWNl
TmFtZSwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHBhcmVudENsYXNzLCBz
aXplX3QgZmllbGRDb3VudCwgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSosIHNpemVfdCBhdHRyaWJ1
dGVDb3VudCwgY29uc3QgQmF0Y2hlZE1ldGhvZCosIHNpemVfdCBjYWxsYmFja0NvdW50LCB2ODo6
SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gY29uZmlndXJl
VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+LCBjb25zdCBjaGFy
KiBpbnRlcmZhY2VOYW1lLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcGFy
ZW50Q2xhc3MsIHNpemVfdCBmaWVsZENvdW50LCBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiwgc2l6
ZV90IGF0dHJpYnV0ZUNvdW50LCBjb25zdCBCYXRjaGVkTWV0aG9kKiwgc2l6ZV90IGNhbGxiYWNr
Q291bnQsIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA1OTViZGY4OTlmZGZjZjYzYTMxZTkwMjBk
MGUwOGVhMDEyY2I3NmU1Li43NTU3MjJiNGZiNjE1NmI1OGM4MDRjY2U4NTIwMzk2YjUzMjdiOGEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5k
b3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERP
TVdpbmRvd0N1c3RvbS5jcHAKQEAgLTYxMSw0ICs2MTEsOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOChET01XaW5kb3cqIHdpbmRvdywgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbgogICAgIHJldHVybiBnbG9iYWw7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
Rm9yTWFpbldvcmxkKERPTVdpbmRvdyogd2luZG93LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgcmV0dXJuIHRvVjgo
d2luZG93LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhF
dmVudFRhcmdldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhFdmVudFRhcmdldEN1c3RvbS5jcHAKaW5kZXggZTc4OTZjYzExMTk1MWZiODgzOTA2MWZjOWY1
Y2U0NjdiOWQ4ODk5Ny4uM2Y3OWNhN2QwYmI4YmQwNjRiOWE4YjZhNDI3MmE3N2UzYzkyMzNmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRUYXJn
ZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2
ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAtNTMsNiArNTMsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjgoRXZlbnRUYXJnZXQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db24KICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjhGb3JNYWluV29ybGQoRXZlbnRUYXJnZXQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICByZXR1
cm4gdG9WOChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiAjdW5kZWYgVFJZ
X1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAK
aW5kZXggZTExOWVlNWJmMDE3Y2JiNTQ1ZmEyNDM4ZTExNTJiY2M1Y2Y2NmIyZS4uNDY3ZTFhNmJm
YWI2M2VmMjkyYjM1OWUzMjc2MWYwMjY1YWE4YTY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwCkBAIC0xMDEsNiArMTAx
LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KElEQkFueSogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoSURCQW55KiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCit7CisgICAgcmV0dXJuIHRvVjgoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhNaWNyb0RhdGFJdGVtVmFsdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWljcm9EYXRhSXRlbVZhbHVlQ3VzdG9tLmNwcAppbmRleCA5NTNi
YmVjMTUwN2JkMjQ2Y2JmN2M3M2Q5ZDQxYjE0Y2RkNzllMmQyLi4yNjBhZTc4OWFhZTA5YTlhZTgy
ZDZlOWZmNTM5MDczMzYxNjczYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhNaWNyb0RhdGFJdGVtVmFsdWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1pY3JvRGF0YUl0ZW1WYWx1ZUN1c3RvbS5jcHAK
QEAgLTQ4LDYgKzQ4LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KE1pY3JvRGF0YUl0
ZW1WYWx1ZSogaXRlbVZhbHVlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+CiAgICAgcmV0dXJuIHY4
U3RyaW5nKGl0ZW1WYWx1ZS0+Z2V0U3RyaW5nKCksIGlzb2xhdGUpOwogfQogCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChNaWNyb0RhdGFJdGVtVmFsdWUqIGl0ZW1WYWx1
ZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQoreworICAgIHJldHVybiB0b1Y4KGl0ZW1WYWx1ZSwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1JQ1JPREFUQSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4
dEN1c3RvbS5jcHAKaW5kZXggOTA2YTE0ZDNhYjc0YWMwN2NjZDA3MzJmYzBhNzMwOTE0ODJlYjlk
Yy4uNzJmNmUzZDRjMDkwMzQwZTUwZGE3YWQ4NWRlOGM4MWQxNmI3M2YwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4
dEN1c3RvbS5jcHAKQEAgLTE0MCw2ICsxNDAsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjgoV29ya2VyQ29udGV4dCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkMK
ICAgICByZXR1cm4gZ2xvYmFsOwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1h
aW5Xb3JsZChXb3JrZXJDb250ZXh0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgcmV0dXJuIHRvVjgoaW1w
bCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193694</attachid>
            <date>2013-03-18 16:57:33 -0700</date>
            <delta_ts>2013-03-19 10:43:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111417-20130319005324.patch</filename>
            <type>text/plain</type>
            <size>393166</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRkNzJhZmYzYjFjNjM3
NGQxMDg2MWRiOGUwYmI1NDRmYjE4NTM2Yi4uYzkzNDA0YTY1ZmUzZjM0ZTgxMzlkNzhmMTQzY2Zj
Njg4MTg3NjZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5MyBAQAorMjAxMy0wMy0xOCAgTWFy
amEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBBZGQgbWFj
aGluZXJ5IGZvciBnZW5lcmF0aW5nIHNwZWNpYWxpemVkIGJpbmRpbmdzIGZvciB0aGUgbWFpbiB3
b3JsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEx
NDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9jaGVuIEVpc2luZ2VyLgorCisgICAgICAgIFRo
ZSBuZXcgc3BlY2lhbGl6ZWQgYmluZGluZ3Mgd2lsbCBiZSBmYXN0ZXIsIGJlY2F1c2UgdGhleSBk
b24ndCBuZWVkIHRvCisgICAgICAgIGRvIHRoZSAibWFpbiB3b3JsZCwgaXNvbGF0ZWQgd29ybGQg
b3IgYSB3b3JrZXIiIGNoZWNrLCBidXQgY2FuIHJpZ2h0CisgICAgICAgIGF3YXkgYXNzdW1lIHRo
YXQgd2UncmUgaW4gdGhlIG1haW4gd29ybGQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBnZW5lcmF0
ZXMgbWFpbiB3b3JsZCBiaW5kaW5ncyBmb3IgZ2V0dGVycyBhbmQgc2V0dGVycy4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKHVwZGF0ZWQgZXhpc3RpbmcgYmluZGluZ3MgdGVzdHMpLgorCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5l
cmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJDYWxsYmFjayk6
CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVO
b3JtYWxBdHRyU2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRyU2V0
dGVyKToKKyAgICAgICAgKEdlbmVyYXRlTmFtZWRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChHZW5l
cmF0ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAoR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcpOgorICAgICAgICAoQ3JlYXRlQ3VzdG9tU2ln
bmF0dXJlKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9h
dDY0QXJyYXk6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RmxvYXQ2NEFycmF5
OjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4Rmxv
YXQ2NEFycmF5Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4
Y2l0aW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoVGVzdEFjdGl2ZURP
TU9iamVjdFY4SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9iamVj
dFY4SW50ZXJuYWw6OmV4Y2l0aW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEFj
dGl2ZURPTU9iamVjdFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURP
TU9iamVjdDo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9N
T2JqZWN0OjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9y
TWFpbldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21O
YW1lZEdldHRlcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXI6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4
RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEV2ZW50Q29u
c3RydWN0b3JWOEludGVybmFsOjphdHRyMUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAg
ICAoVGVzdEV2ZW50Q29uc3RydWN0b3JWOEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3JWOEludGVy
bmFsOjphdHRyMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dEV2ZW50Q29uc3RydWN0b3JWOEludGVybmFsOjphdHRyMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3Vy
ZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRl
c3RFdmVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRl
c3RFdmVudENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4
VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRU
YXJnZXQ6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50VGFyZ2V0
OjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50VGFyZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdEV4Y2VwdGlvblY4SW50ZXJuYWw6Om5hbWVBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFRlc3RFeGNlcHRpb25WOEludGVybmFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RFeGNlcHRpb25WOEludGVybmFsOjpuYW1lQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29uZmlndXJlVjhUZXN0RXhjZXB0aW9uVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0RXhjZXB0aW9uOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RF
eGNlcHRpb246Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWlu
V29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZh
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBs
ZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAg
ICAoVGVzdEludGVyZmFjZVY4SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVy
ZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0ckF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJ
bnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0
YXRpY0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyU2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVy
bmFsOjpzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50
YWxTdHIxQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50
ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyMUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3Vw
cGxlbWVudGFsU3RyMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRyR2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJu
YWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIyQXR0clNldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VW
OEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50
YWxTdHIzQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0ckdldHRlckZvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3Vw
cGxlbWVudGFsTm9kZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTm9kZUF0dHJTZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJu
YWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RJbnRlcmZh
Y2VUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6OkdldFRlbXBs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6SGFzSW5zdGFuY2UpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRlbXBs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6Okdl
dFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0
cnVjdG9yQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZp
Z3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3ROYW1lZENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0
Tm9kZVRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6OkdldFRlbXBsYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6Okhhc0luc3RhbmNlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjpyZWFkT25seUxvbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChUZXN0
T2JqVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVh
ZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlTdHJpbmdBdHRyQXR0ckdldHRlckZv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9u
bHlTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVRlc3RPYmpBdHRyQXR0ckdldHRlckZv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9u
bHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljUmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0
ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0
YXRpY1JlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0cmluZ0F0dHJBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpz
dGF0aWNTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNTdHJpbmdBdHRyQXR0clNldHRlckZv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGlj
U3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW51bUF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbnVtQXR0ckF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6ZW51bUF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjplbnVtQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c2hvcnRBdHRyQXR0ckdldHRl
ckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c2hv
cnRBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpzaG9ydEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzaG9ydEF0dHJBdHRyU2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OnVuc2lnbmVkU2hvcnRBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRTaG9ydEF0dHJBdHRyR2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnVu
c2lnbmVkU2hvcnRBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRTaG9ydEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmxvbmdB
dHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6bG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmxvbmdBdHRyQXR0clNldHRlckZvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0dHJBdHRy
U2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bG9u
Z0xvbmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6bG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25n
QXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZExvbmdM
b25nQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRy
QXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6c3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0ckF0dHJTZXR0ZXJGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJB
dHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OnRlc3RPYmpBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnRl
c3RPYmpBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6dGVzdE9iakF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OlhNTE9iakF0dHJBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpY
TUxPYmpBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJTZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6Y3JlYXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjcmVhdGVBdHRyU2V0dGVyRm9y
TWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjcmVhdGVB
dHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRy
QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0
ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0ckdldHRlckZvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkSW50ZWdy
YWxBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRJbnRlZ3JhbEF0dHJB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjpyZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVuc2lnbmVk
SW50ZWdyYWxBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVW5zaWduZWRJ
bnRlZ3JhbEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0ckdldHRlckZv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVj
dGVkQm9vbGVhbkF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0clNldHRl
ckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVm
bGVjdGVkQm9vbGVhbkF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZs
ZWN0ZWRVUkxBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRVUkxBdHRyQXR0clNldHRlckZvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVk
VVJMQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0ckdldHRl
ckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVm
bGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21JbnRl
Z3JhbEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJl
ZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlckZvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3Vz
dG9tQm9vbGVhbkF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRy
QXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dHlwZWRBcnJheUF0dHJB
dHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjp0eXBlZEFycmF5QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dHlwZWRBcnJheUF0dHJBdHRyU2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp0eXBl
ZEFycmF5QXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjphdHRy
V2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25B
dHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJF
eGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldp
dGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRy
U2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJH
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0
aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y3VzdG9tQXR0ckF0dHJHZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y3Vz
dG9tQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlckZv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0
clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlc0F0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRl
ckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0
aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFp
c2VzQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckZvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1
dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlw
dEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNB
bmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRD
YWxsU3RhY2tBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0
cmlidXRlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlTG9uZ0F0dHJBdHRyR2V0dGVyRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJh
bmdlTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nQXR0ckF0dHJTZXR0ZXJG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuZm9y
Y2VkUmFuZ2VMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0F0
dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3Jj
ZWRSYW5nZVVuc2lnbmVkTG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0
ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZUxvbmdMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFu
Z2VMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nTG9uZ0F0dHJBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjplbmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlVW5z
aWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nTG9uZ0F0dHJB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuZm9y
Y2VkUmFuZ2VVbnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRy
MUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjFBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
Ojpjb25kaXRpb25hbEF0dHIxQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIyQXR0ckdldHRl
ckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29u
ZGl0aW9uYWxBdHRyMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMkF0dHJTZXR0ZXJGb3JN
YWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlv
bmFsQXR0cjJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjNBdHRyR2V0dGVyRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0
dHIzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIzQXR0clNldHRlckZvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyM0F0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6Y2FjaGVkQXR0cmlidXRlMUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTFBdHRyR2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjYWNoZWRBdHRyaWJ1dGUyQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjphbnlBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjphbnlBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmFueUF0dHJpYnV0
ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OmFueUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0
ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0
cjFBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRp
bWVBdHRyMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0
UnVudGltZUF0dHIyQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0clNldHRlckNhbGxiYWNr
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbmFi
bGVkUGVyQ29udGV4dEF0dHIxQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjFBdHRy
U2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0
dHIyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0clNldHRlckNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4
dEF0dHIyQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZmxvYXRBcnJh
eUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OmZsb2F0QXJyYXlBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyU2V0dGVyRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFycmF5
QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpk
b3VibGVBcnJheUF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb250ZW50RG9jdW1lbnRB
dHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjpjb250ZW50RG9jdW1lbnRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0dHJHZXR0ZXJG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om11dGFi
bGVQb2ludEF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50QXR0clNldHRlckZvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50QXR0clNl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjppbW11dGFibGVQb2ludEF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50QXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpp
bW11dGFibGVQb2ludEF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50QXR0clNldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJhd2JlcnJ5
QXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6c3RyYXdiZXJyeUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJyeUF0dHJTZXR0ZXJGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmF3YmVycnlB
dHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OnN0cmljdEZsb2F0QXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRyR2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0
cmljdEZsb2F0QXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmRlc2NyaXB0aW9uQXR0ckdl
dHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
ZGVzY3JpcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6aWRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0clNl
dHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
aWRBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6Omhhc2hBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpoYXNoQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZXBsYWNlYWJsZUF0
dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OnJlcGxhY2VhYmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZURv
dWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlRG91YmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpu
dWxsYWJsZUxvbmdBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdBdHRyaWJ1dGVBdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6Om51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlQm9vbGVhbkF0dHJpYnV0
ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldv
cmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmlu
Z0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0
clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6
Okhhc0luc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE9iajo6aW5zdGFsbFBlckNv
bnRleHRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T2JqLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6
dmFsdWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjp2YWx1ZUF0dHJHZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6dmFsdWVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOElu
dGVybmFsOjp2YWx1ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6cmVh
ZG9ubHlWYWx1ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnJlYWRvbmx5VmFsdWVB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0ckdl
dHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkVmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0clNldHRlckZvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJ
bnRlcm5hbDo6Y2FjaGVkVmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJu
YWw6OnBvcnRzQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6cG9ydHNBdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRSZWFkb25seVZhbHVlQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVGVtcGxhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6CisgICAgICAg
IChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQpOgorICAgICAgICAoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNW
OEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9u
Z0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0
ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOElu
dGVybmFsOjppbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6
aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0clNldHRlckZvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjppbW11dGFibGVTZXJpYWxp
emVkU2NyaXB0VmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25B
dHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRl
ZnNWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25B
dHRyU2V0dGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmlu
Z0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0
dHJTZXR0ZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6
c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uQXR0clNldHRlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRl
ZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhU
ZXN0VHlwZWRlZnM6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdFR5cGVk
ZWZzOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdFR5cGVkZWZzLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKToKKyAgICAgICAgKERPTURh
dGFTdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVBdHRy
aWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJl
VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5oOgor
ICAgICAgICAoQmF0Y2hlZEF0dHJpYnV0ZSk6CisgICAgICAgIChWOERPTUNvbmZpZ3VyYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6VjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVBdHRyaWJ1
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50VGFyZ2V0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWljcm9EYXRhSXRlbVZhbHVlQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUp
OgorCiAyMDEzLTAzLTE4ICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFt2OF0gU3VwcHJlc3MgYmluZGluZyBpbnRlZ3JpdHkgY2hlY2sgb2YgSFRNTENvbnRlbnRF
bGVtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbQppbmRleCBkZTIxNDU1YWUwNjc3NWI0YmIzM2YxYzczMDgzOTQ1ZTI1NTM2YTAx
Li5jNzA2ODIyOTNhYWU4NzRhNmZhNzY5ODliZDcxMjU5MDE3NTAzYjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNTMx
LDEyICs1MzEsMTkgQEAgRU5ECiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsK
IGNsYXNzICR7bmF0aXZlVHlwZX07CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOCgke25hdGl2
ZVR5cGV9Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKik7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZCgke25hdGl2ZVR5
cGV9Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
Kik7CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgog
aW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdCgke25hdGl2ZVR5cGV9KiBpbXBs
LCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKikKIHsKICAgICBy
ZXR1cm4gdG9WOChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRl
KCkpOwogfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJs
ZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoJHtu
YXRpdmVUeXBlfSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBw
YWJsZSopCit7CisgICAgcmV0dXJuIHRvVjhGb3JNYWluV29ybGQoaW1wbCwgY29udGFpbmVyLkhv
bGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KIEVORAogICAgIH0gZWxzZSB7CiAK
QEAgLTU3NCw2ICs1ODEsMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KCR7
bmF0aXZlVHlwZX0qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3IKICAgICByZXR1cm4g
d3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoJHtuYXRpdmVUeXBlfSogaW1wbCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBp
ZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xh
dGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpn
ZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiAkcmV0dXJuaW5nV3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBs
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJD
b250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOEZhc3QoJHtuYXRpdmVUeXBlfSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250
YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtNTg0LDYgKzYwMiwyNSBAQCBpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KCR7bmF0aXZlVHlwZX0qIGltcGwsIGNv
bnN0IEhvbGRlckNvbnRhaW5lcgogICAgICAgICByZXR1cm4gJHJldHVybmluZ1dyYXBwZXI7CiAg
ICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNv
bGF0ZSgpKTsKIH0KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFw
cGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxk
KCR7bmF0aXZlVHlwZX0qIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBX
cmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5lci5H
ZXRJc29sYXRlKCkpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAg
ICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWlu
V29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
ICRyZXR1cm5pbmdXcmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xk
ZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRl
ckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCAke25hdGl2ZVR5cGV9ID4gaW1wbCwg
Y29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQor
eworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIs
IHdyYXBwYWJsZSk7Cit9CisKIEVORAogICAgIH0KIApAQCAtODg3LDYgKzkyNCw3IEBAIHN1YiBH
ZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJDYWxsYmFjawogewogICAgIG15ICRhdHRyaWJ1dGUgPSBz
aGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CisgICAgbXkgJGZvck1haW5Xb3JsZFN1
ZmZpeCA9IHNoaWZ0OwogCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1l
OwogICAgIG15ICR2OEludGVyZmFjZU5hbWUgPSAiVjgkaW50ZXJmYWNlTmFtZSI7CkBAIC04OTYs
MTMgKzkzNCwxMyBAQCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyQ2FsbGJhY2sKICAgICBt
eSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25h
bFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50
ZXJuYWxzLCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKIAotICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAic3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiAke2F0dHJOYW1lfUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbylcbiIpOworICAgIHB1
c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAic3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAk
e2F0dHJOYW1lfUF0dHJHZXR0ZXJDYWxsYmFjayR7Zm9yTWFpbldvcmxkU3VmZml4fSh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbylcbiIpOwog
ICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAie1xuIik7CiAgICAgcHVzaChAaW1wbENv
bnRlbnRJbnRlcm5hbHMsIEdlbmVyYXRlRmVhdHVyZU9ic2VydmF0aW9uKCRhdHRyRXh0LT57IlY4
TWVhc3VyZUFzIn0pKTsKICAgICBpZiAoSGFzQ3VzdG9tR2V0dGVyKCRhdHRyRXh0KSkgewogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gJHt2OEludGVyZmFj
ZU5hbWV9Ojoke2F0dHJOYW1lfUF0dHJHZXR0ZXJDdXN0b20obmFtZSwgaW5mbyk7XG4iKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1
cm4gJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlcihuYW1l
LCBpbmZvKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICBy
ZXR1cm4gJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlciR7
Zm9yTWFpbldvcmxkU3VmZml4fShuYW1lLCBpbmZvKTtcbiIpOwogICAgIH0KICAgICBwdXNoKEBp
bXBsQ29udGVudEludGVybmFscywgIn1cblxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRl
cm5hbHMsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwpAQCAtOTEyLDYgKzk1MCw3IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0
ZXIKIHsKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZSA9IHNo
aWZ0OworICAgIG15ICRmb3JNYWluV29ybGRTdWZmaXggPSBzaGlmdDsKIAogICAgIG15ICRpbnRl
cmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKICAgICBteSAkdjhJbnRlcmZhY2VOYW1lID0g
IlY4JGludGVyZmFjZU5hbWUiOwpAQCAtOTMxLDcgKzk3MCw3IEBAIHN1YiBHZW5lcmF0ZU5vcm1h
bEF0dHJHZXR0ZXIKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+
R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwogICAgIHB1
c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywg
PDxFTkQpOwotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2F0dHJOYW1lfUF0dHJHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7YXR0ck5hbWV9QXR0ckdldHRlciR7
Zm9yTWFpbldvcmxkU3VmZml4fSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKIEVORAogICAgIGlmICgkc3ZnTmF0aXZlVHlwZSkgewpA
QCAtMTExMSw3ICsxMTUwLDcgQEAgRU5ECiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOCRh
dHRyVHlwZS5oIik7CiAgICAgICAgIG15ICRzdmdOYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3It
PkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigkYXR0clR5cGUpOwogICAgICAgICAjIENvbnZlcnQg
ZnJvbSBhYnN0cmFjdCBTVkdQcm9wZXJ0eSB0byByZWFsIHR5cGUsIHNvIHRoZSByaWdodCB0b0pT
KCkgbWV0aG9kIGNhbiBiZSBpbnZva2VkLgotICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVy
bmFscywgIiAgICByZXR1cm4gdG9WOEZhc3Qoc3RhdGljX2Nhc3Q8JHN2Z05hdGl2ZVR5cGUqPigk
cmVzdWx0KSwgaW5mbywgaW1wKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVy
bmFscywgIiAgICByZXR1cm4gdG9WOEZhc3QkZm9yTWFpbldvcmxkU3VmZml4KHN0YXRpY19jYXN0
PCRzdmdOYXRpdmVUeXBlKj4oJHJlc3VsdCksIGluZm8sIGltcCk7XG4iKTsKICAgICB9IGVsc2lm
ICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGF0dHJUeXBlKSBhbmQg
bm90ICRpbnRlcmZhY2VOYW1lID1+IC9MaXN0JC8pIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIlY4JGF0dHJUeXBlLmgiKTsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNWR1Byb3Bl
cnR5VGVhck9mZi5oIik7CkBAIC0xMTQ5LDcgKzExODgsNyBAQCBFTkQKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAkd3JhcHBlZFZhbHVlID0gIldURjo6Z2V0UHRyKCR7dGVhck9m
ZlR5cGV9OjpjcmVhdGUoJHJlc3VsdCkpIjsKICAgICAgICAgfQotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudEludGVybmFscywgIiAgICByZXR1cm4gdG9WOEZhc3QoJHdyYXBwZWRWYWx1ZSwgaW5m
bywgaW1wKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICBy
ZXR1cm4gdG9WOEZhc3QkZm9yTWFpbldvcmxkU3VmZml4KCR3cmFwcGVkVmFsdWUsIGluZm8sIGlt
cCk7XG4iKTsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIk1l
c3NhZ2VQb3J0QXJyYXkiKSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJNZXNzYWdlUG9y
dC5oIik7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOE1lc3NhZ2VQb3J0LmgiKTsKQEAg
LTExNjEsNyArMTIwMCw3IEBAIEVORAogICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHNDb3B5KCpw
b3J0cyk7CiAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gcG9ydEFycmF5ID0gdjg6OkFycmF5OjpO
ZXcocG9ydHNDb3B5LnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb3J0c0Nv
cHkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHBvcnRBcnJheS0+U2V0KHY4SW50ZWdlcihpLCBpbmZv
LkdldElzb2xhdGUoKSksIHRvVjhGYXN0KHBvcnRzQ29weVtpXS5nZXQoKSwgaW5mbywgaW1wKSk7
CisgICAgICAgIHBvcnRBcnJheS0+U2V0KHY4SW50ZWdlcihpLCBpbmZvLkdldElzb2xhdGUoKSks
IHRvVjhGYXN0JGZvck1haW5Xb3JsZFN1ZmZpeChwb3J0c0NvcHlbaV0uZ2V0KCksIGluZm8sIGlt
cCkpOwogICAgIHJldHVybiBwb3J0QXJyYXk7CiBFTkQKICAgICB9IGVsc2lmICgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPnR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIgJiYgJGF0dHJFeHQt
PnsiQ2FjaGVkQXR0cmlidXRlIn0pIHsKQEAgLTExNzMsNyArMTIxMiw3IEBAIEVORAogICAgIHJl
dHVybiB2YWx1ZTsKIEVORAogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
SW50ZXJuYWxzLCAiICAgIHJldHVybiAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZSwgJHJlc3VsdCwgImluZm8uSG9sZGVyKCkiLCAiaW5mby5HZXRJc29sYXRlKCkiLCAi
aW5mbyIsICJpbXAiLCAiUmV0dXJuVW5zYWZlSGFuZGxlIikuIjtcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgk
YXR0cmlidXRlLT5zaWduYXR1cmUsICRyZXN1bHQsICJpbmZvLkhvbGRlcigpIiwgImluZm8uR2V0
SXNvbGF0ZSgpIiwgImluZm8iLCAiaW1wIiwgIlJldHVyblVuc2FmZUhhbmRsZSIsICRmb3JNYWlu
V29ybGRTdWZmaXgpLiI7XG4iKTsKICAgICB9CiAKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVy
bmFscywgIn1cblxuIik7ICAjIGVuZCBvZiBnZXR0ZXIKQEAgLTEyMjEsNiArMTI2MCw3IEBAIHN1
YiBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxsYmFjawogewogICAgIG15ICRhdHRyaWJ1dGUg
PSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CisgICAgbXkgJGZvck1haW5Xb3Js
ZFN1ZmZpeCA9IHNoaWZ0OwogCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5u
YW1lOwogICAgIG15ICR2OEludGVyZmFjZU5hbWUgPSAiVjgkaW50ZXJmYWNlTmFtZSI7CkBAIC0x
MjMwLDEzICsxMjcwLDEzIEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxsYmFjawog
ICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRp
dGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAgcHVzaChAaW1wbENvbnRl
bnRJbnRlcm5hbHMsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwogCi0gICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICJzdGF0aWMgdm9p
ZCAke2F0dHJOYW1lfUF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgInN0YXRpYyB2b2lkICR7
YXR0ck5hbWV9QXR0clNldHRlckNhbGxiYWNrJHtmb3JNYWluV29ybGRTdWZmaXh9KHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbylcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxz
LCAie1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsIEdlbmVyYXRlRmVhdHVy
ZU9ic2VydmF0aW9uKCRhdHRyRXh0LT57IlY4TWVhc3VyZUFzIn0pKTsKICAgICBpZiAoSGFzQ3Vz
dG9tU2V0dGVyKCRhdHRyRXh0KSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFs
cywgIiAgICAke3Y4SW50ZXJmYWNlTmFtZX06OiR7YXR0ck5hbWV9QXR0clNldHRlckN1c3RvbShu
YW1lLCB2YWx1ZSwgaW5mbyk7XG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudEludGVybmFscywgIiAgICAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRy
TmFtZX1BdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTtcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudEludGVybmFscywgIiAgICAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHth
dHRyTmFtZX1BdHRyU2V0dGVyJHtmb3JNYWluV29ybGRTdWZmaXh9KG5hbWUsIHZhbHVlLCBpbmZv
KTtcbiIpOwogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIn1cblxuIik7
CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIjZW5kaWYgLy8gJHtjb25kaXRpb25h
bFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMTI0Niw2ICsxMjg2LDcg
QEAgc3ViIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcgogewogICAgIG15ICRhdHRyaWJ1dGUgPSBz
aGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CisgICAgbXkgJGZvck1haW5Xb3JsZFN1
ZmZpeCA9IHNoaWZ0OwogCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1l
OwogICAgIG15ICR2OEludGVyZmFjZU5hbWUgPSAiVjgkaW50ZXJmYWNlTmFtZSI7CkBAIC0xMjU5
LDcgKzEzMDAsNyBAQCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyCiAKICAgICBteSAkY29u
ZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmlu
ZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxz
LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsK
LSAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgInN0YXRpYyB2b2lkICR7YXR0ck5hbWV9
QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pXG4iKTsKKyAgICBwdXNoKEBp
bXBsQ29udGVudEludGVybmFscywgInN0YXRpYyB2b2lkICR7YXR0ck5hbWV9QXR0clNldHRlciR7
Zm9yTWFpbldvcmxkU3VmZml4fSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pXG4iKTsKICAg
ICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIntcbiIpOwogCiAgICAgIyBJZiB0aGUgIlN0
cmljdFR5cGVDaGVja2luZyIgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHByZXNlbnQsIGFuZCB0aGUg
YXR0cmlidXRlJ3MgdHlwZSBpcyBhbgpAQCAtMjI3NSw3ICsyMzE2LDcgQEAgRU5ECiAKICAgICBw
dXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6
R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVu
dFdvcmxkVHlwZSkKIHsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGNhY2hlZFRlbXBsYXRlOwogICAgIGlmICghY2FjaGVkVGVtcGxhdGUuSXNFbXB0eSgp
KQpAQCAtMjI4Nyw3ICsyMzI4LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSgKICAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IHJlc3VsdC0+SW5zdGFuY2VUZW1w
bGF0ZSgpOwogICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoJHt2OEludGVyZmFj
ZU5hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQpOwogICAgIHJlc3VsdC0+U2V0Q2xhc3NOYW1lKHY4
OjpTdHJpbmc6Ok5ld1N5bWJvbCgiJHtpbnRlcmZhY2VOYW1lfSIpKTsKLSAgICByZXN1bHQtPklu
aGVyaXQoJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUp
KTsKKyAgICByZXN1bHQtPkluaGVyaXQoJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZShp
c29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSk7CiAKICAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHJlc3VsdCk7CiAg
ICAgcmV0dXJuIGNhY2hlZFRlbXBsYXRlOwpAQCAtMjM1Niw2ICsyMzk3LDggQEAgc3ViIEdlbmVy
YXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZQogCiAgICAgbXkgJGdldHRlcjsKICAgICBteSAkc2V0
dGVyOworICAgIG15ICRnZXR0ZXJGb3JNYWluV29ybGQ7CisgICAgbXkgJHNldHRlckZvck1haW5X
b3JsZDsKICAgICBteSAkcHJvcEF0dHIgPSAidjg6Ok5vbmUiOwogCiAgICAgIyBDaGVjayBhdHRy
aWJ1dGVzLgpAQCAtMjM4MiwxOSArMjQyNSwyNSBAQCBzdWIgR2VuZXJhdGVTaW5nbGVCYXRjaGVk
QXR0cmlidXRlCiAgICAgICAgICRkYXRhID0gIiZWOCR7Y29uc3RydWN0b3JUeXBlfTo6aW5mbyI7
CiAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7aW50ZXJm
YWNlTmFtZX1Db25zdHJ1Y3RvckdldHRlciI7CiAgICAgICAgICRzZXR0ZXIgPSAiJHtpbnRlcmZh
Y2VOYW1lfVY4SW50ZXJuYWw6OiR7aW50ZXJmYWNlTmFtZX1SZXBsYWNlYWJsZUF0dHJTZXR0ZXJD
YWxsYmFjayI7CisgICAgICAgICRnZXR0ZXJGb3JNYWluV29ybGQgPSAiMCI7CisgICAgICAgICRz
ZXR0ZXJGb3JNYWluV29ybGQgPSAiMCI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgIyBEZWZhdWx0
IEdldHRlciBhbmQgU2V0dGVyCiAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfVY4
SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlckNhbGxiYWNrIjsKICAgICAgICAgJHNldHRl
ciA9ICIke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyQ2Fs
bGJhY2siOworICAgICAgICAkZ2V0dGVyRm9yTWFpbldvcmxkID0gIiR7Z2V0dGVyfUZvck1haW5X
b3JsZCI7CisgICAgICAgICRzZXR0ZXJGb3JNYWluV29ybGQgPSAiJHtzZXR0ZXJ9Rm9yTWFpbldv
cmxkIjsKIAogICAgICAgICBpZiAoIUhhc0N1c3RvbVNldHRlcigkYXR0ckV4dCkgJiYgJGF0dHJF
eHQtPnsiUmVwbGFjZWFibGUifSkgewogICAgICAgICAgICAgJHNldHRlciA9ICIke2ludGVyZmFj
ZU5hbWV9VjhJbnRlcm5hbDo6JHtpbnRlcmZhY2VOYW1lfVJlcGxhY2VhYmxlQXR0clNldHRlckNh
bGxiYWNrIjsKKyAgICAgICAgICAgICRzZXR0ZXJGb3JNYWluV29ybGQgPSAiMCI7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICAjIFJlYWQgb25seSBhdHRyaWJ1dGVzCiAgICAgaWYgKElzUmVhZG9u
bHkoJGF0dHJpYnV0ZSkpIHsKICAgICAgICAgJHNldHRlciA9ICIwIjsKKyAgICAgICAgJHNldHRl
ckZvck1haW5Xb3JsZCA9ICIwIjsKICAgICB9CiAKICAgICAjIEFuIGFjY2Vzc29yIGNhbiBiZSBp
bnN0YWxsZWQgb24gdGhlIHByb3RvCkBAIC0yNDA2LDcgKzI0NTUsNyBAQCBzdWIgR2VuZXJhdGVT
aW5nbGVCYXRjaGVkQXR0cmlidXRlCiAgICAgICAgICAgICAgICAgICAgICAgIicgRXh0QXR0cjog
JyIgLiBqb2luKCcgJywga2V5cygleyRhdHRyRXh0fSkpIC4gIicpIjsKIAogICAgIHB1c2goQGlt
cGxDb250ZW50LCAkaW5kZW50IC4gIiAgICBcL1wvICRjb21tZW50SW5mb1xuIik7Ci0gICAgcHVz
aChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgIHtcIiRhdHRyTmFtZVwiLCAkZ2V0dGVyLCAk
c2V0dGVyLCAkZGF0YSwgJGFjY2Vzc0NvbnRyb2wsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4oJHByb3BBdHRyKSwgJG9uX3Byb3RvfSIgLiAkZGVsaW1pdGVyIC4gIlxuIik7Cisg
ICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgIHtcIiRhdHRyTmFtZVwiLCAkZ2V0
dGVyLCAkc2V0dGVyLCAkZ2V0dGVyRm9yTWFpbldvcmxkLCAkc2V0dGVyRm9yTWFpbldvcmxkLCAk
ZGF0YSwgJGFjY2Vzc0NvbnRyb2wsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
JHByb3BBdHRyKSwgJG9uX3Byb3RvfSIgLiAkZGVsaW1pdGVyIC4gIlxuIik7CiB9CiAKIHN1YiBJ
c1N0YW5kYXJkRnVuY3Rpb24KQEAgLTI3MTEsNyArMjc2MCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgIG15ICRwYXJlbnQgPSAkXzsKICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIlY4JHtwYXJlbnR9LmgiKTsKICAgICAgICAgJHBhcmVudENsYXNzID0gIlY4IiAuICRw
YXJlbnQ7Ci0gICAgICAgICRwYXJlbnRDbGFzc1RlbXBsYXRlID0gJHBhcmVudENsYXNzIC4gIjo6
R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSI7CisgICAgICAgICRwYXJlbnRDbGFzc1Rl
bXBsYXRlID0gJHBhcmVudENsYXNzIC4gIjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdv
cmxkVHlwZSkiOwogICAgICAgICBsYXN0OwogICAgIH0KIApAQCAtMjc5MCwxNCArMjgzOSwxOCBA
QCBFTkQKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIpOwogICAgICAgICB9CiAKLSAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyKCRh
dHRyaWJ1dGUsICRpbnRlcmZhY2UpOwotICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJD
YWxsYmFjaygkYXR0cmlidXRlLCAkaW50ZXJmYWNlKTsKKyAgICAgICAgR2VuZXJhdGVOb3JtYWxB
dHRyR2V0dGVyKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICIiKTsKKyAgICAgICAgR2VuZXJhdGVO
b3JtYWxBdHRyR2V0dGVyQ2FsbGJhY2soJGF0dHJpYnV0ZSwgJGludGVyZmFjZSwgIiIpOworICAg
ICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIoJGF0dHJpYnV0ZSwgJGludGVyZmFjZSwgIkZv
ck1haW5Xb3JsZCIpOworICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJDYWxsYmFjaygk
YXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiRm9yTWFpbldvcmxkIik7CiAKICAgICAgICAgaWYgKCFI
YXNDdXN0b21TZXR0ZXIoJGF0dHJFeHQpICYmICRhdHRyRXh0LT57IlJlcGxhY2VhYmxlIn0pIHsK
ICAgICAgICAgICAgICRoYXNSZXBsYWNlYWJsZSA9IDE7CiAgICAgICAgIH0gZWxzaWYgKCFJc1Jl
YWRvbmx5KCRhdHRyaWJ1dGUpKSB7Ci0gICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0
ZXIoJGF0dHJpYnV0ZSwgJGludGVyZmFjZSk7Ci0gICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0
dHJTZXR0ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkaW50ZXJmYWNlKTsKKyAgICAgICAgICAgIEdl
bmVyYXRlTm9ybWFsQXR0clNldHRlcigkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiIik7CisgICAg
ICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkaW50
ZXJmYWNlLCAiIik7CisgICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIoJGF0dHJp
YnV0ZSwgJGludGVyZmFjZSwgIkZvck1haW5Xb3JsZCIpOworICAgICAgICAgICAgR2VuZXJhdGVO
b3JtYWxBdHRyU2V0dGVyQ2FsbGJhY2soJGF0dHJpYnV0ZSwgJGludGVyZmFjZSwgIkZvck1haW5X
b3JsZCIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMDA4LDkgKzMwNjEsOSBAQCBFTkQKICAg
ICAjIGNvbmZpZ3VyYXRpb24gbWV0aG9kLgogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9N
V2luZG93IikgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gQ29uZmlndXJlU2hhZG93T2JqZWN0VGVt
cGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiB0ZW1wbCwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBD
b25maWd1cmVTaGFkb3dPYmplY3RUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVt
cGxhdGU+IHRlbXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJy
ZW50V29ybGRUeXBlKQogewotICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVB
dHRyaWJ1dGVzKHRlbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4oKSwgc2hhZG93
QXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZG93QXR0cnMpLCBpc29sYXRlKTsKKyAgICBWOERP
TUNvbmZpZ3VyYXRpb246OmJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyh0ZW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0VGVtcGxhdGU+KCksIHNoYWRvd0F0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKHNo
YWRvd0F0dHJzKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CiAKICAgICAvLyBJbnN0YWxs
IGEgc2VjdXJpdHkgaGFuZGxlciB3aXRoIFY4LgogICAgIHRlbXBsLT5TZXRBY2Nlc3NDaGVja0Nh
bGxiYWNrcyhWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrQ3VzdG9tLCBWOERPTVdpbmRv
dzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2tDdXN0b20sIHY4OjpFeHRlcm5hbDo6TmV3KCZWOERPTVdp
bmRvdzo6aW5mbykpOwpAQCAtMzAyNiw3ICszMDc5LDcgQEAgRU5ECiAKICAgICAjIEdlbmVyYXRl
IHRoZSB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uIG1ldGhvZAogICAgIHB1c2goQGltcGxDb250ZW50
LCAgPDxFTkQpOwotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBD
b25maWd1cmUke3Y4SW50ZXJmYWNlTmFtZX1UZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5
cGUgd29ybGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmUke3Y4SW50ZXJmYWNlTmFtZX1UZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3Js
ZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgp
OwogCkBAIC0zMDM2LDcgKzMwODksNyBAQCBFTkQKICAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlv
biA9IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJGludGVyZmFjZSk7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAgICAgaWYgKCEke2VuYWJsZV9mdW5jdGlvbn0oKSkK
LSAgICAgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJl
VGVtcGxhdGUoZGVzYywgXCJcIiwgJHBhcmVudENsYXNzVGVtcGxhdGUsICR7djhJbnRlcmZhY2VO
YW1lfTo6aW50ZXJuYWxGaWVsZENvdW50LCAwLCAwLCAwLCAwLCBpc29sYXRlKTsKKyAgICAgICAg
ZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUo
ZGVzYywgXCJcIiwgJHBhcmVudENsYXNzVGVtcGxhdGUsICR7djhJbnRlcmZhY2VOYW1lfTo6aW50
ZXJuYWxGaWVsZENvdW50LCAwLCAwLCAwLCAwLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsK
ICAgICBlbHNlCiBFTkQKICAgICB9CkBAIC0zMDU2LDExICszMTA5LDExIEBAIEVORAogCiAgICAg
aWYgKCRoYXNfY2FsbGJhY2tzKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7
Ci0gICAgICAgICR7djhJbnRlcmZhY2VOYW1lfU1ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoJHt2
OEludGVyZmFjZU5hbWV9TWV0aG9kcyksIGlzb2xhdGUpOworICAgICAgICAke3Y4SW50ZXJmYWNl
TmFtZX1NZXRob2RzLCBXVEZfQVJSQVlfTEVOR1RIKCR7djhJbnRlcmZhY2VOYW1lfU1ldGhvZHMp
LCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKIEVORAogICAgIH0gZWxzZSB7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgICAgIDAsIDAsIGlzb2xhdGUpOworICAg
ICAgICAwLCAwLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKIEVORAogICAgIH0KIApAQCAt
MzA5Niw3ICszMTQ5LDcgQEAgRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJE
YXRhID1cXFxuIik7CiAgICAgICAgIEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZSgkaW50
ZXJmYWNlTmFtZSwgJHJ1bnRpbWVfYXR0ciwgIjsiLCAiICAgICIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgPDxFTkQpOwotICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3Vy
ZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhLCBpc29sYXRlKTsKKyAgICAgICAg
VjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBh
dHRyRGF0YSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CiAgICAgfQogRU5ECiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTMxNzksMjMgKzMyMzIsMjMgQEAgRU5ECiAgICAg
cmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAk
e3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFw
cGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiAke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRl
RGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1w
bGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRl
TWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBl
KS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJl
bnRXb3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmUke3Y4SW50ZXJmYWNlTmFt
ZX1UZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwg
d29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywg
dGVtcGwpOworICAgICAgICBDb25maWd1cmUke3Y4SW50ZXJmYWNlTmFtZX1UZW1wbGF0ZShkYXRh
LT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRX
b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgm
aW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCAke3Y4SW50ZXJmYWNl
TmFtZX06Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCAke3Y4SW50ZXJm
YWNlTmFtZX06Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAg
ICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmlu
Zm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwog
fQogCiBib29sICR7djhJbnRlcmZhY2VOYW1lfTo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCkBAIC0zMzAwLDE0
ICszMzUzLDE0IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gVjhET01XaW5k
b3c6OkdldFNoYWRvd09iamVjdFRlbXBsYXRlKHY4OjpJc29sCiAgICAgICAgIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2Fj
aGVGb3JNYWluV29ybGQ7CiAgICAgICAgIGlmIChWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hl
Rm9yTWFpbldvcmxkLklzRW1wdHkoKSkgewogICAgICAgICAgICAgVjhET01XaW5kb3dTaGFkb3dP
YmplY3RDYWNoZUZvck1haW5Xb3JsZCA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0
ZT46Ok5ldyhpc29sYXRlLCB2ODo6T2JqZWN0VGVtcGxhdGU6Ok5ldygpKTsKLSAgICAgICAgICAg
IENvbmZpZ3VyZVNoYWRvd09iamVjdFRlbXBsYXRlKFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2Fj
aGVGb3JNYWluV29ybGQsIGlzb2xhdGUpOworICAgICAgICAgICAgQ29uZmlndXJlU2hhZG93T2Jq
ZWN0VGVtcGxhdGUoVjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZUZvck1haW5Xb3JsZCwgaXNv
bGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFY4RE9N
V2luZG93U2hhZG93T2JqZWN0Q2FjaGVGb3JNYWluV29ybGQ7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gVjhET01XaW5kb3dT
aGFkb3dPYmplY3RDYWNoZUZvck5vbk1haW5Xb3JsZDsKICAgICAgICAgaWYgKFY4RE9NV2luZG93
U2hhZG93T2JqZWN0Q2FjaGVGb3JOb25NYWluV29ybGQuSXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlRm9yTm9uTWFpbldvcmxkID0gdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpPYmplY3RUZW1wbGF0
ZTo6TmV3KCkpOwotICAgICAgICAgICAgQ29uZmlndXJlU2hhZG93T2JqZWN0VGVtcGxhdGUoVjhE
T01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZUZvck5vbk1haW5Xb3JsZCwgaXNvbGF0ZSk7CisgICAg
ICAgICAgICBDb25maWd1cmVTaGFkb3dPYmplY3RUZW1wbGF0ZShWOERPTVdpbmRvd1NoYWRvd09i
amVjdENhY2hlRm9yTm9uTWFpbldvcmxkLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gVjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZUZvck5v
bk1haW5Xb3JsZDsKICAgICB9CkBAIC0zNTE3LDcgKzM1NzAsNyBAQCBFTkQKICAgICAgICAgICAg
IEBhcmdzID0gKCk7CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRwYXJhbSAoQHBhcmFtcykgewog
ICAgICAgICAgICAgICAgIG15ICRwYXJhbU5hbWUgPSAkcGFyYW0tPm5hbWU7Ci0gICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7cGFy
YW1OYW1lfUhhbmRsZSA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJHBhcmFtLCAkcGFyYW1OYW1lLCAi
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpIiwgInY4Q29udGV4dC0+R2V0SXNvbGF0ZSgpIikgLiAi
O1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+ICR7cGFyYW1OYW1lfUhhbmRsZSA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJHBh
cmFtLCAkcGFyYW1OYW1lLCAidjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpIiwgInY4Q29udGV4dC0+
R2V0SXNvbGF0ZSgpIiwgIiIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmICgke3BhcmFtTmFtZX1IYW5kbGUuSXNFbXB0eSgpKSB7XG4iKTsKICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaWYgKCFpc1NjcmlwdENv
bnRyb2xsZXJUZXJtaW5hdGluZygpKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgICAgICBDUkFTSCgpO1xuIik7CkBAIC0zODk1LDkgKzM5NDgsOSBAQCBz
dWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcKICAgICBteSAkbmF0aXZlVmFsdWU7CiAgICAg
IyBGSVhNRTogVXBkYXRlIGZvciBhbGwgU2NyaXB0V3JhcHBhYmxlcy4KICAgICBpZiAoSXNET01O
b2RlVHlwZSgkaW50ZXJmYWNlTmFtZSkpIHsKLSAgICAgICAgJG5hdGl2ZVZhbHVlID0gTmF0aXZl
VG9KU1ZhbHVlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLCAkcmV0dXJuLCAiYXJncy5Ib2xkZXIoKSIs
ICJhcmdzLkdldElzb2xhdGUoKSIsICJhcmdzIiwgImltcCIsICJSZXR1cm5VbnNhZmVIYW5kbGUi
KTsKKyAgICAgICAgJG5hdGl2ZVZhbHVlID0gTmF0aXZlVG9KU1ZhbHVlKCRmdW5jdGlvbi0+c2ln
bmF0dXJlLCAkcmV0dXJuLCAiYXJncy5Ib2xkZXIoKSIsICJhcmdzLkdldElzb2xhdGUoKSIsICJh
cmdzIiwgImltcCIsICJSZXR1cm5VbnNhZmVIYW5kbGUiLCAiIik7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgJG5hdGl2ZVZhbHVlID0gTmF0aXZlVG9KU1ZhbHVlKCRmdW5jdGlvbi0+c2lnbmF0dXJl
LCAkcmV0dXJuLCAiYXJncy5Ib2xkZXIoKSIsICJhcmdzLkdldElzb2xhdGUoKSIsIDAsIDAsICJS
ZXR1cm5VbnNhZmVIYW5kbGUiKTsKKyAgICAgICAgJG5hdGl2ZVZhbHVlID0gTmF0aXZlVG9KU1Zh
bHVlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLCAkcmV0dXJuLCAiYXJncy5Ib2xkZXIoKSIsICJhcmdz
LkdldElzb2xhdGUoKSIsIDAsIDAsICJSZXR1cm5VbnNhZmVIYW5kbGUiLCAiIik7CiAgICAgfQog
CiAgICAgJHJlc3VsdCAuPSAkaW5kZW50IC4gInJldHVybiAiIC4gJG5hdGl2ZVZhbHVlIC4gIjtc
biI7CkBAIC00MTQxLDcgKzQxOTQsNyBAQCBzdWIgQ3JlYXRlQ3VzdG9tU2lnbmF0dXJlCiAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoR2V0VjhIZWFkZXJOYW1lKCR0eXBlKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICRyZXN1bHQgLj0gIlY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1Rl
bXBsYXRlKCZWOCR7dHlwZX06OmluZm8sIHdvcmxkVHlwZSkiOworICAgICAgICAgICAgICAgICRy
ZXN1bHQgLj0gIlY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZW
OCR7dHlwZX06OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICRyZXN1bHQgLj0gInY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+KCkiOwpAQCAtNDI4Niw2ICs0MzM5LDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1
ZQogICAgIG15ICRnZXRTY3JpcHRXcmFwcGFibGVBcmcgPSAkZ2V0U2NyaXB0V3JhcHBhYmxlID8g
IiwgJGdldFNjcmlwdFdyYXBwYWJsZSIgOiAiIjsKICAgICBteSAkcmV0dXJuSGFuZGxlVHlwZSA9
IHNoaWZ0OwogICAgIG15ICRyZXR1cm5IYW5kbGVUeXBlQXJnID0gJHJldHVybkhhbmRsZVR5cGUg
PyAiLCAkcmV0dXJuSGFuZGxlVHlwZSIgOiAiIjsKKyAgICBteSAkZm9yTWFpbldvcmxkU3VmZml4
ID0gc2hpZnQ7CiAKICAgICBteSAkdHlwZSA9ICRzaWduYXR1cmUtPnR5cGU7CiAKQEAgLTQzNDMs
NyArNDM5Nyw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKIAogICAgIGlmIChJc0RPTU5vZGVUeXBl
KCR0eXBlKSB8fCAkdHlwZSBlcSAiRXZlbnRUYXJnZXQiKSB7CiAgICAgICBpZiAoJGdldFNjcmlw
dFdyYXBwYWJsZSkgewotICAgICAgICAgIHJldHVybiAidG9WOEZhc3QoJHZhbHVlJGdldEhvbGRl
ckNvbnRhaW5lckFyZyRnZXRTY3JpcHRXcmFwcGFibGVBcmcpIjsKKyAgICAgICAgICByZXR1cm4g
InRvVjhGYXN0JHtmb3JNYWluV29ybGRTdWZmaXh9KCR2YWx1ZSRnZXRIb2xkZXJDb250YWluZXJB
cmckZ2V0U2NyaXB0V3JhcHBhYmxlQXJnKSI7CiAgICAgICB9CiAgICAgICByZXR1cm4gInRvVjgo
JHZhbHVlLCAkZ2V0Q3JlYXRpb25Db250ZXh0LCAkZ2V0SXNvbGF0ZSkiOwogICAgIH0KQEAgLTQz
NjMsNyArNDQxNyw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICBBZGRUb0ltcGxJbmNsdWRl
cygid3RmL0dldFB0ci5oIik7CiAKICAgICBpZiAoJGdldFNjcmlwdFdyYXBwYWJsZSkgewotICAg
ICAgICAgIHJldHVybiAidG9WOEZhc3QoJHZhbHVlJGdldEhvbGRlckNvbnRhaW5lckFyZyRnZXRT
Y3JpcHRXcmFwcGFibGVBcmcpIjsKKyAgICAgICAgICByZXR1cm4gInRvVjhGYXN0JGZvck1haW5X
b3JsZFN1ZmZpeCgkdmFsdWUkZ2V0SG9sZGVyQ29udGFpbmVyQXJnJGdldFNjcmlwdFdyYXBwYWJs
ZUFyZykiOwogICAgIH0KICAgICByZXR1cm4gInRvVjgoJHZhbHVlLCAkZ2V0Q3JlYXRpb25Db250
ZXh0LCAkZ2V0SXNvbGF0ZSkiOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKaW5kZXggYmUwZmE1NDA1
NWFkMjdmODc2ZGVkMTNmOTcyZDM4NzMzMzkyYWY2Yi4uYWEwMmY5MDY5NjdlMmM2YjIwMDAzNzgx
ODgwNTQ0Y2YzNTVhOGQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCkBAIC0xMzUsMTQgKzEzNSwx
NCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhGbG9hdDY0QXJyYXk6OmNvbnN0cnVjdG9yQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQogICAgIHJldHVybiBGbG9hdDY0QXJyYXlWOElu
dGVybmFsOjpjb25zdHJ1Y3RvcihhcmdzKTsKIH0KIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9u
bHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2ln
bmF0dXJlOwotICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZp
Z3VyZVRlbXBsYXRlKGRlc2MsICJGbG9hdDY0QXJyYXkiLCBWOEFycmF5QnVmZmVyVmlldzo6R2V0
VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSwgVjhGbG9hdDY0QXJyYXk6OmludGVybmFsRmll
bGRDb3VudCwKKyAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25m
aWd1cmVUZW1wbGF0ZShkZXNjLCAiRmxvYXQ2NEFycmF5IiwgVjhBcnJheUJ1ZmZlclZpZXc6Okdl
dFRlbXBsYXRlKGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpLCBWOEZsb2F0NjRBcnJheTo6aW50
ZXJuYWxGaWVsZENvdW50LAogICAgICAgICAwLCAwLAotICAgICAgICBWOEZsb2F0NjRBcnJheU1l
dGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoVjhGbG9hdDY0QXJyYXlNZXRob2RzKSwgaXNvbGF0ZSk7
CisgICAgICAgIFY4RmxvYXQ2NEFycmF5TWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOEZsb2F0
NjRBcnJheU1ldGhvZHMpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICBVTlVTRURf
UEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJl
IHVzZWQuCiAgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjhGbG9hdDY0QXJyYXk6OmNvbnN0cnVj
dG9yQ2FsbGJhY2spOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNl
ID0gZGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhGbG9hdDY0QXJy
YXlUZW1wbGF0ZSh2ODo6CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdmb28nCiAgICAgY29u
c3QgaW50IGZvb0FyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IGZvb0FyZ3ZbZm9vQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJh
d1RlbXBsYXRlKCZWOEZsb2F0MzJBcnJheTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZvb0FyZ3ZbZm9vQXJnY10gPSB7IFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOEZsb2F0MzJBcnJheTo6aW5m
bywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGZv
b1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBmb29BcmdjLCBmb29Bcmd2KTsK
ICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZm9vIiksIHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoRmxvYXQ2NEFycmF5VjhJbnRlcm5hbDo6Zm9vTWV0aG9kQ2FsbGJhY2ss
IHY4VW5kZWZpbmVkKCksIGZvb1NpZ25hdHVyZSkpOwogCkBAIC0xNjIsMjMgKzE2MiwyMyBAQCBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4Rmxv
YXQ2NEFycmF5VGVtcGxhdGUodjg6OgogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhGbG9hdDY0QXJyYXk6OkdldFRlbXBsYXRlKHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEZsb2F0NjRBcnJheTo6R2V0VGVtcGxhdGUo
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkK
IHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVz
dWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAo
cmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRl
TWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0
YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZp
Z3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxk
VHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRU
eXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlU
ZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xh
dGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3Js
ZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBW
OEZsb2F0NjRBcnJheTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4
RmxvYXQ2NEFycmF5OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7
Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNl
KCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBl
KTsKIH0KIAogYm9vbCBWOEZsb2F0NjRBcnJheTo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXku
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJh
eS5oCmluZGV4IGRjNTRmMDBlMGI1ZDA0ODUzODc1ZDM0YmViNmY5M2FkZWZiOThlMmIuLjM4OTk1
ZjYzODU0ODI3N2NkMmQwNGJlODg2MWFiY2RiNmUzYWM2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCkBA
IC03Miw2ICs3MiwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRmxvYXQ2
NEFycmF5KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZQogICAgIHJldHVybiB3cmFw
KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChGbG9hdDY0QXJyYXkqIGltcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sK
KyAgICBBU1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVO
TElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3Jh
cHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNz
IFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoRmxvYXQ2
NEFycmF5KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxl
KiB3cmFwcGFibGUpCiB7CkBAIC04NCw2ICs5NSwyNSBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjhGYXN0KEZsb2F0NjRBcnJheSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVy
JgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4K
K2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoRmxvYXQ2
NEFycmF5KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxl
KiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIuR2V0SXNvbGF0
ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJl
dHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGlt
cGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVy
OworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdl
dElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3Mg
V3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5X
b3JsZChQYXNzUmVmUHRyPCBGbG9hdDY0QXJyYXkgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWlu
ZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhG
YXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKwor
Cit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgRmxvYXQ2NEFycmF5
ID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3Jh
cHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdy
YXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDI0MmJiN2Vm
YzJiZWI0ZDE0YTgxNjE5MzRlZTAyZjRjZDk5Yjg3NjguLjY5MjNmMDZlYWVmZGFkZTY1NzhhNzEy
NDY4ZWNjN2RhZWZjMjNmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCkBA
IC04Miw2ICs4MiwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2l0aW5nQXR0
ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZwogICAgIHJldHVybiBUZXN0
QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhjaXRpbmdBdHRyQXR0ckdldHRlcihuYW1lLCBp
bmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGNpdGluZ0F0dHJBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RBY3RpdmVET01PYmplY3QqIGltcCA9IFY4
VGVzdEFjdGl2ZURPTU9iamVjdDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJu
IHY4SW50ZWdlcihpbXAtPmV4Y2l0aW5nQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXhjaXRpbmdBdHRyQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRl
cm5hbDo6ZXhjaXRpbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30K
KwogYm9vbCBpbmRleGVkU2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwg
dWludDMyX3QgaW5kZXgsIHY4OjpBY2Nlc3NUeXBlIHR5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
KQogewogICAgIFRlc3RBY3RpdmVET01PYmplY3QqIGltcCA9ICBWOFRlc3RBY3RpdmVET01PYmpl
Y3Q6OnRvTmF0aXZlKGhvc3QpOwpAQCAtMTc1LDE3ICsxODYsMTcgQEAgc3RhdGljIHZvaWQgVGVz
dEFjdGl2ZURPTU9iamVjdERvbWFpblNhZmVGdW5jdGlvblNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmEKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJp
YnV0ZSBWOFRlc3RBY3RpdmVET01PYmplY3RBdHRyc1tdID0gewogICAgIC8vIEF0dHJpYnV0ZSAn
ZXhjaXRpbmdBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0g
ICAgeyJleGNpdGluZ0F0dHIiLCBUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhjaXRp
bmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImV4Y2l0
aW5nQXR0ciIsIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpleGNpdGluZ0F0dHJBdHRy
R2V0dGVyQ2FsbGJhY2ssIDAsIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpleGNpdGlu
Z0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAog
fTsKIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1
cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUg
d29ybGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBD
b25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3Js
ZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgp
OwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAg
ZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUo
ZGVzYywgIlRlc3RBY3RpdmVET01PYmplY3QiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4oKSwgVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjppbnRlcm5hbEZpZWxkQ291bnQsCiAg
ICAgICAgIFY4VGVzdEFjdGl2ZURPTU9iamVjdEF0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVz
dEFjdGl2ZURPTU9iamVjdEF0dHJzKSwKLSAgICAgICAgMCwgMCwgaXNvbGF0ZSk7CisgICAgICAg
IDAsIDAsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZh
dWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IGRlc2MtPkluc3RhbmNl
VGVtcGxhdGUoKTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90byA9IGRl
c2MtPlByb3RvdHlwZVRlbXBsYXRlKCk7CkBAIC0xOTUsNyArMjA2LDcgQEAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RBY3RpdmVET01P
YmplY3RUZW1wbGEKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2V4Y2l0aW5nRnVuY3Rpb24n
CiAgICAgY29uc3QgaW50IGV4Y2l0aW5nRnVuY3Rpb25BcmdjID0gMTsKLSAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBleGNpdGluZ0Z1bmN0aW9uQXJndltleGNpdGluZ0Z1bmN0
aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRl
KCZWOE5vZGU6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBleGNpdGluZ0Z1bmN0aW9uQXJndltleGNpdGluZ0Z1bmN0aW9uQXJnY10gPSB7
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOE5vZGU6Omlu
Zm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBl
eGNpdGluZ0Z1bmN0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGV4Y2l0
aW5nRnVuY3Rpb25BcmdjLCBleGNpdGluZ0Z1bmN0aW9uQXJndik7CiAgICAgcHJvdG8tPlNldCh2
ODo6U3RyaW5nOjpOZXdTeW1ib2woImV4Y2l0aW5nRnVuY3Rpb24iKSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhjaXRpbmdGdW5jdGlv
bk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBleGNpdGluZ0Z1bmN0aW9uU2lnbmF0dXJl
KSk7CiAKQEAgLTIwNywyMyArMjE4LDIzIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0VGVtcGxhCiAgICAg
cmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBW
OFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJ
c29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAg
VjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRh
LT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRl
bXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29y
bGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFw
KGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsK
IAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RBY3Rp
dmVET01PYmplY3RUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwg
aXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFk
ZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RU
ZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xh
dGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3Js
ZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBW
OFRlc3RBY3RpdmVET01PYmplY3Q6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQor
Ym9vbCBWOFRlc3RBY3RpdmVET01PYmplY3Q6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVu
dFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1
cnJlbnRXb3JsZFR5cGUpOwogfQogCiBib29sIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6SGFzSW5z
dGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggNmJhZDk5MDIxYjJj
OWFhZDI4NmFlYjk4ZGM3MzUwNTY1Zjg2ZTE2Mi4uNDkxYTNhYTk5MTM4YTFmNWYzYmI3YTY3N2I5
MmZhYTdlYWZiY2NjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaApAQCAtNzUsNiAr
NzUsMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RBY3RpdmVET01P
YmplY3QqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamUKICAgICByZXR1cm4gd3JhcChpbXBsLCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjhGb3JNYWluV29ybGQoVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorewor
ICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5M
SUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwor
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFw
cGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3Mg
V3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0QWN0
aXZlRE9NT2JqZWN0KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3Jh
cHBhYmxlKiB3cmFwcGFibGUpCiB7CkBAIC04Nyw2ICs5OCwyNSBAQCBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RBY3RpdmVET01PYmplY3QqIGltcGwsIGNvbnN0IEhv
bGRlckNvbgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBw
YWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQo
VGVzdEFjdGl2ZURPTU9iamVjdCogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWlu
ZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFp
bmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwp
KQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZv
ck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCks
IGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250
YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdEFjdGl2ZURPTU9iamVjdCA+IGltcGws
IGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkK
K3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVy
LCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xh
c3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNz
UmVmUHRyPCBUZXN0QWN0aXZlRE9NT2JqZWN0ID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVy
JiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFz
dChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmNwcAppbmRleCBiYWQ4NTJkZjhkZjYxOWY1NTY2NTM0NGQ0NjE5ODhjYzY4
YjY4MDNiLi40NDdkZmFmYTg4NTVkYjQ2NzU4OWVkMTA4YjBiMDQ0ZTZjMWQxM2EzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAgLTkxLDE0ICs5MSwxNCBAQCBzdGF0
aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkTWV0aG9kIFY4VGVzdEN1c3RvbU5h
bWVkR2V0dGVyTWV0aG9kc1tdCiAgICAgeyJhbm90aGVyRnVuY3Rpb24iLCBUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXJWOEludGVybmFsOjphbm90aGVyRnVuY3Rpb25NZXRob2RDYWxsYmFja30sCiB9Owog
Ci1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdv
cmxkVHlwZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29u
ZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3Js
ZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgp
OwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAg
ZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUo
ZGVzYywgIlRlc3RDdXN0b21OYW1lZEdldHRlciIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPigpLCBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6aW50ZXJuYWxGaWVsZENvdW50
LAogICAgICAgICAwLCAwLAotICAgICAgICBWOFRlc3RDdXN0b21OYW1lZEdldHRlck1ldGhvZHMs
IFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJNZXRob2RzKSwgaXNvbGF0
ZSk7CisgICAgICAgIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyTWV0aG9kcywgV1RGX0FSUkFZX0xF
TkdUSChWOFRlc3RDdXN0b21OYW1lZEdldHRlck1ldGhvZHMpLCBpc29sYXRlLCBjdXJyZW50V29y
bGRUeXBlKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUg
Y2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1w
bGF0ZT4gaW5zdGFuY2UgPSBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8gPSBkZXNjLT5Qcm90b3R5cGVUZW1wbGF0ZSgpOwpA
QCAtMTEyLDIzICsxMTIsMjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBDb25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRlbXAKICAgICByZXR1cm4g
ZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBl
cldvcmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29s
YXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQ
ZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBs
YXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50
ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBs
YXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRU
eXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1
cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAog
ICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RDdXN0b21O
YW1lZEdldHRlclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBp
c29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRk
KCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5hbWVkR2V0dGVy
VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpLCBpc29s
YXRlLCBjdXJyZW50V29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29y
bGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wg
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBl
KQorYm9vbCBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBj
dXJyZW50V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJu
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1
ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6
Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAppbmRleCBm
NzE3YTBmYjZmM2FiMTVmOTQ4MjkyNjkyZWIzZWQwM2M1YWVjMGE5Li5iMGViMjkxM2JhZWFmOGQ2
NjQ2MzhmNmQxZmE3MTNlN2NhMGNhYTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIuaApAQCAtNzYsNiArNzYsMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
KFRlc3RDdXN0b21OYW1lZEdldHRlciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2IKICAgICByZXR1
cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoVGVzdEN1c3RvbU5hbWVkR2V0dGVy
KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29y
bGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRo
Q2hlY2soaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01E
YXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVy
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1w
bCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVy
Q29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjhGYXN0KFRlc3RDdXN0b21OYW1lZEdldHRlciogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFp
bmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtODgsNiArOTksMjUg
QEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIqIGltcGwsIGNvbnN0IEhvbGRlckMKIH0KIAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29u
dGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjhGYXN0Rm9yTWFpbldvcmxkKFRlc3RDdXN0b21OYW1lZEdldHRlciogaW1wbCwgY29uc3QgSG9s
ZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFT
U0VSVCh3b3JsZFR5cGUoY29udGFpbmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5H
ZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURh
dGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIu
SXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBs
LCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdEN1
c3RvbU5hbWVkR2V0dGVyID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIs
IFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3Js
ZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xh
c3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RDdXN0b21OYW1lZEdldHRlciA+IGlt
cGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJs
ZSkKIHsKICAgICByZXR1cm4gdG9WOEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFi
bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGI0YWU0NGM1OWU0
NDcxNjM0NWIxM2E5YTkyZWNkZTIwMDMzODlkMjcuLjcxNzAzNWFkMWJkOWNiNGQ3YzY2MTA3Njcz
MmMwOTIxZDY5OTQ2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAg
LTgxLDYgKzgxLDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cjFBdHRyR2V0
dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAgICAgcmV0dXJuIFRlc3RF
dmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjFBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwog
fQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHIxQXR0ckdldHRlckZvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICBUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wID0gVjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvcjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKGlt
cC0+YXR0cjEoKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhhbmRsZSk7Cit9CisK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6
YXR0cjFBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHIyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0RXZlbnRDb25z
dHJ1Y3RvciogaW1wID0gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CkBAIC05Miw2ICsxMDMsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBh
dHRyMkF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKICAgICBy
ZXR1cm4gVGVzdEV2ZW50Q29uc3RydWN0b3JWOEludGVybmFsOjphdHRyMkF0dHJHZXR0ZXIobmFt
ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cjJBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXAgPSBWOFRl
c3RFdmVudENvbnN0cnVjdG9yOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4g
djhTdHJpbmcoaW1wLT5hdHRyMigpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFu
ZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyMkF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdEV2ZW50Q29uc3RydWN0b3JW
OEludGVybmFsOjphdHRyMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisK
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IoY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCkBAIC0xMTUsOSArMTM3
LDkgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3Rvcihjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogCiBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRj
aGVkQXR0cmlidXRlIFY4VGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyc1tdID0gewogICAgIC8vIEF0
dHJpYnV0ZSAnYXR0cjEnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykK
LSAgICB7ImF0dHIxIiwgVGVzdEV2ZW50Q29uc3RydWN0b3JWOEludGVybmFsOjphdHRyMUF0dHJH
ZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJhdHRyMSIsIFRlc3RFdmVu
dENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIFRlc3RF
dmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnYXR0cjInIChUeXBl
OiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3Ry
dWN0b3InKQotICAgIHsiYXR0cjIiLCBUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWw6OmF0
dHIyQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImF0dHIyIiwg
VGVzdEV2ZW50Q29uc3RydWN0b3JWOEludGVybmFsOjphdHRyMkF0dHJHZXR0ZXJDYWxsYmFjaywg
MCwgVGVzdEV2ZW50Q29uc3RydWN0b3JWOEludGVybmFsOjphdHRyMkF0dHJHZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiB9OwogCiBib29sIGZpbGxUZXN0RXZl
bnRDb25zdHJ1Y3RvckluaXQoVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0JiBldmVudEluaXQsIGNv
bnN0IERpY3Rpb25hcnkmIG9wdGlvbnMpCkBAIC0xMzcsMTQgKzE1OSwxNCBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0b3JDYWxsYmFjayhj
b25zdCB2ODo6QXJndQogICAgIHJldHVybiBUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWw6
OmNvbnN0cnVjdG9yKGFyZ3MpOwogfQogCi1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0ZSh2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xh
dGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGxh
dGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRl
KiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVz
Yy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBk
ZWZhdWx0U2lnbmF0dXJlOwogICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRp
b246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RFdmVudENvbnN0cnVjdG9y
OjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIFY4VGVzdEV2ZW50Q29uc3RydWN0b3JBdHRy
cywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RFdmVudENvbnN0cnVjdG9yQXR0cnMpLAotICAgICAg
ICAwLCAwLCBpc29sYXRlKTsKKyAgICAgICAgMCwgMCwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlw
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2Vz
LCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4VGVzdEV2
ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwogICAgIApAQCAtMTU0LDIzICsx
NzYsMjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25m
aWd1cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGwKICAgICByZXR1cm4gZGVzYzsKIH0KIAot
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50Q29uc3RydWN0
b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdv
cmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFdmVu
dENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldv
cmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEg
PSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6
OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5
cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29y
bGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0
b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgmaW5m
byk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBl
KS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxl
U2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRlbXBs
YXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5
cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7
CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0ZShkYXRhLT5y
YXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3Js
ZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5m
bywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RFdmVudENvbnN0
cnVjdG9yOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29s
YXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0RXZl
bnRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQog
ewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5j
ZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlw
ZSk7CiB9CiAKIGJvb2wgVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2VJbkFueVdv
cmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaAppbmRleCBmYzRhMDEzMzRhOWUyZjY4MjYwNzk4
Y2ZhMzUwYmZhY2M3YWRmMTcyLi40NTkyMmZlOGQ3MGQzOTQ2NzQ4MDc1NTgyNzE5OGIyZThlZTA4
NDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKQEAgLTc3LDYgKzc3LDE3IEBA
IGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0RXZlbnRDb25zdHJ1Y3Rvciog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqCiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
Rm9yTWFpbldvcmxkKFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNT
RVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSgh
aW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CisgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JN
YWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFi
bGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RFdmVudENvbnN0
cnVjdG9yKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxl
KiB3cmFwcGFibGUpCiB7CkBAIC04OSw2ICsxMDAsMjUgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4RmFzdChUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wbCwgY29uc3QgSG9sZGVy
Q28KIH0KIAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+
CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRlc3RF
dmVudENvbnN0cnVjdG9yKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwg
V3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIu
R2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisg
ICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFp
bldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29u
dGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5l
ciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFz
dEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0RXZlbnRDb25zdHJ1Y3RvciA+IGltcGwsIGNv
bnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sK
KyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3
cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3Mg
V3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVm
UHRyPCBUZXN0RXZlbnRDb25zdHJ1Y3RvciA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYg
Y29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKICAgICByZXR1cm4gdG9WOEZhc3Qo
aW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5j
cHAKaW5kZXggZTUyNTgxYTMwZjZlZmE5M2ExYTcxYzBiMjJlOTI0ZGNlOGJlYTFmOC4uMGM4ZWEx
YWU4ZmVjNTVmNDJkNTlhZjk5MzAxNDI0ZWM4ZGY3ZmIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuY3BwCkBAIC0xNTksMTQgKzE1OSwxNCBAQCBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0
aW9uOjpCYXRjaGVkTWV0aG9kIFY4VGVzdEV2ZW50VGFyZ2V0TWV0aG9kc1tdID0gewogICAgIHsi
cmVtb3ZlRXZlbnRMaXN0ZW5lciIsIFRlc3RFdmVudFRhcmdldFY4SW50ZXJuYWw6OnJlbW92ZUV2
ZW50TGlzdGVuZXJNZXRob2RDYWxsYmFja30sCiB9OwogCi1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUo
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0
ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNj
LT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRl
ZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlv
bjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RFdmVudFRhcmdldCIsIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RFdmVudFRhcmdldDo6aW50ZXJuYWxG
aWVsZENvdW50LAogICAgICAgICAwLCAwLAotICAgICAgICBWOFRlc3RFdmVudFRhcmdldE1ldGhv
ZHMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0RXZlbnRUYXJnZXRNZXRob2RzKSwgaXNvbGF0ZSk7
CisgICAgICAgIFY4VGVzdEV2ZW50VGFyZ2V0TWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOFRl
c3RFdmVudFRhcmdldE1ldGhvZHMpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICBV
TlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwg
bm90IGJlIHVzZWQuCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2Ug
PSBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1w
bGF0ZT4gcHJvdG8gPSBkZXNjLT5Qcm90b3R5cGVUZW1wbGF0ZSgpOwpAQCAtMTc5LDcgKzE3OSw3
IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJl
VjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZSh2CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdk
aXNwYXRjaEV2ZW50JwogICAgIGNvbnN0IGludCBkaXNwYXRjaEV2ZW50QXJnYyA9IDE7Ci0gICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGlzcGF0Y2hFdmVudEFyZ3ZbZGlzcGF0
Y2hFdmVudEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1w
bGF0ZSgmVjhFdmVudDo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IGRpc3BhdGNoRXZlbnRBcmd2W2Rpc3BhdGNoRXZlbnRBcmdjXSA9IHsg
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RXZlbnQ6Omlu
Zm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBk
aXNwYXRjaEV2ZW50U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGRpc3BhdGNo
RXZlbnRBcmdjLCBkaXNwYXRjaEV2ZW50QXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5n
OjpOZXdTeW1ib2woImRpc3BhdGNoRXZlbnQiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhU
ZXN0RXZlbnRUYXJnZXRWOEludGVybmFsOjpkaXNwYXRjaEV2ZW50TWV0aG9kQ2FsbGJhY2ssIHY4
VW5kZWZpbmVkKCksIGRpc3BhdGNoRXZlbnRTaWduYXR1cmUpKTsKIApAQCAtMTg4LDIzICsxODgs
MjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1
cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKHYKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50VGFyZ2V0OjpHZXRU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUp
Cit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRUYXJnZXQ6
OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJl
bnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5m
byk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgp
KQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBk
YXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAo
cmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAg
ICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVT
Y29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQot
ICAgICAgICBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKGRhdGEtPnJhd1RlbXBs
YXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3Vy
ZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJl
bnRXb3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1w
bGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4g
dGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0RXZlbnRUYXJnZXQ6Okhhc0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5
cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RFdmVudFRhcmdldDo6SGFzSW5zdGFuY2Uodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAg
cmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZv
LCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhUZXN0RXZlbnRUYXJnZXQ6
Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaAppbmRleCBmZTAwODUxMzRmNzkz
MDdhZDY0OWY1OWNhOGQ0NGY3N2M0MTJiM2E1Li44NzU1NjI0NzcwMGIwZjZjZGIyOWMzOGEwZGVm
OGQ2MjUwMjhlMWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaApAQCAtNzksNiArNzksMTcgQEAg
aW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RFdmVudFRhcmdldCogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PgogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZv
ck1haW5Xb3JsZChUZXN0RXZlbnRUYXJnZXQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29y
bGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkK
KyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3Js
ZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3Jh
cHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwor
fQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlu
bGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdEV2ZW50VGFyZ2V0KiBpbXBs
LCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUp
CiB7CkBAIC05MSw2ICsxMDIsMjUgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
RmFzdChUZXN0RXZlbnRUYXJnZXQqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW4KIH0KIAogdGVt
cGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRlc3RFdmVudFRhcmdldCog
aW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBh
YmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVyLkdldElzb2xhdGUoKSkgPT0g
TWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhO
dWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAg
ICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICBy
ZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRl
KCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJs
ZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFz
c1JlZlB0cjwgVGVzdEV2ZW50VGFyZ2V0ID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBj
b250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0b1Y4RmFzdEZv
ck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVt
cGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RFdmVudFRhcmdldCA+
IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBw
YWJsZSkKIHsKICAgICByZXR1cm4gdG9WOEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFw
cGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcAppbmRleCBlNmM1MWIyOTMyZDhjZGYxYmQzN2E3
ZDYyYjdhMmZlOTkyNmJlNDdlLi40MTI5OWVmYjFiNTQ0M2RjMTdjMDQ0NjM0MWRmZGEwNjZlZTdk
OTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcApAQCAtODAsMjEgKzgwLDMyIEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbmFtZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwKICAgICByZXR1cm4gVGVzdEV4Y2VwdGlvblY4SW50ZXJuYWw6Om5hbWVB
dHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IG5hbWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RFeGNlcHRpb24qIGltcCA9
IFY4VGVzdEV4Y2VwdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4
U3RyaW5nKGltcC0+bmFtZSgpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFuZGxl
KTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuYW1lQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0RXhjZXB0aW9uVjhJbnRlcm5hbDo6
bmFtZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFRlc3RFeGNlcHRpb25WOEludGVybmFsCiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3Vy
YXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0RXhjZXB0aW9uQXR0cnNbXSA9IHsKICAgICAv
LyBBdHRyaWJ1dGUgJ25hbWUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAn
JykKLSAgICB7Im5hbWUiLCBUZXN0RXhjZXB0aW9uVjhJbnRlcm5hbDo6bmFtZUF0dHJHZXR0ZXJD
YWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJuYW1lIiwgVGVzdEV4Y2VwdGlvblY4
SW50ZXJuYWw6Om5hbWVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIFRlc3RFeGNlcHRpb25WOEludGVy
bmFsOjpuYW1lQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKIH07CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29u
ZmlndXJlVjhUZXN0RXhjZXB0aW9uVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdv
cmxkVHlwZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29u
ZmlndXJlVjhUZXN0RXhjZXB0aW9uVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1
cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAg
IHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwogICAgIGRlZmF1bHRT
aWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJU
ZXN0RXhjZXB0aW9uIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4
VGVzdEV4Y2VwdGlvbjo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICBWOFRlc3RFeGNlcHRp
b25BdHRycywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RFeGNlcHRpb25BdHRycyksCi0gICAgICAg
IDAsIDAsIGlzb2xhdGUpOworICAgICAgICAwLCAwLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBl
KTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMs
IGl0IHdpbGwgbm90IGJlIHVzZWQuCiAgICAgCiAKQEAgLTEwMywyMyArMTE0LDIzIEBAIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXhj
ZXB0aW9uVGVtcGxhdGUodjg6CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFeGNlcHRpb246OkdldFRlbXBsYXRlKHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFeGNlcHRpb246OkdldFRlbXBsYXRlKHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7
CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJl
c3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNv
bGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1h
cChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEt
PnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVz
dWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1
cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRU
eXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5
cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25U
ZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xh
dGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3Js
ZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBW
OFRlc3RFeGNlcHRpb246Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwg
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBW
OFRlc3RFeGNlcHRpb246Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwg
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkK
IHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFu
Y2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5
cGUpOwogfQogCiBib29sIFY4VGVzdEV4Y2VwdGlvbjo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhj
ZXB0aW9uLmgKaW5kZXggYmFlMjJlY2EyODg1MTc1NjA0MTc4NTNhOGI5ZDQ3Yzk5MTMxODIyOS4u
MDcyYWJjZjJlMjY3MWRlYzQyZmEyM2RlMDBhZWFiMmM5NTNhNjE4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRp
b24uaApAQCAtNzUsNiArNzUsMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
KFRlc3RFeGNlcHRpb24qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3IKICAgICByZXR1
cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoVGVzdEV4Y2VwdGlvbiogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlz
b2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3Jl
OjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5l
ciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFz
dChUZXN0RXhjZXB0aW9uKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwg
V3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CkBAIC04Nyw2ICs5OCwyNSBAQCBpbmxpbmUgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RFeGNlcHRpb24qIGltcGwsIGNvbnN0IEhvbGRl
ckNvbnRhaW5lcgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdy
YXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29y
bGQoVGVzdEV4Y2VwdGlvbiogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIs
IFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVy
LkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQor
ICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1h
aW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNv
bnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWlu
ZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZh
c3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdEV4Y2VwdGlvbiA+IGltcGwsIGNvbnN0IEhv
bGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBy
ZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFi
bGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBh
YmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBU
ZXN0RXhjZXB0aW9uID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdy
YXBwYWJsZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBj
b250YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDljYzBjZDgy
ZDVlYzRkZDM1ODRmNzMyZWI2ZjQyMWM5YTcwZTI0ZWYuLjNkYzdhOTYyODcxODM2ZWQxYzMzOTJm
MGFiZDRmMTU1ZjZhZDk1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC05Nyw2ICs5Nywy
NCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0YXRpY1JlYWRP
bmx5QXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2OAogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3Vw
cGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICByZXR1cm4gdjhJbnRlZ2VyKFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0YXRpY1Jl
YWRPbmx5QXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1l
bnRhbFN0YXRpY1JlYWRPbmx5QXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCiBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIHJldHVybiB2OFN0cmluZyhUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50
YWxTdGF0aWNBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUpOwpA
QCAtMTE1LDYgKzEzMywyNCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1l
bnRhbFN0YXRpY0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPAogCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgcmV0dXJuIHY4U3RyaW5nKFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0
YXRpY0F0dHIoKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhhbmRsZSk7Cit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKwor
I2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RJbnRlcmZhY2VWOEludGVybmFs
OjpzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZv
KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisK
IHN0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNF
X1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CkBAIC0xMzUsNiArMTcxLDI2IEBA
IHN0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVO
QUJMRShDb25kaXRpb24xMikKIAorc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3RhdGljQXR0ckF0
dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPD4s
IHYsIHZhbHVlKTsKKyAgICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxTdGF0aWNB
dHRyKHYpOworICAgIHJldHVybjsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMTIpCisKK3N0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRy
U2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0
clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjFBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RJbnRlcmZh
Y2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0x
NTQsNiArMjEwLDI1IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFs
U3RyMUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0CiAKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIAorc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBzdXBwbGVtZW50YWxTdHIxQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIHJldHVybiB2OFN0cmluZyhUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxT
dHIxKGltcCksIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUpOworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKKyNp
ZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxTdHIxQXR0ckdldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxl
bWVudGFsU3RyMUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RJ
bnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CkBAIC0xNzMsNiArMjQ4LDI1IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxl
bWVudGFsU3RyMkF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0CiAKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIAorc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxTdHIyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIHJldHVybiB2OFN0cmluZyhUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVt
ZW50YWxTdHIyKGltcCksIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUpOwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIp
CisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxTdHIyQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6
c3VwcGxlbWVudGFsU3RyMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKwor
I2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCiBzdGF0aWMg
dm9pZCBzdXBwbGVtZW50YWxTdHIyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCiB7CiAgICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE5NCw2ICsyODgsMjcgQEAgc3RhdGljIHZvaWQgc3VwcGxl
bWVudGFsU3RyMkF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkwKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQog
CitzdGF0aWMgdm9pZCBzdXBwbGVtZW50YWxTdHIyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhU
ZXN0SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBWOFRSWUNBVENIX0ZP
Ul9WOFNUUklOR1JFU09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7Cisg
ICAgVGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsU3RyMihpbXAsIHYpOworICAgIHJl
dHVybjsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIp
CisKK3N0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbFN0cjJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RJbnRlcmZhY2VW
OEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2
YWx1ZSwgaW5mbyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjNB
dHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgcmV0dXJuIFY4VGVzdEludGVyZmFjZTo6c3VwcGxl
bWVudGFsU3RyM0F0dHJHZXR0ZXJDdXN0b20obmFtZSwgaW5mbyk7CkBAIC0yMDMsNiArMzE4LDE1
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RyM0F0dHJHZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8
IEVOQUJMRShDb25kaXRpb24xMikKIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBw
bGVtZW50YWxTdHIzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVy
biBWOFRlc3RJbnRlcmZhY2U6OnN1cHBsZW1lbnRhbFN0cjNBdHRyR2V0dGVyQ3VzdG9tKG5hbWUs
IGluZm8pOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKKwogc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3RyM0F0dHJTZXR0ZXJDYWxsYmFjayh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVjhUZXN0SW50ZXJmYWNlOjpzdXBwbGVt
ZW50YWxTdHIzQXR0clNldHRlckN1c3RvbShuYW1lLCB2YWx1ZSwgaW5mbyk7CkBAIC0yMTIsNiAr
MzM2LDE1IEBAIHN0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbFN0cjNBdHRyU2V0dGVyQ2FsbGJhY2so
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIAorc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsU3Ry
M0F0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVjhUZXN0SW50ZXJmYWNlOjpzdXBwbGVtZW50YWxTdHIzQXR0clNldHRlckN1
c3RvbShuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjEyKQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBs
ZW1lbnRhbE5vZGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVz
dEludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0yMzEsNiArMzY0LDI1IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsTm9kZUF0dHJHZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYWw8djg6OlN0CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVO
QUJMRShDb25kaXRpb24xMikKIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVt
ZW50YWxOb2RlQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0SW50ZXJmYWNlKiBp
bXAgPSBWOFRlc3RJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVy
biB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxOb2Rl
KGltcCksIGluZm8sIGltcCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8
IEVOQUJMRShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjEyKQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRh
bE5vZGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RJ
bnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0ckdldHRlckZvck1haW5Xb3Js
ZChuYW1lLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTIpCisKIHN0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbE5vZGVBdHRyU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRl
c3RJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMjUyLDYgKzQwNCwyNyBA
QCBzdGF0aWMgdm9pZCBzdXBwbGVtZW50YWxOb2RlQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TAogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCiAKK3N0YXRpYyB2b2lkIHN1cHBsZW1lbnRhbE5vZGVBdHRyU2V0
dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OworICAgIE5vZGUqIHYgPSBWOE5vZGU6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xh
dGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgVGVzdFN1cHBsZW1l
bnRhbDo6c2V0U3VwcGxlbWVudGFsTm9kZShpbXAsIFdURjo6Z2V0UHRyKHYpKTsKKyAgICByZXR1
cm47Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRp
b24xMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQor
CitzdGF0aWMgdm9pZCBzdXBwbGVtZW50YWxOb2RlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0SW50ZXJmYWNlVjhJ
bnRlcm5hbDo6c3VwcGxlbWVudGFsTm9kZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFs
dWUsIGluZm8pOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRp
b24xMikKKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxNZXRob2Qx
TWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgVGVzdEludGVyZmFjZSog
aW1wID0gVjhUZXN0SW50ZXJmYWNlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKQEAgLTM1Nywy
NyArNTMwLDI3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IoY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246
OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0SW50ZXJmYWNlQXR0cnNbXSA9IHsKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICAvLyBBdHRyaWJ1dGUgJ3N1
cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0cicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUn
IEV4dEF0dHI6ICdDb25kaXRpb25hbCBJbXBsZW1lbnRlZEJ5JykKLSAgICB7InN1cHBsZW1lbnRh
bFN0YXRpY1JlYWRPbmx5QXR0ciIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50
YWxTdGF0aWNSZWFkT25seUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAorICAgIHsic3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyIiwgVGVzdEludGVyZmFjZVY4
SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0ckF0dHJHZXR0ZXJDYWxsYmFj
aywgMCwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5
QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAj
ZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgLy8gQXR0cmli
dXRlICdzdXBwbGVtZW50YWxTdGF0aWNBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjog
J0NvbmRpdGlvbmFsIEltcGxlbWVudGVkQnknKQotICAgIHsic3VwcGxlbWVudGFsU3RhdGljQXR0
ciIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGlj
QXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJzdXBwbGVtZW50
YWxTdGF0aWNBdHRyIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRp
Y0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVt
ZW50YWxTdGF0aWNBdHRyQXR0clNldHRlckNhbGxiYWNrLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5h
bDo6c3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwg
VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyU2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogI2VuZGlmIC8vIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogI2lmIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIC8vIEF0dHJpYnV0ZSAnc3VwcGxlbWVudGFs
U3RyMScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDb25kaXRpb25hbCBJ
bXBsZW1lbnRlZEJ5JykKLSAgICB7InN1cHBsZW1lbnRhbFN0cjEiLCBUZXN0SW50ZXJmYWNlVjhJ
bnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyMUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgeyJzdXBwbGVtZW50YWxTdHIxIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6
OnN1cHBsZW1lbnRhbFN0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIFRlc3RJbnRlcmZhY2VWOElu
dGVybmFsOjpzdXBwbGVtZW50YWxTdHIxQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAw
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRp
b24xMikKICAgICAvLyBBdHRyaWJ1dGUgJ3N1cHBsZW1lbnRhbFN0cjInIChUeXBlOiAnYXR0cmli
dXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCi0gICAgeyJzdXBwbGVt
ZW50YWxTdHIyIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRy
R2V0dGVyQ2FsbGJhY2ssIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIy
QXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InN1cHBsZW1lbnRhbFN0
cjIiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyMkF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRyU2V0
dGVyQ2FsbGJhY2ssIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIyQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3Vw
cGxlbWVudGFsU3RyMkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIp
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgLy8g
QXR0cmlidXRlICdzdXBwbGVtZW50YWxTdHIzJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjog
J0N1c3RvbVNldHRlciBDdXN0b21HZXR0ZXIgQ29uZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCi0g
ICAgeyJzdXBwbGVtZW50YWxTdHIzIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1l
bnRhbFN0cjNBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBw
bGVtZW50YWxTdHIzQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InN1
cHBsZW1lbnRhbFN0cjMiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3Ry
M0F0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRh
bFN0cjNBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVt
ZW50YWxTdHIzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0SW50ZXJmYWNlVjhJ
bnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyM0F0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCiAgICAgLy8gQXR0cmlidXRlICdzdXBwbGVtZW50YWxOb2RlJyAoVHlwZTogJ2F0dHJpYnV0
ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFsIEltcGxlbWVudGVkQnknKQotICAgIHsic3VwcGxlbWVu
dGFsTm9kZSIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTm9kZUF0
dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJzdXBwbGVtZW50YWxOb2Rl
IiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRyR2V0dGVyQ2Fs
bGJhY2ssIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0clNldHRl
ckNhbGxiYWNrLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTm9kZUF0dHJH
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBs
ZW1lbnRhbE5vZGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQog
fTsKIApAQCAtNDE4LDE0ICs1OTEsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdElu
dGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIHJl
dHVybiBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6Y29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0
SW50ZXJmYWNlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRl
c2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0
SW50ZXJmYWNlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRl
c2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5
cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2
ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwogICAgIGRlZmF1bHRTaWduYXR1cmUgPSBW
OERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0SW50ZXJmYWNl
Iiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdEludGVyZmFj
ZTo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICBWOFRlc3RJbnRlcmZhY2VBdHRycywgV1RG
X0FSUkFZX0xFTkdUSChWOFRlc3RJbnRlcmZhY2VBdHRycyksCi0gICAgICAgIFY4VGVzdEludGVy
ZmFjZU1ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0SW50ZXJmYWNlTWV0aG9kcyksIGlz
b2xhdGUpOworICAgICAgICBWOFRlc3RJbnRlcmZhY2VNZXRob2RzLCBXVEZfQVJSQVlfTEVOR1RI
KFY4VGVzdEludGVyZmFjZU1ldGhvZHMpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAg
ICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdp
bGwgbm90IGJlIHVzZWQuCiAjaWYgRU5BQkxFKFRFU1RfSU5URVJGQUNFKQogICAgIGRlc2MtPlNl
dENhbGxIYW5kbGVyKFY4VGVzdEludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayk7CkBAIC00
MzgsNyArNjExLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKIAogICAgIC8vIEN1c3RvbSBT
aWduYXR1cmUgJ3N1cHBsZW1lbnRhbE1ldGhvZDInCiAgICAgY29uc3QgaW50IHN1cHBsZW1lbnRh
bE1ldGhvZDJBcmdjID0gMjsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBz
dXBwbGVtZW50YWxNZXRob2QyQXJndltzdXBwbGVtZW50YWxNZXRob2QyQXJnY10gPSB7IHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdXBwbGVtZW50YWxNZXRob2QyQXJndltz
dXBwbGVtZW50YWxNZXRob2QyQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRl
c3RPYmo6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2ln
bmF0dXJlPiBzdXBwbGVtZW50YWxNZXRob2QyU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3
KGRlc2MsIHN1cHBsZW1lbnRhbE1ldGhvZDJBcmdjLCBzdXBwbGVtZW50YWxNZXRob2QyQXJndik7
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgcHJv
dG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN1cHBsZW1lbnRhbE1ldGhvZDIiKSwgdjg6
OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVu
dGFsTWV0aG9kMk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdXBwbGVtZW50YWxNZXRo
b2QyU2lnbmF0dXJlKSk7CkBAIC00NTMsMjMgKzYyNiwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRl
KHY4OgogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gVjhUZXN0SW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gVjhUZXN0SW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNv
bGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVySXNv
bGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4
UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1w
bGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+
dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1w
bGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxk
VHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChj
dXJyZW50V29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAK
ICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0SW50ZXJm
YWNlVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUs
IHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8s
IHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUoZGF0YS0+
cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29y
bGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmlu
Zm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0SW50ZXJmYWNl
OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0SW50ZXJmYWNl
OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJu
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1
ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogYm9v
bCBWOFRlc3RJbnRlcmZhY2U6Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCmluZGV4
IGFlYTE5Yzk4NDViMWFhYmEwY2UwMmFhN2U2Yjc5NTg3OTU3YjFhNzcuLjhkNTEwOGE3ODJjMDE5
ZWVkMjNmYWI2YzVhMTAyYTVlNDhhODY2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKQEAgLTc5LDYg
Kzc5LDE3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0SW50ZXJmYWNl
KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyCiAgICAgcmV0dXJuIHdyYXAoaW1wbCwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4Rm9yTWFpbldvcmxkKFRlc3RJbnRlcmZhY2UqIGltcGwsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBB
U1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZ
KCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZv
ck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBw
YWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdEludGVyZmFj
ZSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3Jh
cHBhYmxlKQogewpAQCAtOTEsNiArMTAyLDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZhc3QoVGVzdEludGVyZmFjZSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyCiB9
CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5s
aW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0SW50ZXJm
YWNlKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3
cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgp
KSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVy
biB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwp
OworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOwor
ICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElz
b2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3Jh
cHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3Js
ZChQYXNzUmVmUHRyPCBUZXN0SW50ZXJmYWNlID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVy
JiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0b1Y4RmFz
dEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKKwor
dGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RJbnRlcmZhY2Ug
PiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFw
cGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3Jh
cHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApp
bmRleCA4NWZjYzVjYzExNTRkN2Y1ZWJiNzVkMGVmNmNhZGUzMWQyYWFlNWJkLi5iMWZmMjNjYzQ4
ZTBiNGEzOTkyMjhjYjAxMGY0ZDZhYzllYTg5ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC05MiwxNCArOTIsMTQgQEAgc3RhdGljIGNvbnN0
IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZE1ldGhvZCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyTWV0aG8KICAgICB7Im1ldGhvZCIsIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVjhJ
bnRlcm5hbDo6bWV0aG9kTWV0aG9kQ2FsbGJhY2t9LAogfTsKIAotc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2Ms
IHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJy
ZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2
ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBkZWZhdWx0U2ln
bmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4oKSwgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW50ZXJuYWxGaWVsZENvdW50
LAogICAgICAgICAwLCAwLAotICAgICAgICBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyTWV0
aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyTWV0aG9k
cyksIGlzb2xhdGUpOworICAgICAgICBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyTWV0aG9k
cywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyTWV0aG9kcyks
IGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2ln
bmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IGRlc2MtPkluc3RhbmNlVGVtcGxh
dGUoKTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90byA9IGRlc2MtPlBy
b3RvdHlwZVRlbXBsYXRlKCk7CkBAIC0xMTIsMjMgKzExMiwyMyBAQCBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZQogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6
OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJl
bnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5m
byk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgp
KQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBk
YXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAo
cmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAg
ICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVT
Y29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQot
ICAgICAgICBDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGVtcGxhdGUoZGF0
YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0g
ICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAg
ICAgQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRlbXBsYXRlKGRhdGEtPnJh
d1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxk
VHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZv
LCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXI6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRX
b3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSkt
Pmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJy
ZW50V29ybGRUeXBlKTsKIH0KIAogYm9vbCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpI
YXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5o
CmluZGV4IDEwNzE3ZmZiOTg3MGZlZGYxZWQyODA5OWI3ZTVmODhiYzg1ZjE5YmUuLmRhNGU4Zjgx
YjBmYWNjOGRkYTg3MjE5MDY0NTg5YjBmMmVlMGY5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuaApAQCAtNzUsNiArNzUsMTcgQEAgaW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBpbXBsLCB2ODo6
SGFuZGxlPHYKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRU
eXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAg
ICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChp
bXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBl
cjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQor
CiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdy
YXBwYWJsZSkKIHsKQEAgLTg3LDYgKzk4LDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZhc3QoVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIGNvbnN0IEhvCiB9
CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5s
aW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lciogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIs
IFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVy
LkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQor
ICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1h
aW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNv
bnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWlu
ZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZh
c3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgPiBp
bXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFi
bGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRh
aW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIs
IGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3Qo
UGFzc1JlZlB0cjwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgPiBpbXBsLCBjb25zdCBIb2xk
ZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0
dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA4ZDA1NGRjY2YyMGI2ZGM5MjUyMzViOTFj
NmY2ZTVlNTUzNWNiNDU1Li40MTk1ZjMwMDY4YzEzNzBiNWY5ZGQyNzljYmE1MzY4ODEwNjk2Zjk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0xMDksNyArMTA5LDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29u
c3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODoKICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVj
LCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3Ry
dWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBjYWNoZWRUZW1wbGF0ZTsKICAgICBpZiAoIWNhY2hlZFRlbXBsYXRlLklz
RW1wdHkoKSkKQEAgLTEyMSwyMCArMTIxLDIwIEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkdldFRlbXBsCiAg
ICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSByZXN1bHQtPkluc3Rh
bmNlVGVtcGxhdGUoKTsKICAgICBpbnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4VGVz
dE5hbWVkQ29uc3RydWN0b3I6OmludGVybmFsRmllbGRDb3VudCk7CiAgICAgcmVzdWx0LT5TZXRD
bGFzc05hbWUodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJUZXN0TmFtZWRDb25zdHJ1Y3RvciIpKTsK
LSAgICByZXN1bHQtPkluaGVyaXQoVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUo
aXNvbGF0ZSwgd29ybGRUeXBlKSk7CisgICAgcmVzdWx0LT5Jbmhlcml0KFY4VGVzdE5hbWVkQ29u
c3RydWN0b3I6OkdldFRlbXBsYXRlKGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpKTsKIAogICAg
IGNhY2hlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpO
ZXcoaXNvbGF0ZSwgcmVzdWx0KTsKICAgICByZXR1cm4gY2FjaGVkVGVtcGxhdGU7CiB9CiAKLXN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0
TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5
cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3Vy
ZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUg
Y3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAg
ICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVs
dFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywg
IlRlc3ROYW1lZENvbnN0cnVjdG9yIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+KCksIFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OmludGVybmFsRmllbGRDb3VudCwKICAgICAg
ICAgMCwgMCwKLSAgICAgICAgMCwgMCwgaXNvbGF0ZSk7CisgICAgICAgIDAsIDAsIGlzb2xhdGUs
IGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsg
Ly8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICAKIApAQCAtMTQzLDIz
ICsxNDMsMjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBD
b25maWd1cmVWOFRlc3ROYW1lZENvbnN0cnVjdG9yVGVtcGwKICAgICByZXR1cm4gZGVzYzsKIH0K
IAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5hbWVkQ29uc3Ry
dWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RO
YW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBl
cldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRh
dGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURh
dGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3Js
ZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgm
aW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRU
eXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFu
ZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRl
bXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3Js
ZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1w
bCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbGF0ZShkYXRh
LT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRX
b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgm
aW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3ROYW1lZENv
bnN0cnVjdG9yOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVl
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBl
KQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0
YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxk
VHlwZSk7CiB9CiAKIGJvb2wgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2VJbkFu
eVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaAppbmRleCAzMGE3NTZiNjQ5YjY5YmE1ZDk0
M2QxZTc4ZGU4YzgzM2NlNTUyMzU0Li44NWVjNWZkYmQwZTViMDUxY2QyZjRkY2M3MzU0NGJiNmE3
MDI1ZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgKQEAgLTgyLDYgKzgyLDE3
IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0TmFtZWRDb25zdHJ1Y3Rv
ciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqCiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4Rm9yTWFpbldvcmxkKFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAg
QVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VM
WSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CisgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJG
b3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFw
cGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3ROYW1lZENv
bnN0cnVjdG9yKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBh
YmxlKiB3cmFwcGFibGUpCiB7CkBAIC05NCw2ICsxMDUsMjUgQEAgaW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1wbCwgY29uc3QgSG9s
ZGVyQ28KIH0KIAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFi
bGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRl
c3ROYW1lZENvbnN0cnVjdG9yKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5l
ciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWlu
ZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkp
CisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9y
TWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwg
Y29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRh
aW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0TmFtZWRDb25zdHJ1Y3RvciA+IGltcGws
IGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkK
K3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVy
LCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xh
c3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNz
UmVmUHRyPCBUZXN0TmFtZWRDb25zdHJ1Y3RvciA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5l
ciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKICAgICByZXR1cm4gdG9WOEZh
c3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCmluZGV4IDI1
OTg4NTMwZjBiODdiMjJmOGYwMmNlNjk4ZDAxOTg0MGYxOWUwMDMuLjZkYTFkZTQyNmNmMTc4NDM0
ZmQ5ZDZiNjczOWU1ZmJmMDU1YjliZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKQEAgLTkzLDE0ICs5MywxNCBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0Tm9kZTo6Y29uc3RydWN0b3JDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiBUZXN0Tm9kZVY4SW50ZXJuYWw6
OmNvbnN0cnVjdG9yKGFyZ3MpOwogfQogCi1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJX
b3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBDb25maWd1cmVWOFRlc3ROb2RlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRU
eXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsK
IAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwotICAgIGRl
ZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRl
c2MsICJUZXN0Tm9kZSIsIFY4Tm9kZTo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSwg
VjhUZXN0Tm9kZTo6aW50ZXJuYWxGaWVsZENvdW50LAorICAgIGRlZmF1bHRTaWduYXR1cmUgPSBW
OERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0Tm9kZSIsIFY4
Tm9kZTo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSksIFY4VGVzdE5vZGU6
OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgMCwgMCwKLSAgICAgICAgMCwgMCwgaXNvbGF0
ZSk7CisgICAgICAgIDAsIDAsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIFVOVVNF
RF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3Qg
YmUgdXNlZC4KICAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOFRlc3ROb2RlOjpjb25zdHJ1Y3Rv
ckNhbGxiYWNrKTsKICAgICAKQEAgLTExMCwyMyArMTEwLDIzIEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0Tm9kZVRlbXBsYXRlKHY4
OjpQZXJzCiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBWOFRlc3ROb2RlOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gVjhUZXN0Tm9kZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRh
KiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xh
dGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZp
bmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdv
cmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6
OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1wbGF0ZShk
YXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsK
LSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAg
ICAgICBDb25maWd1cmVWOFRlc3ROb2RlVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8s
IGN1cnJlbnRXb3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKKyAgICBkYXRh
LT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICBy
ZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0Tm9kZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdE5vZGU6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3Vy
cmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUs
IGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiBib29sIFY4VGVzdE5vZGU6Okhhc0luc3RhbmNlSW5B
bnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3ROb2RlLmgKaW5kZXggOTQ0YjJhODliOGRjOGQ5ZjVlMmJiOWU0MGVjMWU1ZjhjMzhlMjhkYi4u
YWNmZTE1NTRjZWUyYjZmODA4MzhiYjBhZDkzZDBkY2VmOGNlNTA1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCkBAIC03
Nyw2ICs3NywxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdE5vZGUq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpbwogICAgIHJldHVybiB3cmFwKGlt
cGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0Tm9kZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFT
U0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFko
IWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9y
TWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBh
YmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0Tm9kZSogaW1w
bCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxl
KQogewpAQCAtODksNiArMTAwLDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OEZhc3QoVGVzdE5vZGUqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29uCiB9CiAKIHRl
bXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0Tm9kZSogaW1wbCwg
Y29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQor
eworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldv
cmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNv
bnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAo
IXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4g
d3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOwor
fQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lu
bGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0
cjwgVGVzdE5vZGUgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3Jh
cHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGlt
cGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBI
b2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdE5vZGUgPiBpbXBsLCBjb25zdCBIb2xkZXJD
b250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJu
IHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5k
ZXggNzIwNWFlMTM2MDIxNTI4YjkzOWVlMWMxZmY3YmJiODYyODQ3OGJkMy4uNDhiOTQzNWU1ZGEy
NjRiYzhlNmQ5YTU0Njg2ODA5YTQxNTFlY2QyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTEyMyw2ICsxMjMs
MTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWFkT25seUxvbmdBdHRyQXR0ckdl
dHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJu
YWw6OnJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPnJlYWRPbmx5TG9uZ0F0dHIoKSwgaW5m
by5HZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRP
bmx5TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJu
IFRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seUxvbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3Js
ZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWFkT25s
eVN0cmluZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMzQsNiArMTQ1LDE3IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZE9ubHlTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4
OjpMb2NhbDx2ODo6CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVN0cmlu
Z0F0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHJlYWRPbmx5U3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBy
ZXR1cm4gdjhTdHJpbmcoaW1wLT5yZWFkT25seVN0cmluZ0F0dHIoKSwgaW5mby5HZXRJc29sYXRl
KCksIFJldHVyblVuc2FmZUhhbmRsZSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcmVhZE9ubHlTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlTdHJpbmdBdHRyQXR0ckdldHRl
ckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiByZWFkT25seVRlc3RPYmpBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTUyLDYgKzE3NCwyNCBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRPbmx5VGVzdE9iakF0dHJBdHRyR2V0
dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6
cmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKKyAgICBSZWZQdHI8VGVzdE9iaj4gcmVzdWx0ID0gaW1wLT5yZWFkT25seVRlc3RP
YmpBdHRyKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSByZXN1bHQuZ2V0
KCkgPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyKHJlc3Vs
dC5nZXQoKSwgaW5mby5HZXRJc29sYXRlKCkpKSA6IHY4VW5kZWZpbmVkKCk7CisgICAgaWYgKHdy
YXBwZXIuSXNFbXB0eSgpKSB7CisgICAgICAgIHdyYXBwZXIgPSB0b1Y4KHJlc3VsdC5nZXQoKSwg
aW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgICAgICBpZiAoIXdyYXBwZXIu
SXNFbXB0eSgpKQorICAgICAgICAgICAgVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OnNldE5hbWVkSGlk
ZGVuUmVmZXJlbmNlKGluZm8uSG9sZGVyKCksICJyZWFkT25seVRlc3RPYmpBdHRyIiwgd3JhcHBl
cik7CisgICAgfQorICAgIHJldHVybiB3cmFwcGVyOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHJlYWRPbmx5VGVzdE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVRlc3RPYmpBdHRy
QXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzdGF0aWNSZWFkT25seUxvbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBy
ZXR1cm4gdjhJbnRlZ2VyKFRlc3RPYmo6OnN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIoKSwgaW5mby5H
ZXRJc29sYXRlKCkpOwpAQCAtMTYyLDYgKzIwMiwxNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHN0YXRpY1JlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2Fs
PAogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljUmVhZE9ubHlMb25nQXR0ckF0
dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
c3RhdGljUmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0
dXJuIHY4SW50ZWdlcihUZXN0T2JqOjpzdGF0aWNSZWFkT25seUxvbmdBdHRyKCksIGluZm8uR2V0
SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdGF0aWNSZWFk
T25seUxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVy
biBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljUmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXJGb3JN
YWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
c3RhdGljU3RyaW5nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgcmV0dXJuIHY4U3RyaW5nKFRlc3RP
Ymo6OnN0YXRpY1N0cmluZ0F0dHIoKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhh
bmRsZSk7CkBAIC0xNzIsNiArMjIyLDE2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
c3RhdGljU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0CiAgICAg
cmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNTdHJpbmdBdHRyQXR0ckdldHRlcihuYW1l
LCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdGF0aWNTdHJpbmdB
dHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gdjhTdHJpbmcoVGVzdE9i
ajo6c3RhdGljU3RyaW5nQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFu
ZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdGF0aWNTdHJpbmdBdHRy
QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJ
bnRlcm5hbDo6c3RhdGljU3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5m
byk7Cit9CisKIHN0YXRpYyB2b2lkIHN0YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09V
UkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CkBAIC0xODQsNiArMjQ0LDE4
IEBAIHN0YXRpYyB2b2lkIHN0YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRp
Y1N0cmluZ0F0dHJBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZv
aWQgc3RhdGljU3RyaW5nQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9J
RChWOFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKKyAgICBUZXN0T2JqOjpzZXRTdGF0aWNT
dHJpbmdBdHRyKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgc3RhdGljU3RyaW5n
QXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0cmluZ0F0dHJBdHRyU2V0
dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBlbnVtQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE5NSw2ICsyNjcsMTcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnVtQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmEKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVu
dW1BdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBlbnVtQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhT
dHJpbmcoaW1wLT5lbnVtQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFu
ZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnVtQXR0ckF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6
OmVudW1BdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGlj
IHZvaWQgZW51bUF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpA
QCAtMjExLDYgKzI5NCwyMiBAQCBzdGF0aWMgdm9pZCBlbnVtQXR0ckF0dHJTZXR0ZXJDYWxsYmFj
ayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OgogICAgIFRlc3RPYmpW
OEludGVybmFsOjplbnVtQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitz
dGF0aWMgdm9pZCBlbnVtQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lE
KFY4U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOworICAgIFN0cmluZyBzdHJpbmcgPSB2Owor
ICAgIGlmICghKHN0cmluZyA9PSAiIiB8fCBzdHJpbmcgPT0gIkVudW1WYWx1ZTEiIHx8IHN0cmlu
ZyA9PSAiRW51bVZhbHVlMiIgfHwgc3RyaW5nID09ICJFbnVtVmFsdWUzIikpCisgICAgICAgIHJl
dHVybjsKKyAgICBpbXAtPnNldEVudW1BdHRyKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGlj
IHZvaWQgZW51bUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjplbnVtQXR0ckF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHNob3J0QXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTIyMiw2ICszMjEsMTcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzaG9ydEF0dHJBdHRyR2V0dGVyQ2FsbGJh
Y2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6
OnNob3J0QXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gc2hvcnRBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVy
biB2OEludGVnZXIoaW1wLT5zaG9ydEF0dHIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNob3J0QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnNob3J0QXR0ckF0
dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHNob3J0
QXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0yMzUsNiAr
MzQ1LDE5IEBAIHN0YXRpYyB2b2lkIHNob3J0QXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4CiAgICAgVGVzdE9ialY4SW50ZXJuYWw6
OnNob3J0QXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9p
ZCBzaG9ydEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRTaG9ydEF0
dHIodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBzaG9ydEF0dHJBdHRyU2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RPYmpWOEludGVybmFsOjpzaG9ydEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUs
IHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1bnNpZ25l
ZFNob3J0QXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTI0Niw2ICszNjksMTcgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB1bnNpZ25lZFNob3J0QXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6
TG9jYWw8djg6OlMKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkU2hvcnRB
dHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB1bnNpZ25lZFNob3J0QXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1
cm4gdjhJbnRlZ2VyKGltcC0+dW5zaWduZWRTaG9ydEF0dHIoKSwgaW5mby5HZXRJc29sYXRlKCkp
OworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHVuc2lnbmVkU2hvcnRBdHRyQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6dW5zaWduZWRTaG9ydEF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8p
OworfQorCiBzdGF0aWMgdm9pZCB1bnNpZ25lZFNob3J0QXR0ckF0dHJTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0yNTksNiArMzkzLDE5IEBAIHN0YXRpYyB2b2lkIHVu
c2lnbmVkU2hvcnRBdHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6CiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkU2hvcnRBdHRyQXR0clNl
dHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHVuc2lnbmVkU2hvcnRB
dHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
KyAgICBpbnQgdiA9IHRvVUludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNldFVuc2lnbmVkU2hvcnRB
dHRyKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgdW5zaWduZWRTaG9ydEF0dHJB
dHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZFNob3J0QXR0ckF0dHJTZXR0ZXJG
b3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGxvbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMjcwLDYgKzQxNywxNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYQogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0
dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGxvbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OEludGVn
ZXIoaW1wLT5sb25nQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gbG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0dHJHZXR0ZXJGb3JN
YWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGxvbmdBdHRyQXR0clNldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTI4Myw2ICs0NDEsMTkgQEAgc3Rh
dGljIHZvaWQgbG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODoKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0dHJBdHRy
U2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgbG9uZ0F0dHJBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGlu
dCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRMb25nQXR0cih2KTsKKyAgICByZXR1
cm47Cit9CisKK3N0YXRpYyB2b2lkIGxvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5h
bDo6bG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30K
Kwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBsb25nTG9uZ0F0dHJBdHRyR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CkBAIC0yOTQsNiArNDY1LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbG9uZ0xv
bmdBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nCiAgICAgcmV0dXJu
IFRlc3RPYmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwog
fQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGxvbmdMb25nQXR0ckF0dHJHZXR0ZXJG
b3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KHN0YXRpY19jYXN0PGRv
dWJsZT4oaW1wLT5sb25nTG9uZ0F0dHIoKSkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGxvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGxvbmdMb25nQXR0ckF0dHJTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0zMDcsNiArNDg5LDE5IEBAIHN0
YXRpYyB2b2lkIGxvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdMb25nQXR0
ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBsb25nTG9u
Z0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OworICAgIGxvbmcgbG9uZyB2ID0gdG9JbnQ2NCh2YWx1ZSk7CisgICAgaW1wLT5zZXRMb25nTG9u
Z0F0dHIodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBsb25nTG9uZ0F0dHJBdHRy
U2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIFRlc3RPYmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldv
cmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTMxOCw2ICs1MTMsMTcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djgKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnVu
c2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKKyAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KHN0YXRpY19jYXN0PGRvdWJsZT4o
aW1wLT51bnNpZ25lZExvbmdMb25nQXR0cigpKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0
ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHVu
c2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKQEAgLTMzMSw2ICs1MzcsMTkgQEAgc3RhdGljIHZvaWQgdW5zaWduZWRMb25nTG9uZ0F0dHJB
dHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHYKICAgICBUZXN0
T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyKG5hbWUsIHZhbHVl
LCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgdW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVy
Rm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyB2ID0gdG9VSW50NjQodmFsdWUpOworICAgIGltcC0+c2V0VW5zaWduZWRMb25n
TG9uZ0F0dHIodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCB1bnNpZ25lZExvbmdM
b25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRy
QXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTM0Miw2ICs1
NjEsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyQXR0ckdldHRl
ckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6c3RyaW5nQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAg
ICByZXR1cm4gdjhTdHJpbmcoaW1wLT5zdHJpbmdBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpLCBS
ZXR1cm5VbnNhZmVIYW5kbGUpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0
cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRl
c3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBp
bmZvKTsKK30KKwogc3RhdGljIHZvaWQgc3RyaW5nQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0zNTUsNiArNTg1LDE5IEBAIHN0YXRpYyB2b2lkIHN0cmlu
Z0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2CiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJBdHRyU2V0dGVyKG5hbWUs
IHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgc3RyaW5nQXR0ckF0dHJTZXR0ZXJGb3JN
YWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgVjhUUllDQVRDSF9G
T1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lEKFY4U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOwor
ICAgIGltcC0+c2V0U3RyaW5nQXR0cih2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lk
IHN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyQXR0clNl
dHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdGVzdE9iakF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0zNjcsNiArNjEwLDE4
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGVzdE9iakF0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFs
Ojp0ZXN0T2JqQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdGVzdE9iakF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAg
cmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcC0+dGVzdE9iakF0dHIoKSwgaW5mbywgaW1w
KTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0ZXN0T2JqQXR0ckF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBGZWF0dXJlT2JzZXJ2ZXI6Om9ic2VydmUo
YWN0aXZlRE9NV2luZG93KEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSksIEZlYXR1cmVPYnNlcnZl
cjo6VGVzdEZlYXR1cmUpOworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9iakF0
dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCB0
ZXN0T2JqQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0z
ODEsNiArNjM2LDIwIEBAIHN0YXRpYyB2b2lkIHRlc3RPYmpBdHRyQXR0clNldHRlckNhbGxiYWNr
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8CiAgICAgVGVzdE9ialY4SW50
ZXJuYWw6OnRlc3RPYmpBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0
YXRpYyB2b2lkIHRlc3RPYmpBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5j
ZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkp
ID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVl
KSkgOiAwOworICAgIGltcC0+c2V0VGVzdE9iakF0dHIoV1RGOjpnZXRQdHIodikpOworICAgIHJl
dHVybjsKK30KKworc3RhdGljIHZvaWQgdGVzdE9iakF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIEZlYXR1cmVPYnNl
cnZlcjo6b2JzZXJ2ZShhY3RpdmVET01XaW5kb3coQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpKSwg
RmVhdHVyZU9ic2VydmVyOjpUZXN0RmVhdHVyZSk7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnRl
c3RPYmpBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisK
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gWE1MT2JqQXR0ckF0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAg
LTM5Miw2ICs2NjEsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBYTUxPYmpBdHRy
QXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIHJldHVybiBUZXN0
T2JqVjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gWE1MT2JqQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wLT54bWxPYmpBdHRyKCks
IGluZm8sIGltcCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gWE1MT2JqQXR0
ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6OlhNTE9iakF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOwor
fQorCiBzdGF0aWMgdm9pZCBYTUxPYmpBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKQEAgLTQwNSw2ICs2ODUsMTkgQEAgc3RhdGljIHZvaWQgWE1MT2JqQXR0ckF0
dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHYK
ICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUs
IGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBYTUxPYmpBdHRyQXR0clNldHRlckZvck1haW5Xb3Js
ZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0
T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZv
LkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIGltcC0+c2V0WE1MT2JqQXR0cihXVEY6OmdldFB0
cih2KSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBYTUxPYmpBdHRyQXR0clNldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBUZXN0T2JqVjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFt
ZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0
ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKQEAgLTQxNiw2ICs3MDksMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjcmVhdGVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmNyZWF0ZUF0dHJHZXR0ZXIobmFtZSwg
aW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlQXR0ckdldHRl
ckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OEJvb2xlYW4oaW1wLT5pc0NyZWF0ZSgpLCBp
bmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3Jl
YXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2Jq
VjhJbnRlcm5hbDo6Y3JlYXRlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30K
Kwogc3RhdGljIHZvaWQgY3JlYXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKQEAgLTQyOSw2ICs3MzMsMTkgQEAgc3RhdGljIHZvaWQgY3JlYXRlQXR0clNldHRlckNh
bGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlYKICAgICBU
ZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9
CiAKK3N0YXRpYyB2b2lkIGNyZWF0ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CisgICAgYm9vbCB2ID0gdmFsdWUtPkJvb2xlYW5WYWx1ZSgpOwor
ICAgIGltcC0+c2V0Q3JlYXRlKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgY3Jl
YXRlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0clNldHRlckZvck1haW5X
b3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTQ0MCw2ICs3NTcsMTcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRl
ckNhbGxiYWNrKHY4OjpMb2NhbDx2ODoKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJl
ZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+ZmFzdEdldEF0dHJpYnV0ZShXZWJDb3Jl
OjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0cmluZ2F0dHJBdHRyKSwgaW5mby5HZXRJc29sYXRlKCks
IFJldHVyblVuc2FmZUhhbmRsZSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCByZWZsZWN0ZWRTdHJp
bmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTQ1Myw2
ICs3ODEsMTkgQEAgc3RhdGljIHZvaWQgcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxs
YmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjgKICAgICBUZXN0T2JqVjhJbnRlcm5h
bDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQog
CitzdGF0aWMgdm9pZCByZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklO
R1JFU09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJjZTxXaXRoTnVsbENoZWNrPiwgdiwgdmFsdWUp
OworICAgIGltcC0+c2V0QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkc3Ry
aW5nYXR0ckF0dHIsIHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgcmVmbGVjdGVk
U3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0
dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CkBAIC00NjQsNyArODA1LDE4IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVj
dGVkSW50ZWdyYWxBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2CiAgICAgcmV0dXJu
IFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyKG5hbWUs
IGluZm8pOwogfQogCi1zdGF0aWMgdm9pZCByZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJl
dHVybiB2OEludGVnZXIoaW1wLT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFt
ZXM6OnJlZmxlY3RlZGludGVncmFsYXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5h
bDo6cmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZv
KTsKK30KKworc3RhdGljIHZvaWQgcmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0clNldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOwpA
QCAtNDc3LDYgKzgyOSwxOSBAQCBzdGF0aWMgdm9pZCByZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRy
U2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAgICAgVGVzdE9ialY4
SW50ZXJuYWw6OnJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGlu
Zm8pOwogfQogCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2ID0gdG9J
bnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1M
TmFtZXM6OnJlZmxlY3RlZGludGVncmFsYXR0ckF0dHIsIHYpOworICAgIHJldHVybjsKK30KKwor
c3RhdGljIHZvaWQgcmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRl
cm5hbDo6cmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2
YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVk
VW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC00ODgsNiArODUzLDE3IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJB
dHRyR2V0dGVyQ2FsbGJhY2sodjg6CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWZs
ZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJB
dHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4VW5zaWduZWRJbnRlZ2VyKHN0
ZDo6bWF4KDAsIGltcC0+Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpy
ZWZsZWN0ZWR1bnNpZ25lZGludGVncmFsYXR0ckF0dHIpKSwgaW5mby5HZXRJc29sYXRlKCkpOwor
fQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZFVuc2lnbmVkSW50ZWdy
YWxBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0
T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCByZWZsZWN0ZWRVbnNpZ25l
ZEludGVncmFsQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBA
IC01MDEsNiArODc3LDE5IEBAIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxB
dHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nCiAgICAgVGVzdE9ialY4
SW50ZXJuYWw6OnJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0clNldHRlcihuYW1lLCB2
YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxB
dHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
KyAgICB1bnNpZ25lZCB2ID0gdG9VSW50MzIodmFsdWUpOworICAgIGltcC0+c2V0VW5zaWduZWRJ
bnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVuc2lnbmVkaW50
ZWdyYWxhdHRyQXR0ciwgdik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCByZWZsZWN0
ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxl
Y3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1
ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQm9v
bGVhbkF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC01MTIsNiArOTAxLDE3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6
OkxvY2FsPHY4CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRCb29sZWFu
QXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gcmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAg
cmV0dXJuIHY4Qm9vbGVhbihpbXAtPmZhc3RIYXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVz
OjpyZWZsZWN0ZWRib29sZWFuYXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9
CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTUyNSw2ICs5MjUsMTkgQEAgc3RhdGljIHZvaWQgcmVm
bGVjdGVkQm9vbGVhbkF0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHYKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRy
U2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgcmVmbGVjdGVkQm9v
bGVhbkF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIGJvb2wgdiA9IHZhbHVlLT5Cb29sZWFuVmFsdWUoKTsKKyAgICBpbXAtPnNldEJv
b2xlYW5BdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRib29sZWFuYXR0ckF0
dHIsIHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgcmVmbGVjdGVkQm9vbGVhbkF0
dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZFVSTEF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC01MzYsNiAr
OTQ5LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkVVJMQXR0ckF0
dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0CiAgICAgcmV0dXJuIFRlc3RPYmpWOElu
dGVybmFsOjpyZWZsZWN0ZWRVUkxBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRVUkxBdHRyQXR0ckdldHRlckZvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmdldFVSTEF0dHJpYnV0ZShXZWJD
b3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0dHJBdHRyKSwgaW5mby5HZXRJc29sYXRlKCks
IFJldHVyblVuc2FmZUhhbmRsZSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
cmVmbGVjdGVkVVJMQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBy
ZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyR2V0dGVyRm9yTWFp
bldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCByZWZsZWN0ZWRVUkxBdHRyQXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTU0OSw2ICs5NzMsMTkg
QEAgc3RhdGljIHZvaWQgcmVmbGVjdGVkVVJMQXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkwKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVj
dGVkVVJMQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9p
ZCByZWZsZWN0ZWRVUkxBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZPSUQo
VjhTdHJpbmdSZXNvdXJjZTxXaXRoTnVsbENoZWNrPiwgdiwgdmFsdWUpOworICAgIGltcC0+c2V0
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIsIHYpOwor
ICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgcmVmbGVjdGVkVVJMQXR0ckF0dHJTZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBy
ZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNTYwLDYgKzk5NywxNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVj
dGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKKyAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5mYXN0R2V0QXR0cmlidXRlKFdlYkNvcmU6OkhU
TUxOYW1lczo6Y3VzdG9tQ29udGVudFN0cmluZ0F0dHJBdHRyKSwgaW5mby5HZXRJc29sYXRlKCks
IFJldHVyblVuc2FmZUhhbmRsZSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCByZWZsZWN0ZWRTdHJp
bmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTU3Myw2
ICsxMDIxLDE5IEBAIHN0YXRpYyB2b2lkIHJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4CiAgICAgVGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0K
IAorc3RhdGljIHZvaWQgcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJ
TkdSRVNPVVJDRV9WT0lEKFY4U3RyaW5nUmVzb3VyY2U8V2l0aE51bGxDaGVjaz4sIHYsIHZhbHVl
KTsKKyAgICBpbXAtPnNldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRl
bnRTdHJpbmdBdHRyQXR0ciwgdik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCByZWZs
ZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3Ry
aW5nQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0
dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKQEAgLTU4NCw2ICsxMDQ1LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gcmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpM
CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0
dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
KyAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6
SFRNTE5hbWVzOjpjdXN0b21Db250ZW50SW50ZWdyYWxBdHRyQXR0ciksIGluZm8uR2V0SXNvbGF0
ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRDdXN0b21J
bnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJu
IFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0
b21JbnRlZ3JhbEF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpA
QCAtNTk3LDYgKzEwNjksMTkgQEAgc3RhdGljIHZvaWQgcmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxB
dHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIFRlc3RPYmpW
OEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyU2V0dGVyKG5hbWUsIHZh
bHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgcmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRy
QXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAg
ICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOworICAgIGltcC0+c2V0SW50ZWdyYWxBdHRyaWJ1dGUo
V2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50SW50ZWdyYWxBdHRyQXR0ciwgdik7Cisg
ICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJB
dHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKQEAgLTYwOCw2ICsxMDkzLDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVm
bGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvCiAgICAgcmV0
dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0
ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVj
dGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJu
IHY4Qm9vbGVhbihpbXAtPmZhc3RIYXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0
b21Db250ZW50Qm9vbGVhbkF0dHJBdHRyKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5h
bDo6cmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUs
IGluZm8pOworfQorCiBzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJT
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC02MjEsNiArMTExNywxOSBA
QCBzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFj
ayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogICAgIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0
ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitz
dGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29y
bGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgYm9vbCB2ID0gdmFsdWUtPkJv
b2xlYW5WYWx1ZSgpOworICAgIGltcC0+c2V0Qm9vbGVhbkF0dHJpYnV0ZShXZWJDb3JlOjpIVE1M
TmFtZXM6OmN1c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIsIHYpOworICAgIHJldHVybjsKK30K
Kworc3RhdGljIHZvaWQgcmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RP
YmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJTZXR0ZXJGb3JNYWlu
V29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC02MzIsNiArMTE0MSwx
NyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZEN1c3RvbVVSTEF0dHJB
dHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPAogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5h
bDo6cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJHZXR0
ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5nZXRVUkxBdHRyaWJ1
dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIpLCBpbmZvLkdl
dElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiByZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9t
VVJMQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2
b2lkIHJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwpAQCAtNjQ1LDYgKzExNjUsMTkgQEAgc3RhdGljIHZvaWQgcmVmbGVjdGVkQ3Vz
dG9tVVJMQXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwK
ICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJTZXR0ZXIo
bmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCByZWZsZWN0ZWRDdXN0b21VUkxB
dHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
KyAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZPSUQoVjhTdHJpbmdSZXNvdXJj
ZTxXaXRoTnVsbENoZWNrPiwgdiwgdmFsdWUpOworICAgIGltcC0+c2V0QXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJBdHRyLCB2KTsKKyAgICByZXR1cm47
Cit9CisKK3N0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RP
YmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlckZvck1haW5Xb3Js
ZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dHlwZWRBcnJheUF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC02NTYsNiArMTE4OSwxNyBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHR5cGVkQXJyYXlBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4
OjpMb2NhbDx2ODo6U3RyaQogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6dHlwZWRBcnJh
eUF0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHR5cGVkQXJyYXlBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVy
biB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXAtPnR5cGVkQXJyYXlBdHRyKCksIGluZm8sIGltcCk7
Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdHlwZWRBcnJheUF0dHJBdHRyR2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFs
Ojp0eXBlZEFycmF5QXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisK
IHN0YXRpYyB2b2lkIHR5cGVkQXJyYXlBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKQEAgLTY2OSw2ICsxMjEzLDE5IEBAIHN0YXRpYyB2b2lkIHR5cGVkQXJyYXlB
dHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
CiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJyYXlBdHRyQXR0clNldHRlcihuYW1lLCB2
YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHR5cGVkQXJyYXlBdHRyQXR0clNldHRlckZv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBGbG9hdDMyQXJy
YXkqIHYgPSBWOEZsb2F0MzJBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0
ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4RmxvYXQzMkFycmF5Ojp0b05h
dGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIGltcC0+
c2V0VHlwZWRBcnJheUF0dHIoV1RGOjpnZXRQdHIodikpOworICAgIHJldHVybjsKK30KKworc3Rh
dGljIHZvaWQgdHlwZWRBcnJheUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjp0eXBl
ZEFycmF5QXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQor
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwpAQCAtNjg0LDYgKzEyNDEsMjEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWwK
ICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0
ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBh
dHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBpbnQgdiA9IGltcC0+YXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24oZWMpOworICAgIGlmIChVTkxJS0VMWShlYykpCisgICAgICAgIHJldHVybiBzZXRET01FeGNl
cHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKHYsIGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRy
V2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdl
dHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgYXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpA
QCAtNjk3LDYgKzEyNjksMTkgQEAgc3RhdGljIHZvaWQgYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25B
dHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUKICAgICBUZXN0T2Jq
VjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKG5hbWUsIHZhbHVl
LCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0
dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2
ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRBdHRyV2l0aEdldHRlckV4Y2VwdGlvbih2
KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGF0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRy
U2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAg
LTcwOCw2ICsxMjkzLDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsCiAgICAgcmV0dXJuIFRl
c3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIobmFtZSwg
aW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cldpdGhTZXR0ZXJF
eGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcihp
bXAtPmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKwor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJH
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJu
YWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBp
bmZvKTsKK30KKwogc3RhdGljIHZvaWQgYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNzI0LDYgKzEzMjAsMjIgQEAgc3Rh
dGljIHZvaWQgYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2sodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0
ZXJFeGNlcHRpb25BdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZv
aWQgYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wLT5zZXRBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bih2LCBlYyk7CisgICAgaWYgKFVOTElLRUxZKGVjKSkKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KGVjLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBh
dHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OmF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5m
byk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb25BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC03MzksNiArMTM1MSwyMSBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRl
ckNhbGxiYWNrKHY4OgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldp
dGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRl
ckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFN0cmluZyB2
ID0gaW1wLT5zdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihlYyk7CisgICAgaWYgKFVOTElL
RUxZKGVjKSkKKyAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgaW5mby5HZXRJc29s
YXRlKCkpOworICAgIHJldHVybiB2OFN0cmluZyh2LCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJu
VW5zYWZlSGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQg
c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwpAQCAtNzUyLDYgKzEzNzksMTkgQEAgc3RhdGljIHZvaWQgc3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJp
bmcKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25B
dHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgc3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0VfVk9J
RChWOFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKKyAgICBpbXAtPnNldFN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgc3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpz
dHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwg
dmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNzYzLDYgKzE0MDMsMTcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bkF0dHJHZXR0ZXJDYWxsYmFjayh2ODoKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnN0
cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bkF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5zdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5z
YWZlSGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
QXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgc3Ry
aW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwpAQCAtNzc5LDE2ICsxNDMwLDQyIEBAIHN0YXRpYyB2b2lkIHN0cmluZ0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5n
CiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0
clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHN0cmluZ0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFX1ZPSUQo
VjhTdHJpbmdSZXNvdXJjZTw+LCB2LCB2YWx1ZSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgaW1wLT5zZXRTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbih2LCBlYyk7CisgICAg
aWYgKFVOTElLRUxZKGVjKSkKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElz
b2xhdGUoKSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBzdHJpbmdBdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7
Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VzdG9tQXR0ckF0dHJHZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKICAgICByZXR1cm4gVjhUZXN0T2JqOjpjdXN0b21BdHRyQXR0ckdldHRlckN1
c3RvbShuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXN0
b21BdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBWOFRl
c3RPYmo6OmN1c3RvbUF0dHJBdHRyR2V0dGVyQ3VzdG9tKG5hbWUsIGluZm8pOworfQorCiBzdGF0
aWMgdm9pZCBjdXN0b21BdHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKICAgICBWOFRlc3RPYmo6OmN1c3RvbUF0dHJBdHRyU2V0dGVyQ3VzdG9tKG5h
bWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgY3VzdG9tQXR0ckF0dHJTZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
VjhUZXN0T2JqOjpjdXN0b21BdHRyQXR0clNldHRlckN1c3RvbShuYW1lLCB2YWx1ZSwgaW5mbyk7
Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwpAQCAtODA0LDYgKzE0ODEsMjEgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6
OkxvY2EKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOwor
ICAgIGlmICghY3VycmVudFN0YXRlKQorICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKKyAg
ICBTY3JpcHRTdGF0ZSYgc3RhdGUgPSAqY3VycmVudFN0YXRlOworICAgIHJldHVybiB2OEludGVn
ZXIoaW1wLT53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoJnN0YXRlKSwgaW5mby5HZXRJc29sYXRl
KCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC04MjMsNiAr
MTUxNSwyNSBAQCBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVy
Q2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogICAgIFRlc3RPYmpWOEludGVybmFs
Ojp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsK
IH0KIAorc3RhdGljIHZvaWQgd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlckZvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBpbnQgdiA9IHRvSW50
MzIodmFsdWUpOworICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6
Y3VycmVudCgpOworICAgIGlmICghY3VycmVudFN0YXRlKQorICAgICAgICByZXR1cm47CisgICAg
U2NyaXB0U3RhdGUmIHN0YXRlID0gKmN1cnJlbnRTdGF0ZTsKKyAgICBpbXAtPnNldFdpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZSgmc3RhdGUsIHYpOworICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24o
KSkKKyAgICAgICAgdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRl
KCkpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgd2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
QXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVB
dHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CkBAIC04MzUsNiArMTU0NiwxOCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0ckdldHRlckNhbGxi
YQogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0ckdldHRl
ckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRl
eHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9y
TWFpbldvcmxkKGltcC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoc2NyaXB0
Q29udGV4dCksIGluZm8sIGltcCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7
Cit9CisKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTg0OSw2ICsxNTcyLDIw
IEBAIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0clNl
dHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6CiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5m
byk7CiB9CiAKK3N0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
QXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAg
ICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29s
YXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CisgICAgaW1wLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShzY3Jp
cHRDb250ZXh0LCBXVEY6OmdldFB0cih2KSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9p
ZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4
SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0clNldHRlckZv
ck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAt
ODcwLDYgKzE2MDcsMjcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyQ2FsbGJhY2sodjgKICAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIo
bmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRT
dGF0ZTo6Y3VycmVudCgpOworICAgIGlmICghY3VycmVudFN0YXRlKQorICAgICAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKKyAgICBTY3JpcHRTdGF0ZSYgc3RhdGUgPSAqY3VycmVudFN0YXRlOwor
ICAgIFJlZlB0cjxUZXN0T2JqPiB2ID0gaW1wLT53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMoJnN0YXRlLCBlYyk7CisgICAgaWYgKFVOTElLRUxZKGVjKSkKKyAgICAgICAgcmV0dXJuIHNl
dERPTUV4Y2VwdGlvbihlYywgaW5mby5HZXRJc29sYXRlKCkpOworICAgIGlmIChzdGF0ZS5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCks
IGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQodi5y
ZWxlYXNlKCksIGluZm8sIGltcCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3Rh
dGljIHZvaWQgd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTg4OSw2ICsxNjQ3LDI1IEBAIHN0YXRpYyB2b2lk
IHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djg6OlN0cmluCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlc0F0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9p
ZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6
Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0
SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QodmFsdWUpKSA6IDA7CisgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlw
dFN0YXRlOjpjdXJyZW50KCk7CisgICAgaWYgKCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJldHVy
bjsKKyAgICBTY3JpcHRTdGF0ZSYgc3RhdGUgPSAqY3VycmVudFN0YXRlOworICAgIGltcC0+c2V0
V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCZzdGF0ZSwgV1RGOjpnZXRQdHIodikpOwor
ICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgdGhyb3dFcnJvcihzdGF0ZS5l
eGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybjsKK30KKworc3RhdGlj
IHZvaWQgd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJ
bnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckZvck1haW5X
b3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CkBAIC05MDUsNiArMTY4MiwyMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdldHRlcgogICAgIHJldHVy
biBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVS
YWlzZXNBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdldHRl
ckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CisgICAgUmVmUHRyPFRlc3RPYmo+IHYgPSBpbXAtPndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlUmFpc2VzKHNjcmlwdENvbnRleHQsIGVjKTsKKyAgICBpZiAoVU5MSUtFTFko
ZWMpKQorICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xhdGUo
KSk7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKHYucmVsZWFzZSgpLCBpbmZvLCBp
bXApOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQor
CiBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0
dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC05MTksNiArMTcxMiwy
MCBAQCBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNl
c0F0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYQogICAgIFRlc3RPYmpWOEludGVybmFsOjp3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIobmFtZSwgdmFs
dWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUs
IGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4VGVz
dE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsK
KyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOworICAgIGltcC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
dHRyaWJ1dGVSYWlzZXMoc2NyaXB0Q29udGV4dCwgV1RGOjpnZXRQdHIodikpOworICAgIHJldHVy
bjsKK30KKworc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVS
YWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGlu
Zm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC05MzUsNiAr
MTc0MiwyMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdAogICAgIHJldHVybiBUZXN0T2JqVjhJ
bnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJH
ZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2Ny
aXB0U3RhdGU6OmN1cnJlbnQoKTsKKyAgICBpZiAoIWN1cnJlbnRTdGF0ZSkKKyAgICAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CisgICAgU2NyaXB0U3RhdGUmIHN0YXRlID0gKmN1cnJlbnRTdGF0
ZTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXAt
PndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoJnN0YXRl
LCBzY3JpcHRDb250ZXh0KSwgaW5mbywgaW1wKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJ
bnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtOTU1LDYgKzE3NzgsMjYgQEAgc3Rh
dGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZUF0dHJTZXR0ZXJDYWxsYmFjaygKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXIobmFtZSwgdmFs
dWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5j
ZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkp
ID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVl
KSkgOiAwOworICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3Vy
cmVudCgpOworICAgIGlmICghY3VycmVudFN0YXRlKQorICAgICAgICByZXR1cm47CisgICAgU2Ny
aXB0U3RhdGUmIHN0YXRlID0gKmN1cnJlbnRTdGF0ZTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlt
cC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgm
c3RhdGUsIHNjcmlwdENvbnRleHQsIFdURjo6Z2V0UHRyKHYpKTsKKyAgICBpZiAoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCksIGluZm8u
R2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpW
OEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTk3Nyw2ICsxODIwLDI4IEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhCiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0
ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0
ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFNj
cmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOworICAgIGlm
ICghY3VycmVudFN0YXRlKQorICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKKyAgICBTY3Jp
cHRTdGF0ZSYgc3RhdGUgPSAqY3VycmVudFN0YXRlOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgUmVm
UHRyPFRlc3RPYmo+IHYgPSBpbXAtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXMoJnN0YXRlLCBzY3JpcHRDb250ZXh0LCBlYyk7CisgICAgaWYg
KFVOTElLRUxZKGVjKSkKKyAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgaW5mby5H
ZXRJc29sYXRlKCkpOworICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAg
ICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQodi5yZWxlYXNlKCksIGluZm8sIGltcCk7Cit9
CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyRm9yTWFpbldv
cmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKQEAgLTk5Nyw2ICsxODYyLDI2IEBAIHN0YXRpYyB2b2lkIHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0
dGVyQ2FsCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZv
KTsKIH0KIAorc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uo
dmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/
IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkp
IDogMDsKKyAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJl
bnQoKTsKKyAgICBpZiAoIWN1cnJlbnRTdGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIFNjcmlw
dFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpbXAt
PnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMoJnN0YXRlLCBzY3JpcHRDb250ZXh0LCBXVEY6OmdldFB0cih2KSk7CisgICAgaWYgKHN0YXRl
LmhhZEV4Y2VwdGlvbigpKQorICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpLCBp
bmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCB3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGlu
Zm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0ckdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpA
QCAtMTAxMyw2ICsxODk4LDIyIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBCiAgICAgcmV0dXJu
IFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAg
U2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAg
aWYgKCFjdXJyZW50U3RhdGUpCisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOworICAgIFNj
cmlwdFN0YXRlJiBzdGF0ZSA9ICpjdXJyZW50U3RhdGU7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBy
ZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgmc3RhdGUsIHNjcmlwdENvbnRleHQp
LCBpbmZvLCBpbXApOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5h
bDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRy
aWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9p
ZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMDMzLDYg
KzE5MzQsMjYgQEAgc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyU2V0dGUKICAgICBUZXN0T2JqVjhJbnRlcm5h
bDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRy
aWJ1dGVBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAg
IFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xh
dGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgU2NyaXB0U3Rh
dGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAgaWYgKCFjdXJy
ZW50U3RhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBTY3JpcHRTdGF0ZSYgc3RhdGUgPSAqY3Vy
cmVudFN0YXRlOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBn
ZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaW1wLT5zZXRXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgmc3RhdGUsIHNjcmlw
dENvbnRleHQsIFdURjo6Z2V0UHRyKHYpKTsKKyAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgp
KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJ
bnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFj
ZXNBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30K
Kwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2Fs
bFN0YWNrQXR0cmlidXRlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTA0NCw2ICsxOTY1LDE3IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0
dHJpYnV0ZUF0dHJHZXR0ZXJDCiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2Ny
aXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsK
IH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0QXJndW1lbnRzQW5k
Q2FsbFN0YWNrQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB0
b1Y4RmFzdEZvck1haW5Xb3JsZChpbXAtPndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tB
dHRyaWJ1dGUoKSwgaW5mbywgaW1wKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNj
cmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQo
bmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxs
U3RhY2tBdHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpA
QCAtMTA1Nyw2ICsxOTg5LDE5IEBAIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRBcmd1bWVudHNBbmRD
YWxsU3RhY2tBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsCiAgICAgVGVzdE9i
alY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRy
U2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgd2l0aFNjcmlwdEFy
Z3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFz
SW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29s
YXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh2YWx1ZSkpIDogMDsKKyAgICBpbXAtPnNldFdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3Rh
Y2tBdHRyaWJ1dGUoV1RGOjpnZXRQdHIodikpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZv
aWQgd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVB
dHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBlbmZvcmNlZFJhbmdlTG9uZ0F0dHJBdHRyR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBA
IC0xMDY4LDYgKzIwMTMsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmZvcmNl
ZFJhbmdlTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHYKICAgICByZXR1cm4g
VGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nQXR0ckF0dHJHZXR0ZXIobmFtZSwg
aW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5mb3JjZWRSYW5nZUxv
bmdBdHRyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OEludGVnZXIoaW1w
LT5lbmZvcmNlZFJhbmdlTG9uZ0F0dHIoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuZm9yY2VkUmFuZ2VMb25nQXR0ckF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVu
Zm9yY2VkUmFuZ2VMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9
CisKIHN0YXRpYyB2b2lkIGVuZm9yY2VkUmFuZ2VMb25nQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMDgxLDYgKzIwMzcsMTkgQEAgc3RhdGljIHZvaWQg
ZW5mb3JjZWRSYW5nZUxvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLAogICAgIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlTG9uZ0F0dHJB
dHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgZW5mb3JjZWRS
YW5nZUxvbmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKKyAgICBWOFRSWUNBVENIX1dJVEhfVFlQRUNIRUNLX1ZPSUQoaW50LCB2LCB0b0lu
dDMyKHZhbHVlLCBFbmZvcmNlUmFuZ2UsIG9rKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIGlt
cC0+c2V0RW5mb3JjZWRSYW5nZUxvbmdBdHRyKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGlj
IHZvaWQgZW5mb3JjZWRSYW5nZUxvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6
ZW5mb3JjZWRSYW5nZUxvbmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwg
aW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5mb3JjZWRSYW5nZVVu
c2lnbmVkTG9uZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMDkyLDYgKzIwNjEsMTcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFjayh2ODoKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2Vk
UmFuZ2VVbnNpZ25lZExvbmdBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0ckF0dHJH
ZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhVbnNpZ25lZEludGVnZXIoaW1wLT5l
bmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0F0
dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpW
OEludGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0ckF0dHJHZXR0ZXJGb3JNYWlu
V29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGVuZm9yY2VkUmFuZ2VVbnNpZ25l
ZExvbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEx
MDUsNiArMjA4NSwxOSBAQCBzdGF0aWMgdm9pZCBlbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0
ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZwogICAgIFRlc3RPYmpWOElu
dGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0ckF0dHJTZXR0ZXIobmFtZSwgdmFs
dWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBlbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0
ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgVjhUUllDQVRDSF9XSVRIX1RZUEVDSEVDS19WT0lEKHVuc2lnbmVkLCB2LCB0b1VJbnQzMih2
YWx1ZSwgRW5mb3JjZVJhbmdlLCBvayksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICBpbXAtPnNl
dEVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdBdHRyKHYpOworICAgIHJldHVybjsKK30KKworc3Rh
dGljIHZvaWQgZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpW
OEludGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0ckF0dHJTZXR0ZXJGb3JNYWlu
V29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGVuZm9yY2VkUmFuZ2VMb25nTG9uZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMTE2LDYgKzIx
MDksMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmZvcmNlZFJhbmdlTG9uZ0xv
bmdBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2MKICAgICByZXR1cm4gVGVzdE9ialY4SW50
ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nTG9uZ0F0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwog
fQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuZm9yY2VkUmFuZ2VMb25nTG9uZ0F0
dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5ldyhz
dGF0aWNfY2FzdDxkb3VibGU+KGltcC0+ZW5mb3JjZWRSYW5nZUxvbmdMb25nQXR0cigpKSk7Cit9
CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5mb3JjZWRSYW5nZUxvbmdMb25nQXR0
ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nTG9uZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxk
KG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBlbmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRy
QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTExMjksNiArMjEz
MywxOSBAQCBzdGF0aWMgdm9pZCBlbmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRyQXR0clNldHRlckNh
bGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogICAgIFRlc3RPYmpWOEludGVybmFsOjpl
bmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRyQXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9
CiAKK3N0YXRpYyB2b2lkIGVuZm9yY2VkUmFuZ2VMb25nTG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfV0lU
SF9UWVBFQ0hFQ0tfVk9JRChsb25nIGxvbmcsIHYsIHRvSW50NjQodmFsdWUsIEVuZm9yY2VSYW5n
ZSwgb2spLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgaW1wLT5zZXRFbmZvcmNlZFJhbmdlTG9u
Z0xvbmdBdHRyKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgZW5mb3JjZWRSYW5n
ZUxvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VM
b25nTG9uZ0F0dHJBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30K
Kwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmZvcmNlZFJhbmdlVW5zaWduZWRMb25n
TG9uZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMTQwLDYgKzIxNTcsMTcgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBlbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0
dGVyQ2FsbGJhY2sKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VV
bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0
ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXcoc3RhdGlj
X2Nhc3Q8ZG91YmxlPihpbXAtPmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdMb25nQXR0cigpKSk7
Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5mb3JjZWRSYW5nZVVuc2lnbmVk
TG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVy
biBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0
ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgZW5mb3Jj
ZWRSYW5nZVVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKQEAgLTExNTMsNiArMjE4MSwxOSBAQCBzdGF0aWMgdm9pZCBlbmZvcmNlZFJh
bmdlVW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpT
dAogICAgIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nTG9uZ0F0
dHJBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgZW5mb3Jj
ZWRSYW5nZVVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBWOFRSWUNBVENIX1dJVEhfVFlQRUNIRUNLX1ZP
SUQodW5zaWduZWQgbG9uZyBsb25nLCB2LCB0b1VJbnQ2NCh2YWx1ZSwgRW5mb3JjZVJhbmdlLCBv
ayksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICBpbXAtPnNldEVuZm9yY2VkUmFuZ2VVbnNpZ25l
ZExvbmdMb25nQXR0cih2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGVuZm9yY2Vk
UmFuZ2VVbnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OmVu
Zm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFt
ZSwgdmFsdWUsIGluZm8pOworfQorCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiAKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxBdHRyMUF0dHJHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC0xMTc0
LDYgKzIyMTUsMjUgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRpb25hbEF0
dHIxQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKIAogI2lmIEVOQUJMRShDb25k
aXRpb24xKQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbmRpdGlvbmFsQXR0cjFB
dHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPmNvbmRp
dGlvbmFsQXR0cjEoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCisjZW5kaWYgLy8gRU5BQkxF
KENvbmRpdGlvbjEpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKKworc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBjb25kaXRpb25hbEF0dHIxQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldv
cmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMUF0
dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUo
Q29uZGl0aW9uMSkKKworI2lmIEVOQUJMRShDb25kaXRpb24xKQorCiBzdGF0aWMgdm9pZCBjb25k
aXRpb25hbEF0dHIxQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAg
LTExOTMsNiArMjI1MywyNyBAQCBzdGF0aWMgdm9pZCBjb25kaXRpb25hbEF0dHIxQXR0clNldHRl
ckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TAogCiAjZW5kaWYgLy8g
RU5BQkxFKENvbmRpdGlvbjEpCiAKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKKworc3RhdGljIHZv
aWQgY29uZGl0aW9uYWxBdHRyMUF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNl
dENvbmRpdGlvbmFsQXR0cjEodik7CisgICAgcmV0dXJuOworfQorCisjZW5kaWYgLy8gRU5BQkxF
KENvbmRpdGlvbjEpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKKworc3RhdGljIHZvaWQgY29u
ZGl0aW9uYWxBdHRyMUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0
cjFBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKworI2VuZGlm
IC8vIEVOQUJMRShDb25kaXRpb24xKQorCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJM
RShDb25kaXRpb24yKQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbmRpdGlvbmFs
QXR0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQpAQCAtMTIxNCw2ICsyMjk1LDI1IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxBdHRyMkF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8
djg6OlN0CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiAK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxBdHRyMkF0dHJHZXR0ZXJG
b3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+Y29uZGl0aW9uYWxBdHRy
MigpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9u
MSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5B
QkxFKENvbmRpdGlvbjIpCisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9u
YWxBdHRyMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5h
bWUsIGluZm8pOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShD
b25kaXRpb24yKQorCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24y
KQorCiBzdGF0aWMgdm9pZCBjb25kaXRpb25hbEF0dHIyQXR0clNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEyMzMsNiArMjMzMywyNyBAQCBzdGF0aWMgdm9pZCBjb25k
aXRpb25hbEF0dHIyQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TAogCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRp
b24yKQogCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQorCitz
dGF0aWMgdm9pZCBjb25kaXRpb25hbEF0dHIyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOworICAg
IGltcC0+c2V0Q29uZGl0aW9uYWxBdHRyMih2KTsKKyAgICByZXR1cm47Cit9CisKKyNlbmRpZiAv
LyBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCisKKyNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCisKK3N0YXRpYyB2b2lkIGNvbmRpdGlv
bmFsQXR0cjJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIyQXR0
clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCisKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY29uZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC0xMjU0LDYgKzIzNzUsMjUgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRpb25hbEF0dHIzQXR0ckdldHRlckNh
bGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMikKIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRpb25h
bEF0dHIzQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OEludGVnZXIoaW1w
LT5jb25kaXRpb25hbEF0dHIzKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworI2VuZGlmIC8v
IEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKKworI2lmIEVOQUJMRShD
b25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKKworc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjb25kaXRpb25hbEF0dHIzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyM0F0dHJHZXR0
ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0
aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjIpCisKIHN0YXRpYyB2b2lkIGNvbmRpdGlvbmFsQXR0cjNBdHRyU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTI3Myw2ICsyNDEzLDI3IEBA
IHN0YXRpYyB2b2lkIGNvbmRpdGlvbmFsQXR0cjNBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMCiAKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjIpCisKK3N0YXRpYyB2b2lkIGNvbmRpdGlvbmFsQXR0cjNBdHRyU2V0dGVyRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2ID0gdG9J
bnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRDb25kaXRpb25hbEF0dHIzKHYpOworICAgIHJldHVy
bjsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MikKKworI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKKworc3Rh
dGljIHZvaWQgY29uZGl0aW9uYWxBdHRyM0F0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OmNv
bmRpdGlvbmFsQXR0cjNBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsK
K30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikK
Kwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRBdHRyaWJ1dGUxQXR0ckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwpAQCAtMTI4NCw2ICsyNDQ1LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
Y2FjaGVkQXR0cmlidXRlMUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0CiAgICAg
cmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpjYWNoZWRBdHRyaWJ1dGUxQXR0ckdldHRlcihuYW1l
LCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRBdHRyaWJ1
dGUxQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiBpbXAtPmNhY2hlZEF0dHJp
YnV0ZTEoKS52OFZhbHVlKCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2Fj
aGVkQXR0cmlidXRlMUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1
cm4gVGVzdE9ialY4SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTFBdHRyR2V0dGVyRm9yTWFpbldv
cmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hl
ZEF0dHJpYnV0ZTJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMjk1LDYgKzI0NjcsMTcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRBdHRyaWJ1dGUyQXR0ckdldHRlckNhbGxiYWNrKHY4
OjpMb2NhbDx2ODo6U3QKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmNhY2hlZEF0dHJp
YnV0ZTJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0
dXJuIGltcC0+Y2FjaGVkQXR0cmlidXRlMigpLnY4VmFsdWUoKTsKK30KKworc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBjYWNoZWRBdHRyaWJ1dGUyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6Y2FjaGVkQXR0cmlidXRl
MkF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gYW55QXR0cmlidXRlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBp
bXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTMwNiw2ICsyNDg5
LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYW55QXR0cmlidXRlQXR0ckdldHRl
ckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nCiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVy
bmFsOjphbnlBdHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGFueUF0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
KyAgICByZXR1cm4gaW1wLT5hbnlBdHRyaWJ1dGUoKS52OFZhbHVlKCk7Cit9CisKK3N0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYW55QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6YW55QXR0cmlidXRlQXR0
ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgYW55QXR0
cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEzMTks
NiArMjUxMywxOSBAQCBzdGF0aWMgdm9pZCBhbnlBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2so
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbAogICAgIFRlc3RPYmpWOEludGVy
bmFsOjphbnlBdHRyaWJ1dGVBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3Rh
dGljIHZvaWQgYW55QXR0cmlidXRlQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKKyAgICBTY3JpcHRWYWx1ZSB2ID0gU2NyaXB0VmFsdWUodmFsdWUp
OworICAgIGltcC0+c2V0QW55QXR0cmlidXRlKFdURjo6Z2V0UHRyKHYpKTsKKyAgICByZXR1cm47
Cit9CisKK3N0YXRpYyB2b2lkIGFueUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJu
YWw6OmFueUF0dHJpYnV0ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8p
OworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVBdHRy
MUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKQEAgLTEzMzAsNiArMjUzNywxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8dgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIx
QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBlbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0
dXJuIHY4SW50ZWdlcihpbXAtPmVuYWJsZWRBdFJ1bnRpbWVBdHRyMSgpLCBpbmZvLkdldElzb2xh
dGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZEF0UnVudGlt
ZUF0dHIxQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0
T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0ckdldHRlckZvck1haW5Xb3Js
ZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEzNDMsNiArMjU2MSwx
OSBAQCBzdGF0aWMgdm9pZCBlbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyU2V0dGVyQ2FsbGJhY2so
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJs
ZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0
aWMgdm9pZCBlbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7Cisg
ICAgaW1wLT5zZXRFbmFibGVkQXRSdW50aW1lQXR0cjEodik7CisgICAgcmV0dXJuOworfQorCitz
dGF0aWMgdm9pZCBlbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVy
bmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZh
bHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkQXRS
dW50aW1lQXR0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMzU0LDYgKzI1ODUsMTcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0dGVyQ2FsbGJh
Y2sodjg6OkxvY2FsPHYKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1
bnRpbWVBdHRyMkF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OworICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5lbmFibGVkQXRSdW50aW1lQXR0cjIoKSwgaW5m
by5HZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJs
ZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBy
ZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0ZXJG
b3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGVuYWJsZWRBdFJ1bnRp
bWVBdHRyMkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xMzY3
LDYgKzI2MDksMTkgQEAgc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0clNldHRl
ckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogICAgIFRlc3RPYmpWOEludGVy
bmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsK
IH0KIAorc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0clNldHRlckZvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBpbnQgdiA9IHRvSW50MzIo
dmFsdWUpOworICAgIGltcC0+c2V0RW5hYmxlZEF0UnVudGltZUF0dHIyKHYpOworICAgIHJldHVy
bjsKK30KKworc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0clNldHRlckZvck1haW5Xb3Js
ZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
ZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEzNzgsNiArMjYzMywxNyBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRQZXJDb250ZXh0QXR0cjFBdHRy
R2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPAogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6
ZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJHZXR0ZXJG
b3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+ZW5hYmxlZFBlckNvbnRl
eHRBdHRyMSgpLCBpbmZvLkdldElzb2xhdGUoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0
QXR0cjFBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9p
ZCBlbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKQEAgLTEzOTEsNiArMjY1NywxOSBAQCBzdGF0aWMgdm9pZCBlbmFibGVkUGVyQ29u
dGV4dEF0dHIxQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAog
ICAgIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0clNldHRlcihu
YW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIGVuYWJsZWRQZXJDb250ZXh0QXR0
cjFBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRFbmFibGVkUGVyQ29udGV4
dEF0dHIxKHYpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgZW5hYmxlZFBlckNvbnRl
eHRBdHRyMUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0
cjFBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0ckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwpAQCAtMTQwMiw2ICsyNjgxLDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5h
YmxlZFBlckNvbnRleHRBdHRyMkF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8CiAgICAgcmV0
dXJuIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0ckdldHRlcihu
YW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkUGVy
Q29udGV4dEF0dHIyQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIHJldHVybiB2OEludGVn
ZXIoaW1wLT5lbmFibGVkUGVyQ29udGV4dEF0dHIyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30K
Kworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMkF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwg
aW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGVuYWJsZWRQZXJDb250ZXh0QXR0cjJBdHRyU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTQxMiw3ICsyNzAyLDIwIEBAIHN0
YXRpYyB2b2lkIGVuYWJsZWRQZXJDb250ZXh0QXR0cjJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jCiAKIHN0YXRpYyB2b2lkIGVuYWJsZWRQZXJDb250ZXh0QXR0
cjJBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAg
IFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0clNldHRlcihuYW1l
LCB2YWx1ZSwgaW5mbyk7CisgICAgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0
QXR0cjJBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKworc3RhdGljIHZvaWQgZW5h
YmxlZFBlckNvbnRleHRBdHRyMkF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNl
dEVuYWJsZWRQZXJDb250ZXh0QXR0cjIodik7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9p
ZCBlbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5h
YmxlZFBlckNvbnRleHRBdHRyMkF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGlu
Zm8pOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGZsb2F0QXJyYXlBdHRyR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQpAQCAtMTQyNiw2ICsyNzI5LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
ZmxvYXRBcnJheUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICBy
ZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyR2V0dGVyKG5hbWUsIGluZm8p
OwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGZsb2F0QXJyYXlBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHY4QXJyYXkoaW1wLT5mbG9hdEFycmF5KCksIGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmbG9h
dEFycmF5QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0
T2JqVjhJbnRlcm5hbDo6ZmxvYXRBcnJheUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5m
byk7Cit9CisKIHN0YXRpYyB2b2lkIGZsb2F0QXJyYXlBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwpAQCAtMTQzOSw2ICsyNzUzLDE5IEBAIHN0YXRpYyB2b2lkIGZsb2F0
QXJyYXlBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2CiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyU2V0dGVyKG5hbWUs
IHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgZmxvYXRBcnJheUF0dHJTZXR0ZXJGb3JN
YWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgVmVjdG9yPGZsb2F0
PiB2ID0gdG9OYXRpdmVBcnJheTxmbG9hdD4odmFsdWUpOworICAgIGltcC0+c2V0RmxvYXRBcnJh
eSh2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGZsb2F0QXJyYXlBdHRyU2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFycmF5QXR0clNldHRlckZvck1haW5Xb3JsZChuYW1l
LCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZG91Ymxl
QXJyYXlBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNDUwLDYgKzI3NzcsMTcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBkb3VibGVBcnJheUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6
OlN0cmluZz4KICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0ckdl
dHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkb3Vi
bGVBcnJheUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhBcnJheShpbXAt
PmRvdWJsZUFycmF5KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBkb3VibGVBcnJheUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0ckdldHRlckZv
ck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgZG91YmxlQXJyYXlBdHRy
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTQ2Myw2ICsyODAxLDE5
IEBAIHN0YXRpYyB2b2lkIGRvdWJsZUFycmF5QXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8CiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OmRvdWJs
ZUFycmF5QXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIGRv
dWJsZUFycmF5QXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKKyAgICBWZWN0b3I8ZG91YmxlPiB2ID0gdG9OYXRpdmVBcnJheTxkb3VibGU+KHZhbHVl
KTsKKyAgICBpbXAtPnNldERvdWJsZUFycmF5KHYpOworICAgIHJldHVybjsKK30KKworc3RhdGlj
IHZvaWQgZG91YmxlQXJyYXlBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJh
eUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnRlbnREb2N1bWVudEF0dHJHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE0
NzcsNiArMjgyOCwyMCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnRlbnREb2N1
bWVudEF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cgogICAgIHJldHVybiBUZXN0
T2JqVjhJbnRlcm5hbDo6Y29udGVudERvY3VtZW50QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0K
IAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb250ZW50RG9jdW1lbnRBdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9Ob2RlKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5jb250ZW50RG9jdW1lbnQo
KSkpCisgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjhOdWxsKGluZm8uR2V0
SXNvbGF0ZSgpKSk7CisKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wLT5jb250
ZW50RG9jdW1lbnQoKSwgaW5mbywgaW1wKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBjb250ZW50RG9jdW1lbnRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpjb250ZW50RG9jdW1lbnRBdHRyR2V0dGVyRm9y
TWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IG11dGFibGVQb2ludEF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2Jq
Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE0ODgsNiArMjg1MywxNyBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG11dGFibGVQb2ludEF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6
TG9jYWw8djg6OlN0cmluZwogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBv
aW50QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBtdXRhYmxlUG9pbnRBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHRv
VjhGYXN0Rm9yTWFpbldvcmxkKFdURjo6Z2V0UHRyKFNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZjxU
ZXN0T2JqLCBGbG9hdFBvaW50Pjo6Y3JlYXRlKGltcCwgaW1wLT5tdXRhYmxlUG9pbnQoKSwgJlRl
c3RPYmo6OnVwZGF0ZU11dGFibGVQb2ludCkpLCBpbmZvLCBpbXApOworfQorCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IG11dGFibGVQb2ludEF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0dHJH
ZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIG11dGFibGVQ
b2ludEF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNTAxLDYg
KzI4NzcsMTkgQEAgc3RhdGljIHZvaWQgbXV0YWJsZVBvaW50QXR0clNldHRlckNhbGxiYWNrKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWwKICAgICBUZXN0T2JqVjhJbnRlcm5h
bDo6bXV0YWJsZVBvaW50QXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRp
YyB2b2lkIG11dGFibGVQb2ludEF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgUmVmUHRyPFNWR1Byb3BlcnR5VGVhck9mZjxGbG9hdFBvaW50
PiA+IHYgPSBWOFNWR1BvaW50OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhTVkdQb2ludDo6dG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBpbXAtPnNldE11dGFi
bGVQb2ludChXVEY6OmdldFB0cih2KSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBt
dXRhYmxlUG9pbnRBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBpbW11dGFibGVQb2ludEF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9i
aiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE1MTIsNiAr
MjkwMSwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGltbXV0YWJsZVBvaW50QXR0
ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaQogICAgIHJldHVybiBUZXN0T2JqVjhJ
bnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGltbXV0YWJsZVBvaW50QXR0ckdldHRlckZvck1haW5X
b3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChXVEY6OmdldFB0cihTVkdQ
cm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD46OmNyZWF0ZShpbXAtPmltbXV0YWJsZVBvaW50KCkp
KSwgaW5mbywgaW1wKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbW11dGFi
bGVQb2ludEF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50QXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1l
LCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgaW1tdXRhYmxlUG9pbnRBdHRyU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTUyNSw2ICsyOTI1LDE5IEBAIHN0YXRpYyB2
b2lkIGltbXV0YWJsZVBvaW50QXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jCiAgICAgVGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50QXR0
clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIGltbXV0YWJsZVBv
aW50QXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
KyAgICBSZWZQdHI8U1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UG9pbnQ+ID4gdiA9IFY4U1ZHUG9p
bnQ6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8u
R2V0SXNvbGF0ZSgpKSkgPyBWOFNWR1BvaW50Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIGltcC0+c2V0SW1tdXRhYmxlUG9pbnQoV1RGOjpn
ZXRQdHIodikpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgaW1tdXRhYmxlUG9pbnRB
dHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjppbW11dGFibGVQb2ludEF0dHJTZXR0ZXJGb3JN
YWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHN0cmF3YmVycnlBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNTM2LDYgKzI5NDksMTcgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJhd2JlcnJ5QXR0ckdldHRlckNhbGxiYWNrKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdi
ZXJyeUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gc3RyYXdiZXJyeUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhJ
bnRlZ2VyKGltcC0+Ymx1ZWJlcnJ5KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJhd2JlcnJ5QXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJyeUF0dHJH
ZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHN0cmF3YmVy
cnlBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTU0OSw2ICsy
OTczLDE5IEBAIHN0YXRpYyB2b2lkIHN0cmF3YmVycnlBdHRyU2V0dGVyQ2FsbGJhY2sodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2CiAgICAgVGVzdE9ialY4SW50ZXJuYWw6
OnN0cmF3YmVycnlBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZv
aWQgc3RyYXdiZXJyeUF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMyKHZhbHVlKTsKKyAgICBpbXAtPnNldEJsdWVi
ZXJyeSh2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHN0cmF3YmVycnlBdHRyU2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIFRlc3RPYmpWOEludGVybmFsOjpzdHJhd2JlcnJ5QXR0clNldHRlckZvck1haW5Xb3JsZChu
YW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3Ry
aWN0RmxvYXRBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNTYwLDYgKzI5OTcsMTcgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBzdHJpY3RGbG9hdEF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8
djg6OlN0cmluZz4KICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZsb2F0QXR0
ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBz
dHJpY3RGbG9hdEF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjg6Ok51bWJl
cjo6TmV3KGltcC0+c3RyaWN0RmxvYXQoKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gc3RyaWN0RmxvYXRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
cmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGbG9hdEF0dHJHZXR0ZXJGb3JNYWluV29y
bGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHN0cmljdEZsb2F0QXR0clNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE1NzMsNiArMzAyMSwxOSBAQCBzdGF0
aWMgdm9pZCBzdHJpY3RGbG9hdEF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPAogICAgIFRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGbG9hdEF0
dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBzdHJpY3RGbG9h
dEF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgZmxvYXQgdiA9IHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZS0+TnVtYmVyVmFsdWUoKSk7Cisg
ICAgaW1wLT5zZXRTdHJpY3RGbG9hdCh2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lk
IHN0cmljdEZsb2F0QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRy
U2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBkZXNjcmlwdGlvbkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiog
aW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE1ODQsNiArMzA0
NSwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2NyaXB0aW9uQXR0ckdldHRl
ckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6ZGVzY3JpcHRpb25BdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2NyaXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5kZXNjcmlwdGlvbigpLCBpbmZvLkdldElzb2xhdGUo
KSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzY3JpcHRpb25BdHRyR2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFs
OjpkZXNjcmlwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaWRBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNTk1LDYgKzMw
NjcsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpZEF0dHJHZXR0ZXJDYWxsYmFj
ayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY28KICAgICByZXR1cm4gVGVzdE9ialY4SW50
ZXJuYWw6OmlkQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBpZEF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhJbnRl
Z2VyKGltcC0+aWQoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGlkQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJl
dHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6aWRBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGlu
Zm8pOworfQorCiBzdGF0aWMgdm9pZCBpZEF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CkBAIC0xNjA4LDYgKzMwOTEsMTkgQEAgc3RhdGljIHZvaWQgaWRBdHRyU2V0dGVy
Q2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWUK
ICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6aWRBdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsK
IH0KIAorc3RhdGljIHZvaWQgaWRBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOworICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5z
ZXRJZCh2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGlkQXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0
T2JqVjhJbnRlcm5hbDo6aWRBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZv
KTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBoYXNoQXR0ckdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpA
QCAtMTYxOSw2ICszMTE1LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaGFzaEF0
dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKICAgICByZXR1cm4g
VGVzdE9ialY4SW50ZXJuYWw6Omhhc2hBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGhhc2hBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+aGFzaCgpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJu
VW5zYWZlSGFuZGxlKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBoYXNoQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRl
cm5hbDo6aGFzaEF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVwbGFjZWFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CkBAIC0xNjMwLDYgKzMxMzcsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXBs
YWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djgKICAgICByZXR1
cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlcGxhY2VhYmxlQXR0cmlidXRlQXR0ckdldHRlcihuYW1l
LCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXBsYWNlYWJsZUF0
dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhU
ZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKGlt
cC0+cmVwbGFjZWFibGVBdHRyaWJ1dGUoKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlcGxhY2VhYmxlQXR0cmlidXRlQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVw
bGFjZWFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQor
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlRG91YmxlQXR0cmlidXRlQXR0
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwpAQCAtMTY0NSw2ICszMTYzLDIxIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gbnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2Fs
CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZURvdWJsZUF0dHJpYnV0ZUF0
dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
bnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgYm9v
bCBpc051bGwgPSBmYWxzZTsKKyAgICBkb3VibGUgdiA9IGltcC0+bnVsbGFibGVEb3VibGVBdHRy
aWJ1dGUoaXNOdWxsKTsKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1cm4gdjhOdWxsKGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KHYpOworfQorCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlRG91YmxlQXR0cmlidXRlQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5h
bDo6bnVsbGFibGVEb3VibGVBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGlu
Zm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlTG9uZ0F0dHJp
YnV0ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE2NjAsNiArMzE5MywyMSBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG51bGxhYmxlTG9uZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6
TG9jYWw8dgogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nQXR0cmli
dXRlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBudWxsYWJsZUxvbmdBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAg
Ym9vbCBpc051bGwgPSBmYWxzZTsKKyAgICBpbnQgdiA9IGltcC0+bnVsbGFibGVMb25nQXR0cmli
dXRlKGlzTnVsbCk7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChpbmZv
LkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcih2LCBpbmZvLkdldElzb2xhdGUo
KSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVMb25nQXR0cmli
dXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2Jq
VjhJbnRlcm5hbDo6bnVsbGFibGVMb25nQXR0cmlidXRlQXR0ckdldHRlckZvck1haW5Xb3JsZChu
YW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZUJv
b2xlYW5BdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNjc1LDYgKzMyMjMsMjEgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGVBdHRyR2V0dGVy
Q2FsbGJhY2sodjg6OkxvY2EKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxl
Qm9vbGVhbkF0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVCb29sZWFuQXR0cmlidXRlQXR0ckdldHRlckZvck1h
aW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgYm9vbCB2ID0gaW1wLT5u
dWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoaXNOdWxsKTsKKyAgICBpZiAoaXNOdWxsKQorICAgICAg
ICByZXR1cm4gdjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdjhCb29sZWFu
KHYsIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUJvb2xlYW5BdHRyaWJ1
dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAt
MTY5MCw2ICszMjUzLDIxIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVT
dHJpbmdBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsCiAgICAgcmV0dXJuIFRl
c3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwg
aW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVTdHJpbmdB
dHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgYm9vbCBpc051bGwgPSBmYWxz
ZTsKKyAgICBTdHJpbmcgdiA9IGltcC0+bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoaXNOdWxsKTsK
KyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1cm4gdjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgp
KTsKKyAgICByZXR1cm4gdjhTdHJpbmcodiwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2Fm
ZUhhbmRsZSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVTdHJp
bmdBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJu
IFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JN
YWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNzA1LDYgKzMy
ODMsMjEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZUxvbmdTZXR0YWJs
ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODoKICAgICByZXR1cm4gVGVzdE9ialY4SW50
ZXJuYWw6Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0ckdldHRlcihuYW1lLCBpbmZv
KTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZUxvbmdTZXR0YWJs
ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBib29sIGlzTnVsbCA9IGZh
bHNlOworICAgIGludCB2ID0gaW1wLT5udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShpc051
bGwpOworICAgIGlmIChpc051bGwpCisgICAgICAgIHJldHVybiB2OE51bGwoaW5mby5HZXRJc29s
YXRlKCkpOworICAgIHJldHVybiB2OEludGVnZXIodiwgaW5mby5HZXRJc29sYXRlKCkpOworfQor
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmli
dXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2Jq
VjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyRm9yTWFp
bldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBudWxsYWJsZUxvbmdTZXR0YWJs
ZUF0dHJpYnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0x
NzE4LDYgKzMzMTEsMTkgQEAgc3RhdGljIHZvaWQgbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1
dGVBdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmcKICAgICBUZXN0T2JqVjhJ
bnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVyKG5hbWUsIHZh
bHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1
dGVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXROdWxsYWJsZUxvbmdTZXR0
YWJsZUF0dHJpYnV0ZSh2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIG51bGxhYmxl
TG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFi
bGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVl
LCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBudWxsYWJsZVN0cmlu
Z1ZhbHVlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTczNiw2ICszMzQyLDI0IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6
TG9jYWw8djg6CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ1Zh
bHVlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBudWxsYWJsZVN0cmluZ1ZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CisgICAgaW50IHYg
PSBpbXAtPm51bGxhYmxlU3RyaW5nVmFsdWUoaXNOdWxsLCBlYyk7CisgICAgaWYgKGlzTnVsbCkK
KyAgICAgICAgcmV0dXJuIHY4TnVsbChpbmZvLkdldElzb2xhdGUoKSk7CisgICAgaWYgKFVOTElL
RUxZKGVjKSkKKyAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgaW5mby5HZXRJc29s
YXRlKCkpOworICAgIHJldHVybiB2OEludGVnZXIodiwgaW5mby5HZXRJc29sYXRlKCkpOworfQor
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG51bGxhYmxlU3RyaW5nVmFsdWVBdHRyR2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFs
OjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1lLCBpbmZvKTsK
K30KKwogc3RhdGljIHZvaWQgbnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNzQ5LDYgKzMzNzMsMTkgQEAgc3RhdGljIHZvaWQg
bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjgKICAgICBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0
dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBudWxsYWJsZVN0
cmluZ1ZhbHVlQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKKyAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOworICAgIGltcC0+c2V0TnVsbGFibGVT
dHJpbmdWYWx1ZSh2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIG51bGxhYmxlU3Ry
aW5nVmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ1ZhbHVl
QXR0clNldHRlckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVGVzdE9iakNvbnN0cnVjdG9yR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBkYXRhID0gaW5mby5EYXRhKCk7CkBAIC0zMDgwLDE1NSArNDcx
NywxNTUgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3Rvcihjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogCiBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpC
YXRjaGVkQXR0cmlidXRlIFY4VGVzdE9iakF0dHJzW10gPSB7CiAgICAgLy8gQXR0cmlidXRlICdy
ZWFkT25seUxvbmdBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycp
Ci0gICAgeyJyZWFkT25seUxvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5TG9u
Z0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsicmVhZE9u
bHlMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seUxvbmdBdHRyQXR0ckdldHRl
ckNhbGxiYWNrLCAwLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmli
dXRlICdyZWFkT25seVN0cmluZ0F0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRB
dHRyOiAnJykKLSAgICB7InJlYWRPbmx5U3RyaW5nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpy
ZWFkT25seVN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAor
ICAgIHsicmVhZE9ubHlTdHJpbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5U3Ry
aW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5
U3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiAgICAgLy8gQXR0cmlidXRlICdyZWFkT25seVRlc3RPYmpBdHRyJyAoVHlwZTogJ3JlYWRv
bmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJyZWFkT25seVRlc3RPYmpBdHRyIiwg
VGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5VGVzdE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ss
IDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAorICAgIHsicmVhZE9ubHlUZXN0T2JqQXR0ciIsIFRlc3RPYmpW
OEludGVybmFsOjpyZWFkT25seVRlc3RPYmpBdHRyQXR0ckdldHRlckNhbGxiYWNrLCAwLCBUZXN0
T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdzdGF0aWNSZWFk
T25seUxvbmdBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0g
ICAgeyJzdGF0aWNSZWFkT25seUxvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1Jl
YWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAg
IHsic3RhdGljUmVhZE9ubHlMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNSZWFk
T25seUxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCAwLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3Rh
dGljUmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCwgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdzdGF0aWNTdHJpbmdBdHRyJyAoVHlwZTog
J2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJzdGF0aWNTdHJpbmdBdHRyIiwgVGVzdE9i
alY4SW50ZXJuYWw6OnN0YXRpY1N0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpW
OEludGVybmFsOjpzdGF0aWNTdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKKyAgICB7InN0YXRpY1N0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGlj
U3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0
cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNTdHJp
bmdBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6
c3RhdGljU3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdUZXN0U3ViT2JqJyAoVHlwZTogJ3JlYWRvbmx5IGF0
dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJUZXN0U3ViT2JqIiwgVGVzdE9ialY4SW50ZXJu
YWw6OlRlc3RPYmpDb25zdHJ1Y3RvckdldHRlciwgMCwgJlY4VGVzdFN1Yk9iajo6aW5mbywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAg
IHsiVGVzdFN1Yk9iaiIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqQ29uc3RydWN0b3JHZXR0
ZXIsIDAsIDAsIDAsICZWOFRlc3RTdWJPYmo6OmluZm8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2VudW1B
dHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJlbnVtQXR0ciIsIFRl
c3RPYmpWOEludGVybmFsOjplbnVtQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OmVudW1BdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7
ImVudW1BdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVudW1BdHRyQXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW51bUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpW
OEludGVybmFsOjplbnVtQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9i
alY4SW50ZXJuYWw6OmVudW1BdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3Nob3J0QXR0cicgKFR5cGU6ICdhdHRyaWJ1
dGUnIEV4dEF0dHI6ICcnKQotICAgIHsic2hvcnRBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnNo
b3J0QXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnNob3J0QXR0ckF0
dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJzaG9ydEF0dHIiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6c2hvcnRBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRl
cm5hbDo6c2hvcnRBdHRyQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c2hv
cnRBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6
c2hvcnRBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
ICAgICAvLyBBdHRyaWJ1dGUgJ3Vuc2lnbmVkU2hvcnRBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScg
RXh0QXR0cjogJycpCi0gICAgeyJ1bnNpZ25lZFNob3J0QXR0ciIsIFRlc3RPYmpWOEludGVybmFs
Ojp1bnNpZ25lZFNob3J0QXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6
OnVuc2lnbmVkU2hvcnRBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAg
ICB7InVuc2lnbmVkU2hvcnRBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkU2hvcnRB
dHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRTaG9ydEF0
dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZFNob3J0QXR0
ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OnVuc2ln
bmVkU2hvcnRBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKICAgICAvLyBBdHRyaWJ1dGUgJ2xvbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0
cjogJycpCi0gICAgeyJsb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdBdHRyQXR0clNldHRlckNhbGxi
YWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImxvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6
OmxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0dHJB
dHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdBdHRyQXR0clNldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUg
J2xvbmdMb25nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsibG9u
Z0xvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxs
YmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCisgICAgeyJsb25nTG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
bG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0xv
bmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0xvbmdBdHRy
QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0xv
bmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAg
ICAvLyBBdHRyaWJ1dGUgJ3Vuc2lnbmVkTG9uZ0xvbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScg
RXh0QXR0cjogJycpCi0gICAgeyJ1bnNpZ25lZExvbmdMb25nQXR0ciIsIFRlc3RPYmpWOEludGVy
bmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKKyAgICB7InVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnVu
c2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6
dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFs
Ojp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVz
dE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0cmluZ0F0dHIn
IChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InN0cmluZ0F0dHIiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OnN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAg
IHsic3RyaW5nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywg
VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3Rlc3RPYmpBdHRyJyAo
VHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1Y4TWVhc3VyZUFzJykKLSAgICB7InRlc3RPYmpB
dHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnRlc3RPYmpBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9iakF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAorICAgIHsidGVzdE9iakF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9iakF0
dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp0ZXN0T2JqQXR0ckF0dHJT
ZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnRlc3RPYmpBdHRyQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9iakF0dHJBdHRyU2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0
ZSAnWE1MT2JqQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiWE1M
T2JqQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCisgICAgeyJYTUxPYmpBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OlhNTE9iakF0
dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0clNl
dHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJHZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OlhNTE9iakF0dHJBdHRyU2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAn
Y3JlYXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJjcmVhdGUiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRl
cm5hbDo6Y3JlYXRlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImNy
ZWF0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpjcmVhdGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RP
YmpWOEludGVybmFsOjpjcmVhdGVBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFs
OjpjcmVhdGVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFs
OjpjcmVhdGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAog
ICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkU3RyaW5nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUn
IEV4dEF0dHI6ICdSZWZsZWN0JykKLSAgICB7InJlZmxlY3RlZFN0cmluZ0F0dHIiLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIHsicmVmbGVjdGVkU3RyaW5nQXR0ciIsIFRlc3RPYmpWOEludGVybmFs
OjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRl
c3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlZmxlY3RlZElu
dGVncmFsQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykKLSAgICB7
InJlZmxlY3RlZEludGVncmFsQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRJbnRl
Z3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRJ
bnRlZ3JhbEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsicmVm
bGVjdGVkSW50ZWdyYWxBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEludGVncmFs
QXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEludGVn
cmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZElu
dGVncmFsQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRVbnNpZ25lZEludGVn
cmFsQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykKLSAgICB7InJl
ZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIHsicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJh
Y2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJT
ZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVuc2lnbmVkSW50ZWdy
YWxBdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6
cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkQm9vbGVhbkF0
dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnUmVmbGVjdCcpCi0gICAgeyJyZWZsZWN0
ZWRCb29sZWFuQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRCb29sZWFuQXR0ckF0
dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRy
QXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InJlZmxlY3RlZEJvb2xl
YW5BdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0ckdldHRl
ckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRyU2V0
dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJv
b2xlYW5BdHRyQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
ICAgICAvLyBBdHRyaWJ1dGUgJ3JlZmxlY3RlZFVSTEF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBF
eHRBdHRyOiAnVVJMIFJlZmxlY3QnKQotICAgIHsicmVmbGVjdGVkVVJMQXR0ciIsIFRlc3RPYmpW
OEludGVybmFsOjpyZWZsZWN0ZWRVUkxBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCisgICAgeyJyZWZsZWN0ZWRVUkxBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZFVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRV
UkxBdHRyQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJM
QXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OnJl
ZmxlY3RlZFVSTEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkU3RyaW5nQXR0cicgKFR5cGU6ICdhdHRy
aWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykKLSAgICB7InJlZmxlY3RlZFN0cmluZ0F0dHIiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywg
VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ss
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAorICAgIHsicmVmbGVjdGVkU3RyaW5nQXR0ciIsIFRlc3RPYmpWOElu
dGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4
SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlZmxl
Y3RlZEN1c3RvbUludGVncmFsQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZs
ZWN0JykKLSAgICB7InJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ciIsIFRlc3RPYmpWOEludGVy
bmFsOjpyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RP
YmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAorICAgIHsicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIiwg
VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0
dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVn
cmFsQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6
OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRDdXN0b21Cb29s
ZWFuQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykKLSAgICB7InJl
ZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1
c3RvbUJvb2xlYW5BdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVm
bGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAorICAgIHsicmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
cmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOElu
dGVybmFsOjpyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgVGVz
dE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0ckdldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tQm9vbGVh
bkF0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAg
IC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkQ3VzdG9tVVJMQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUn
IEV4dEF0dHI6ICdVUkwgUmVmbGVjdCcpCi0gICAgeyJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIiwg
VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJh
Y2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlckNh
bGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyU2V0dGVyQ2Fs
bGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0ckdldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9t
VVJMQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAg
ICAgLy8gQXR0cmlidXRlICd0eXBlZEFycmF5QXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0
dHI6ICcnKQotICAgIHsidHlwZWRBcnJheUF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dHlwZWRB
cnJheUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5
QXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJ0eXBlZEFycmF5
QXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5QXR0ckF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJyYXlBdHRyQXR0clNldHRlckNhbGxiYWNrLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6dHlwZWRBcnJheUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQsIFRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5QXR0ckF0dHJTZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdhdHRyV2l0
aEdldHRlckV4Y2VwdGlvbicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsi
YXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0
ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0
aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAg
eyJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6
YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRl
c3RPYmpWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdhdHRyV2l0
aFNldHRlckV4Y2VwdGlvbicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsi
YXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0
ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0
aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAg
eyJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6
YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRl
c3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdzdHJpbmdB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQot
ICAgIHsic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6
c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpW
OEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFj
aywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIs
IFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0
ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOElu
dGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdzdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAg
IHsic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3Ry
aW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOElu
dGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCisgICAgeyJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRl
c3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
QXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVy
bmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdjdXN0b21BdHRyJyAo
VHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0N1c3RvbScpCi0gICAgeyJjdXN0b21BdHRyIiwg
VGVzdE9ialY4SW50ZXJuYWw6OmN1c3RvbUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpW
OEludGVybmFsOjpjdXN0b21BdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
KyAgICB7ImN1c3RvbUF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3VzdG9tQXR0ckF0dHJHZXR0
ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmN1c3RvbUF0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2ssIFRlc3RPYmpWOEludGVybmFsOjpjdXN0b21BdHRyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3VzdG9tQXR0ckF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0
U3RhdGVBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQot
ICAgIHsid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6
OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCisgICAgeyJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRl
cm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0
clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRy
aWJ1dGUgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlJyAoVHlwZTogJ2F0dHJp
YnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRoJykKLSAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAorICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyR2V0
dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
LCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVB
dHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0
dHJpYnV0ZSAnd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzJyAoVHlwZTogJ2F0dHJpYnV0
ZScgRXh0QXR0cjogJ0NhbGxXaXRoJykKLSAgICB7IndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlcyIsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNB
dHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsid2l0
aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJu
YWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJDYWxsYmFjaywgVGVz
dE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiAgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZVJhaXNlcycgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcpCi0gICAgeyJ3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIsIFRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlUmFpc2VzQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7Indp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIiwgVGVzdE9ialY4SW50ZXJu
YWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlUmFpc2VzQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKICAgICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQot
ICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIs
IFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxs
YmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRl
c3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQs
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcycgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4
dEF0dHI6ICdDYWxsV2l0aCcpCi0gICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyQ2Fs
bGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKKyAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4
SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZScgKFR5cGU6
ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcpCi0gICAgeyJ3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIsIFRlc3RPYmpWOElu
dGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0clNl
dHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJu
YWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0
cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyU2V0dGVy
Q2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRBcmd1bWVudHNB
bmRDYWxsU3RhY2tBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdp
dGgnKQotICAgIHsid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIsIFRl
c3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50
c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CisgICAgeyJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIiwgVGVzdE9i
alY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRy
R2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0QXJndW1lbnRzQW5k
Q2FsbFN0YWNrQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6
d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFj
a0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRD
YWxsU3RhY2tBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnZW5mb3JjZWRSYW5nZUxvbmdBdHRyJyAoVHlwZTog
J2F0dHJpYnV0ZScgRXh0QXR0cjogJ0VuZm9yY2VSYW5nZScpCi0gICAgeyJlbmZvcmNlZFJhbmdl
TG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZUxvbmdBdHRyQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZUxvbmdBdHRyQXR0
clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImVuZm9yY2VkUmFuZ2VMb25n
QXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlTG9uZ0F0dHJBdHRyR2V0dGVy
Q2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlTG9uZ0F0dHJBdHRyU2V0
dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlTG9uZ0F0dHJBdHRy
R2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJh
bmdlTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAogICAgIC8vIEF0dHJpYnV0ZSAnZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0F0dHInIChUeXBl
OiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnRW5mb3JjZVJhbmdlJykKLSAgICB7ImVuZm9yY2VkUmFu
Z2VVbnNpZ25lZExvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNp
Z25lZExvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3Jj
ZWRSYW5nZVVuc2lnbmVkTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAorICAgIHsiZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5h
bDo6ZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RP
YmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0ckF0dHJTZXR0ZXJDYWxs
YmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdBdHRyQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRS
YW5nZVVuc2lnbmVkTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnZW5mb3JjZWRSYW5nZUxvbmdMb25nQXR0cicg
KFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdFbmZvcmNlUmFuZ2UnKQotICAgIHsiZW5mb3Jj
ZWRSYW5nZUxvbmdMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlTG9u
Z0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRS
YW5nZUxvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAg
eyJlbmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2Vk
UmFuZ2VMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpl
bmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRl
cm5hbDo6ZW5mb3JjZWRSYW5nZUxvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5X
b3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nTG9uZ0F0dHJBdHRyU2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0
ZSAnZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0xvbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScg
RXh0QXR0cjogJ0VuZm9yY2VSYW5nZScpCi0gICAgeyJlbmZvcmNlZFJhbmdlVW5zaWduZWRMb25n
TG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0xv
bmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5n
ZVVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
KyAgICB7ImVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdMb25nQXR0ciIsIFRlc3RPYmpWOEludGVy
bmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nTG9uZ0F0dHJBdHRy
U2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRM
b25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVy
bmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tG
b3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogI2lmIEVOQUJMRShDb25kaXRpb24xKQogICAg
IC8vIEF0dHJpYnV0ZSAnY29uZGl0aW9uYWxBdHRyMScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0
dHI6ICdDb25kaXRpb25hbCcpCi0gICAgeyJjb25kaXRpb25hbEF0dHIxIiwgVGVzdE9ialY4SW50
ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVy
bmFsOjpjb25kaXRpb25hbEF0dHIxQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
KyAgICB7ImNvbmRpdGlvbmFsQXR0cjEiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxB
dHRyMUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0
cjFBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIx
QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0
aW9uYWxBdHRyMUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYm
IEVOQUJMRShDb25kaXRpb24yKQogICAgIC8vIEF0dHJpYnV0ZSAnY29uZGl0aW9uYWxBdHRyMicg
KFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDb25kaXRpb25hbCcpCi0gICAgeyJjb25kaXRp
b25hbEF0dHIyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRyR2V0dGVy
Q2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIyQXR0clNldHRlckNh
bGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImNvbmRpdGlvbmFsQXR0cjIiLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4
SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOElu
dGVybmFsOjpjb25kaXRpb25hbEF0dHIyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpICYm
IEVOQUJMRShDb25kaXRpb24yKQogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMikKICAgICAvLyBBdHRyaWJ1dGUgJ2NvbmRpdGlvbmFsQXR0cjMnIChUeXBlOiAnYXR0
cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwnKQotICAgIHsiY29uZGl0aW9uYWxBdHRyMyIs
IFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIzQXR0ckdldHRlckNhbGxiYWNrLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyM0F0dHJTZXR0ZXJDYWxsYmFjaywgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCisgICAgeyJjb25kaXRpb25hbEF0dHIzIiwgVGVzdE9ialY4SW50ZXJuYWw6
OmNvbmRpdGlvbmFsQXR0cjNBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpj
b25kaXRpb25hbEF0dHIzQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29u
ZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50
ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjNBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMikKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKICAgICAvLyBBdHRyaWJ1dGUgJ2NvbmRp
dGlvbmFsQXR0cjQnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwnKQot
ICAgIHsiY29uZGl0aW9uYWxBdHRyNCIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqQ29uc3Ry
dWN0b3JHZXR0ZXIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqUmVwbGFjZWFibGVBdHRyU2V0
dGVyQ2FsbGJhY2ssICZWOFRlc3RPYmplY3RBOjppbmZvLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJjb25kaXRpb25hbEF0dHI0
IiwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpDb25zdHJ1Y3RvckdldHRlciwgVGVzdE9ialY4
SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgJlY4
VGVzdE9iamVjdEE6OmluZm8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiAgICAgLy8gQXR0cmlidXRlICdj
b25kaXRpb25hbEF0dHI1JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFs
JykKLSAgICB7ImNvbmRpdGlvbmFsQXR0cjUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9iakNv
bnN0cnVjdG9yR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9ialJlcGxhY2VhYmxlQXR0
clNldHRlckNhbGxiYWNrLCAmVjhUZXN0T2JqZWN0Qjo6aW5mbywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiY29uZGl0aW9uYWxB
dHRyNSIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIsIFRlc3RP
YmpWOEludGVybmFsOjpUZXN0T2JqUmVwbGFjZWFibGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAs
ICZWOFRlc3RPYmplY3RCOjppbmZvLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpICYmIEVO
QUJMRShDb25kaXRpb24yKQogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMikKICAgICAvLyBBdHRyaWJ1dGUgJ2NvbmRpdGlvbmFsQXR0cjYnIChUeXBlOiAnYXR0cmli
dXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwnKQotICAgIHsiY29uZGl0aW9uYWxBdHRyNiIsIFRl
c3RPYmpWOEludGVybmFsOjpUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIsIFRlc3RPYmpWOEludGVy
bmFsOjpUZXN0T2JqUmVwbGFjZWFibGVBdHRyU2V0dGVyQ2FsbGJhY2ssICZWOFRlc3RPYmplY3RD
OjppbmZvLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgeyJjb25kaXRpb25hbEF0dHI2IiwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RP
YmpDb25zdHJ1Y3RvckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJs
ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgJlY4VGVzdE9iamVjdEM6OmluZm8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAv
LyBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAgICAgLy8gQXR0cmli
dXRlICdjYWNoZWRBdHRyaWJ1dGUxJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0
cjogJ0NhY2hlZEF0dHJpYnV0ZScpCi0gICAgeyJjYWNoZWRBdHRyaWJ1dGUxIiwgVGVzdE9ialY4
SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTFBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAorICAgIHsiY2FjaGVkQXR0cmlidXRlMSIsIFRlc3RPYmpWOEludGVybmFsOjpjYWNo
ZWRBdHRyaWJ1dGUxQXR0ckdldHRlckNhbGxiYWNrLCAwLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y2Fj
aGVkQXR0cmlidXRlMUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdjYWNoZWRBdHRyaWJ1dGUyJyAoVHlwZTogJ3JlYWRv
bmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ0NhY2hlZEF0dHJpYnV0ZScpCi0gICAgeyJjYWNoZWRB
dHRyaWJ1dGUyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVy
Q2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiY2FjaGVkQXR0cmlidXRlMiIsIFRl
c3RPYmpWOEludGVybmFsOjpjYWNoZWRBdHRyaWJ1dGUyQXR0ckdldHRlckNhbGxiYWNrLCAwLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6Y2FjaGVkQXR0cmlidXRlMkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdhbnlBdHRyaWJ1
dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7ImFueUF0dHJpYnV0ZSIs
IFRlc3RPYmpWOEludGVybmFsOjphbnlBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RP
YmpWOEludGVybmFsOjphbnlBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAorICAgIHsiYW55QXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OmFueUF0dHJpYnV0
ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmFueUF0dHJpYnV0ZUF0dHJT
ZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmFueUF0dHJpYnV0ZUF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmFueUF0dHJpYnV0ZUF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmli
dXRlICdmbG9hdEFycmF5JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJm
bG9hdEFycmF5IiwgVGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyR2V0dGVyQ2FsbGJh
Y2ssIFRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFycmF5QXR0clNldHRlckNhbGxiYWNrLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKKyAgICB7ImZsb2F0QXJyYXkiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZmxvYXRB
cnJheUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRy
U2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFycmF5QXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZmxvYXRBcnJheUF0dHJTZXR0
ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRl
ICdkb3VibGVBcnJheScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiZG91
YmxlQXJyYXkiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZG91YmxlQXJyYXlBdHRyR2V0dGVyQ2FsbGJh
Y2ssIFRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0dHJTZXR0ZXJDYWxsYmFjaywgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCisgICAgeyJkb3VibGVBcnJheSIsIFRlc3RPYmpWOEludGVybmFsOjpkb3Vi
bGVBcnJheUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmRvdWJsZUFycmF5
QXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZG91YmxlQXJyYXlBdHRyR2V0
dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0
dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0
cmlidXRlICdjb250ZW50RG9jdW1lbnQnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRB
dHRyOiAnQ2hlY2tTZWN1cml0eUZvck5vZGUnKQotICAgIHsiY29udGVudERvY3VtZW50IiwgVGVz
dE9ialY4SW50ZXJuYWw6OmNvbnRlbnREb2N1bWVudEF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCisgICAgeyJjb250ZW50RG9jdW1lbnQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
Y29udGVudERvY3VtZW50QXR0ckdldHRlckNhbGxiYWNrLCAwLCBUZXN0T2JqVjhJbnRlcm5hbDo6
Y29udGVudERvY3VtZW50QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ211dGFibGVQb2ludCcgKFR5cGU6ICdhdHRyaWJ1
dGUnIEV4dEF0dHI6ICcnKQotICAgIHsibXV0YWJsZVBvaW50IiwgVGVzdE9ialY4SW50ZXJuYWw6
Om11dGFibGVQb2ludEF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6Om11dGFi
bGVQb2ludEF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJtdXRhYmxl
UG9pbnQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50QXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50QXR0clNldHRlckNhbGxiYWNrLCBUZXN0
T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
LCBUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50QXR0clNldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2ltbXV0YWJsZVBvaW50
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0ltbXV0YWJsZScpCi0gICAgeyJpbW11dGFi
bGVQb2ludCIsIFRlc3RPYmpWOEludGVybmFsOjppbW11dGFibGVQb2ludEF0dHJHZXR0ZXJDYWxs
YmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50QXR0clNldHRlckNhbGxiYWNr
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKKyAgICB7ImltbXV0YWJsZVBvaW50IiwgVGVzdE9ialY4SW50ZXJu
YWw6OmltbXV0YWJsZVBvaW50QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6
aW1tdXRhYmxlUG9pbnRBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjppbW11
dGFibGVQb2ludEF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJu
YWw6OmltbXV0YWJsZVBvaW50QXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0cmF3YmVycnknIChUeXBlOiAnYXR0cmlidXRl
JyBFeHRBdHRyOiAnSW1wbGVtZW50ZWRBcycpCi0gICAgeyJzdHJhd2JlcnJ5IiwgVGVzdE9ialY4
SW50ZXJuYWw6OnN0cmF3YmVycnlBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFs
OjpzdHJhd2JlcnJ5QXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InN0
cmF3YmVycnkiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJyeUF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmF3YmVycnlBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RP
YmpWOEludGVybmFsOjpzdHJhd2JlcnJ5QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJyeUF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdzdHJpY3RGbG9hdCcgKFR5cGU6
ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdTdHJpY3RUeXBlQ2hlY2tpbmcnKQotICAgIHsic3RyaWN0
RmxvYXQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGbG9hdEF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCisgICAgeyJzdHJpY3RGbG9hdCIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RG
bG9hdEF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZsb2F0QXR0
clNldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRyR2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGbG9hdEF0dHJT
ZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmli
dXRlICdkZXNjcmlwdGlvbicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcn
KQotICAgIHsiZGVzY3JpcHRpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZGVzY3JpcHRpb25BdHRy
R2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiZGVzY3JpcHRpb24iLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6ZGVzY3JpcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIFRlc3RP
YmpWOEludGVybmFsOjpkZXNjcmlwdGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwg
MCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdpZCcgKFR5cGU6ICdhdHRyaWJ1
dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiaWQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6aWRBdHRyR2V0
dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjppZEF0dHJTZXR0ZXJDYWxsYmFjaywgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCisgICAgeyJpZCIsIFRlc3RPYmpWOEludGVybmFsOjppZEF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0clNldHRlckNhbGxiYWNrLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6aWRBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOElu
dGVybmFsOjppZEF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CiAgICAgLy8gQXR0cmlidXRlICdoYXNoJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0
QXR0cjogJycpCi0gICAgeyJoYXNoIiwgVGVzdE9ialY4SW50ZXJuYWw6Omhhc2hBdHRyR2V0dGVy
Q2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiaGFzaCIsIFRlc3RPYmpWOEludGVy
bmFsOjpoYXNoQXR0ckdldHRlckNhbGxiYWNrLCAwLCBUZXN0T2JqVjhJbnRlcm5hbDo6aGFzaEF0
dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8g
QXR0cmlidXRlICdyZXBsYWNlYWJsZUF0dHJpYnV0ZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1
dGUnIEV4dEF0dHI6ICdSZXBsYWNlYWJsZScpCi0gICAgeyJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIs
IFRlc3RPYmpWOEludGVybmFsOjpyZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJTZXR0ZXJDYWxsYmFj
aywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIsIFRlc3RPYmpW
OEludGVybmFsOjpyZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OnJlcGxhY2VhYmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ251bGxhYmxlRG91
YmxlQXR0cmlidXRlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0g
ICAgeyJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJs
ZURvdWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisg
ICAgeyJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJs
ZURvdWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgVGVzdE9ialY4SW50ZXJuYWw6
Om51bGxhYmxlRG91YmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAw
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ251bGxhYmxlTG9uZ0F0dHJpYnV0
ZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsibnVsbGFi
bGVMb25nQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ0F0dHJpYnV0
ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJudWxsYWJsZUxv
bmdBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nQXR0cmlidXRlQXR0
ckdldHRlckNhbGxiYWNrLCAwLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nQXR0cmli
dXRlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAg
ICAvLyBBdHRyaWJ1dGUgJ251bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZScgKFR5cGU6ICdyZWFkb25s
eSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsibnVsbGFibGVCb29sZWFuQXR0cmlidXRl
IiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZUF0dHJHZXR0ZXJD
YWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1
dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVCb29sZWFuQXR0cmlidXRlQXR0ckdldHRl
ckNhbGxiYWNrLCAwLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVCb29sZWFuQXR0cmlidXRl
QXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAv
LyBBdHRyaWJ1dGUgJ251bGxhYmxlU3RyaW5nQXR0cmlidXRlJyAoVHlwZTogJ3JlYWRvbmx5IGF0
dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSIsIFRl
c3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFj
aywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSIsIFRl
c3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFj
aywgMCwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1
dGUgJ251bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0
QXR0cjogJycpCi0gICAgeyJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIsIFRlc3RPYmpW
OEludGVybmFsOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0clNl
dHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7Im51bGxhYmxlTG9uZ1NldHRhYmxl
QXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmli
dXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0
dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpudWxs
YWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwg
VGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0clNldHRl
ckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUg
J251bGxhYmxlU3RyaW5nVmFsdWUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAg
ICB7Im51bGxhYmxlU3RyaW5nVmFsdWUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJp
bmdWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3Ry
aW5nVmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsibnVsbGFi
bGVTdHJpbmdWYWx1ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0
ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0
dHJTZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVB
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJs
ZVN0cmluZ1ZhbHVlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKIH07CiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRNZXRob2Qg
VjhUZXN0T2JqTWV0aG9kc1tdID0gewpAQCAtMzMzMSwxNCArNDk2OCwxNCBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhUZXN0T2JqOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpjb25zdHJ1Y3Rvcihh
cmdzKTsKIH0KIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBD
b25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRU
eXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1
cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
ZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxk
VHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2Fs
PHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVsdFNpZ25hdHVyZSA9
IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RPYmplY3Qi
LCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0T2JqOjppbnRl
cm5hbEZpZWxkQ291bnQsCiAgICAgICAgIFY4VGVzdE9iakF0dHJzLCBXVEZfQVJSQVlfTEVOR1RI
KFY4VGVzdE9iakF0dHJzKSwKLSAgICAgICAgVjhUZXN0T2JqTWV0aG9kcywgV1RGX0FSUkFZX0xF
TkdUSChWOFRlc3RPYmpNZXRob2RzKSwgaXNvbGF0ZSk7CisgICAgICAgIFY4VGVzdE9iak1ldGhv
ZHMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0T2JqTWV0aG9kcyksIGlzb2xhdGUsIGN1cnJlbnRX
b3JsZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29t
ZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihW
OFRlc3RPYmo6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0
VGVtcGxhdGU+IGluc3RhbmNlID0gZGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgpOwpAQCAtMzM0OSw0
MyArNDk4Niw0MyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQogICAgIGlmIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjplbmFibGVkQXRSdW50aW1lQXR0cjFFbmFibGVkKCkpIHsKICAgICAgICAg
c3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0
YSA9XAogICAgICAgICAvLyBBdHRyaWJ1dGUgJ2VuYWJsZWRBdFJ1bnRpbWVBdHRyMScgKFR5cGU6
ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdWOEVuYWJsZWRBdFJ1bnRpbWUnKQotICAgICAgICB7ImVu
YWJsZWRBdFJ1bnRpbWVBdHRyMSIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1l
QXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50
aW1lQXR0cjFBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99OwotICAgICAgICBWOERP
TUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJE
YXRhLCBpc29sYXRlKTsKKyAgICAgICAgeyJlbmFibGVkQXRSdW50aW1lQXR0cjEiLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0
T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0clNldHRlckNhbGxiYWNrLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0ckdldHRlckNhbGxiYWNr
Rm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0
clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfTsKKyAgICAgICAgVjhE
T01Db25maWd1cmF0aW9uOjpjb25maWd1cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRy
RGF0YSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CiAgICAgfQogICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpmZWF0dXJlTmFtZUVuYWJsZWQoKSkgewogICAgICAgICBzdGF0aWMg
Y29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhID1cCiAg
ICAgICAgIC8vIEF0dHJpYnV0ZSAnZW5hYmxlZEF0UnVudGltZUF0dHIyJyAoVHlwZTogJ2F0dHJp
YnV0ZScgRXh0QXR0cjogJ1Y4RW5hYmxlZEF0UnVudGltZScpCi0gICAgICAgIHsiZW5hYmxlZEF0
UnVudGltZUF0dHIyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0
dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRy
MkF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL307Ci0gICAgICAgIFY4RE9NQ29uZmln
dXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEsIGlz
b2xhdGUpOworICAgICAgICB7ImVuYWJsZWRBdFJ1bnRpbWVBdHRyMiIsIFRlc3RPYmpWOEludGVy
bmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOElu
dGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpW
OEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyU2V0dGVy
Q2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99OworICAgICAgICBWOERPTUNvbmZp
Z3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhLCBp
c29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICB9CiAKICAgICAvLyBDdXN0b20gU2lnbmF0
dXJlICd2b2lkTWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50IHZvaWRNZXRob2RXaXRoQXJn
c0FyZ2MgPSAzOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHZvaWRNZXRo
b2RXaXRoQXJnc0FyZ3Zbdm9pZE1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCks
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6
OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PiB2b2lkTWV0aG9kV2l0aEFyZ3NBcmd2W3ZvaWRNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgm
VjhUZXN0T2JqOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6
OlNpZ25hdHVyZT4gdm9pZE1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6
TmV3KGRlc2MsIHZvaWRNZXRob2RXaXRoQXJnc0FyZ2MsIHZvaWRNZXRob2RXaXRoQXJnc0FyZ3Yp
OwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ2b2lkTWV0aG9kV2l0aEFy
Z3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6dm9pZE1l
dGhvZFdpdGhBcmdzTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHZvaWRNZXRob2RXaXRo
QXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbG9uZ01ldGhvZFdp
dGhBcmdzJwogICAgIGNvbnN0IGludCBsb25nTWV0aG9kV2l0aEFyZ3NBcmdjID0gMzsKLSAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBsb25nTWV0aG9kV2l0aEFyZ3NBcmd2W2xv
bmdNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5cGUp
IH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbG9uZ01ldGhvZFdpdGhB
cmdzQXJndltsb25nTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbywg
Y3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGxvbmdN
ZXRob2RXaXRoQXJnc1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBsb25nTWV0
aG9kV2l0aEFyZ3NBcmdjLCBsb25nTWV0aG9kV2l0aEFyZ3NBcmd2KTsKICAgICBwcm90by0+U2V0
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibG9uZ01ldGhvZFdpdGhBcmdzIiksIHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdNZXRob2RXaXRoQXJnc01ldGhv
ZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBsb25nTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUpKTsK
IAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ29iak1ldGhvZFdpdGhBcmdzJwogICAgIGNvbnN0
IGludCBvYmpNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IG9iak1ldGhvZFdpdGhBcmdzQXJndltvYmpNZXRob2RXaXRoQXJnc0FyZ2Nd
ID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdU
ZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gb2JqTWV0aG9kV2l0aEFyZ3NBcmd2W29iak1ldGhvZFdpdGhB
cmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAg
ICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBvYmpNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSA9
IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBvYmpNZXRob2RXaXRoQXJnc0FyZ2MsIG9iak1ldGhv
ZFdpdGhBcmdzQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm9i
ak1ldGhvZFdpdGhBcmdzIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50
ZXJuYWw6Om9iak1ldGhvZFdpdGhBcmdzTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIG9i
ak1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdt
ZXRob2RXaXRoU2VxdWVuY2VBcmcnCiAgICAgY29uc3QgaW50IG1ldGhvZFdpdGhTZXF1ZW5jZUFy
Z0FyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFdp
dGhTZXF1ZW5jZUFyZ0FyZ3ZbbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnY10gPSB7IFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOHNlcXVlbmNlPFNjcmlwdFBy
b2ZpbGU+OjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRob2RXaXRoU2VxdWVuY2VBcmdB
cmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4
c2VxdWVuY2U8U2NyaXB0UHJvZmlsZT46OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAg
djg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWduYXR1cmUg
PSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnYywgbWV0
aG9kV2l0aFNlcXVlbmNlQXJnQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoU2VxdWVuY2VBcmdNZXRob2RDYWxsYmFjaywg
djhVbmRlZmluZWQoKSwgbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0dXJlKSk7CiAKICAgICAv
LyBDdXN0b20gU2lnbmF0dXJlICdtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzJwog
ICAgIGNvbnN0IGludCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJnYyA9IDI7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kVGhhdFJlcXVpcmVz
QWxsQXJnc0FuZFRocm93c0FyZ3ZbbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0Fy
Z2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5
cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kVGhhdFJl
cXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ3ZbbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRo
cm93c0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCBj
dXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbWV0aG9k
VGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5l
dyhkZXNjLCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJnYywgbWV0aG9kVGhh
dFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmlu
Zzo6TmV3U3ltYm9sKCJtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzIiksIHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFRoYXRSZXF1aXJl
c0FsbEFyZ3NBbmRUaHJvd3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbWV0aG9kVGhh
dFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c1NpZ25hdHVyZSkpOwogICAgIGRlc2MtPlNldCh2ODo6
U3RyaW5nOjpOZXdTeW1ib2woInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJn
IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY01l
dGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVk
KCksIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpKSk7CkBAIC0zNDAzLDQzICs1MDQwLDQzIEBA
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhU
ZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNpCiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdzdHJp
bmdBcnJheUZ1bmN0aW9uJwogICAgIGNvbnN0IGludCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJnYyA9
IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5j
dGlvbkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgd29ybGRUeXBl
KSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVu
Y3Rpb25Bcmd2W3N0cmluZ0FycmF5RnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8sIGN1cnJlbnRX
b3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBzdHJpbmdBcnJheUZ1
bmN0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHN0cmluZ0FycmF5RnVu
Y3Rpb25BcmdjLCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6
U3RyaW5nOjpOZXdTeW1ib2woInN0cmluZ0FycmF5RnVuY3Rpb24iKSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXJyYXlGdW5jdGlvbk1ldGhvZENh
bGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdHJpbmdBcnJheUZ1bmN0aW9uU2lnbmF0dXJlKSk7CiAK
ICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdkb21TdHJpbmdMaXN0RnVuY3Rpb24nCiAgICAgY29u
c3QgaW50IGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ3ZbZG9tU3RyaW5nTGlz
dEZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1Rl
bXBsYXRlKCZWOERPTVN0cmluZ0xpc3Q6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkb21TdHJpbmdMaXN0RnVuY3Rpb25Bcmd2W2RvbVN0
cmluZ0xpc3RGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdMaXN0OjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9
OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gZG9tU3RyaW5nTGlzdEZ1bmN0aW9uU2ln
bmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFy
Z2MsIGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmlu
Zzo6TmV3U3ltYm9sKCJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6ZG9tU3RyaW5nTGlzdEZ1bmN0aW9uTWV0aG9kQ2Fs
bGJhY2ssIHY4VW5kZWZpbmVkKCksIGRvbVN0cmluZ0xpc3RGdW5jdGlvblNpZ25hdHVyZSkpOwog
CiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnY29udmVydDEnCiAgICAgY29uc3QgaW50IGNvbnZl
cnQxQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVy
dDFBcmd2W2NvbnZlcnQxQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSkt
PnJhd1RlbXBsYXRlKCZWOGE6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0MUFyZ3ZbY29udmVydDFBcmdjXSA9IHsgVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4YTo6aW5mbywgY3VycmVu
dFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZlcnQxU2ln
bmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGNvbnZlcnQxQXJnYywgY29udmVydDFB
cmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVydDEiKSwg
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDFNZXRo
b2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVydDFTaWduYXR1cmUpKTsKIAogICAgIC8v
IEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZlcnQyJwogICAgIGNvbnN0IGludCBjb252ZXJ0MkFyZ2Mg
PSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQyQXJndltj
b252ZXJ0MkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1w
bGF0ZSgmVjhiOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gY29udmVydDJBcmd2W2NvbnZlcnQyQXJnY10gPSB7IFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGI6OmluZm8sIGN1cnJlbnRXb3JsZFR5
cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBjb252ZXJ0MlNpZ25hdHVyZSA9
IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBjb252ZXJ0MkFyZ2MsIGNvbnZlcnQyQXJndik7CiAg
ICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNvbnZlcnQyIiksIHY4OjpGdW5j
dGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQyTWV0aG9kQ2FsbGJh
Y2ssIHY4VW5kZWZpbmVkKCksIGNvbnZlcnQyU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20g
U2lnbmF0dXJlICdjb252ZXJ0NCcKICAgICBjb25zdCBpbnQgY29udmVydDRBcmdjID0gMTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NEFyZ3ZbY29udmVydDRB
cmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4
ZDo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGNvbnZlcnQ0QXJndltjb252ZXJ0NEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhkOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9Owog
ICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDRTaWduYXR1cmUgPSB2ODo6U2ln
bmF0dXJlOjpOZXcoZGVzYywgY29udmVydDRBcmdjLCBjb252ZXJ0NEFyZ3YpOwogICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0NCIpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0NE1ldGhvZENhbGxiYWNrLCB2OFVu
ZGVmaW5lZCgpLCBjb252ZXJ0NFNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVy
ZSAnY29udmVydDUnCiAgICAgY29uc3QgaW50IGNvbnZlcnQ1QXJnYyA9IDE7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDVBcmd2W2NvbnZlcnQ1QXJnY10gPSB7
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGU6OmluZm8s
IHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252
ZXJ0NUFyZ3ZbY29udmVydDVBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+cmF3VGVtcGxhdGUoJlY4ZTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6
SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZlcnQ1U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6
TmV3KGRlc2MsIGNvbnZlcnQ1QXJnYywgY29udmVydDVBcmd2KTsKICAgICBwcm90by0+U2V0KHY4
OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVydDUiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5l
dyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDVNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQo
KSwgY29udmVydDVTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3Zhcmlh
ZGljTm9kZU1ldGhvZCcKICAgICBjb25zdCBpbnQgdmFyaWFkaWNOb2RlTWV0aG9kQXJnYyA9IDI7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdmFyaWFkaWNOb2RlTWV0aG9k
QXJndlt2YXJpYWRpY05vZGVNZXRob2RBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbywgd29ybGRUeXBlKSwgVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbywgd29ybGRU
eXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHZhcmlhZGljTm9k
ZU1ldGhvZEFyZ3ZbdmFyaWFkaWNOb2RlTWV0aG9kQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOE5vZGU6OmluZm8sIGN1cnJlbnRXb3JsZFR5
cGUpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2Rl
OjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVy
ZT4gdmFyaWFkaWNOb2RlTWV0aG9kU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2Ms
IHZhcmlhZGljTm9kZU1ldGhvZEFyZ2MsIHZhcmlhZGljTm9kZU1ldGhvZEFyZ3YpOwogICAgIHBy
b3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ2YXJpYWRpY05vZGVNZXRob2QiKSwgdjg6
OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6dmFyaWFkaWNOb2RlTWV0
aG9kTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHZhcmlhZGljTm9kZU1ldGhvZFNpZ25h
dHVyZSkpOwogICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVDb25zdGFudHMo
ZGVzYywgcHJvdG8sIFY4VGVzdE9iakNvbnN0cywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RPYmpD
b25zdHMpLCBpc29sYXRlKTsKQEAgLTM0NDksMjMgKzUwODYsMjMgQEAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2
ODo6UGVyc2kKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IFY4VGVzdE9iajo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUs
IFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IFY4VGVzdE9iajo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRh
KiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xh
dGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZp
bmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdv
cmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6
OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKGRh
dGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwot
ICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAg
ICAgIENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBj
dXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+
dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0
dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3
b3JsZFR5cGUpCitib29sIFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50
V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3Vy
cmVudFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZUluQW55V29y
bGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKQEAg
LTM0ODMsMTMgKzUxMjAsMTMgQEAgdm9pZCBWOFRlc3RPYmo6Omluc3RhbGxQZXJDb250ZXh0UHJv
cGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGluc3RhbmNlLCBUZXMKICAgICBpZiAoQ29u
dGV4dEZlYXR1cmVzOjplbmFibGVkUGVyQ29udGV4dEF0dHIxRW5hYmxlZChpbXBsLT5kb2N1bWVu
dCgpKSkgewogICAgICAgICBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVk
QXR0cmlidXRlIGF0dHJEYXRhID1cCiAgICAgICAgIC8vIEF0dHJpYnV0ZSAnZW5hYmxlZFBlckNv
bnRleHRBdHRyMScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdWOEVuYWJsZWRQZXJDb250
ZXh0JykKLSAgICAgICAgeyJlbmFibGVkUGVyQ29udGV4dEF0dHIxIiwgVGVzdE9ialY4SW50ZXJu
YWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOElu
dGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfTsKKyAgICAgICAgeyJlbmFibGVkUGVyQ29udGV4dEF0dHIxIiwgVGVzdE9ialY4SW50
ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpW
OEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0clNldHRlckNhbGxiYWNrLCBUZXN0
T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJHZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjFBdHRy
U2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99OwogICAgICAgICBWOERP
TUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJE
YXRhLCBpc29sYXRlKTsKICAgICB9CiAgICAgaWYgKENvbnRleHRGZWF0dXJlczo6ZmVhdHVyZU5h
bWVFbmFibGVkKGltcGwtPmRvY3VtZW50KCkpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBWOERP
TUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPVwKICAgICAgICAgLy8g
QXR0cmlidXRlICdlbmFibGVkUGVyQ29udGV4dEF0dHIyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0
QXR0cjogJ1Y4RW5hYmxlZFBlckNvbnRleHQnKQotICAgICAgICB7ImVuYWJsZWRQZXJDb250ZXh0
QXR0cjIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMkF0dHJHZXR0
ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjJBdHRy
U2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99OworICAgICAgICB7ImVuYWJsZWRQZXJDb250
ZXh0QXR0cjIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMkF0dHJH
ZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjJB
dHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0
dHIyQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5h
YmxlZFBlckNvbnRleHRBdHRyMkF0dHJTZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL307CiAgICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRl
KGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEsIGlzb2xhdGUpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaAppbmRl
eCAxZjIzZTY0NTA5YmE0YmE1MTE4NGYwNjUwZjkwMzY0NTg2MjU1MTk1Li5kZmM0NGU1YTE2MWFk
N2FjNDU3ZTc3NDBjYjYxY2NlZmU3YTllYWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCkBAIC04MSw2ICs4MSwxNyBAQCBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdE9iaiogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbgogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZv
ck1haW5Xb3JsZChUZXN0T2JqKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9u
Q29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShp
c29sYXRlKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAg
IHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7
CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7Cisg
ICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVt
cGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RPYmoqIGltcGwsIGNvbnN0IEhvbGRlckNv
bnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTkzLDYgKzEw
NCwyNSBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RPYmoqIGlt
cGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xk
ZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVzdE9iaiogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFp
bmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3Js
ZFR5cGUoY29udGFpbmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5M
SUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRl
KCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6
Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWlu
ZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdE9iaiA+IGltcGws
IGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkK
K3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVy
LCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xh
c3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNz
UmVmUHRyPCBUZXN0T2JqID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIs
IFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgp
LCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5jcHAKaW5kZXggNmVhYTM3YzExMzdmYjJhODYyNWNkOTE2ODllNDg0ZjM1Zjk4
ZWIzNC4uZDAzNTAxYTRjZDc0MDk0YzI5MGYyYjBjNDVlYzA2MTJhOWY0ZTBhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMTQ3LDE0ICsxNDcs
MTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3QgdjgKICAgICByZXR1cm4gVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNWOEludGVybmFsOjpjb25zdHJ1Y3RvcihhcmdzKTsKIH0KIAotc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJl
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7
CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBk
ZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShk
ZXNjLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW50ZXJuYWxG
aWVsZENvdW50LAogICAgICAgICAwLCAwLAotICAgICAgICAwLCAwLCBpc29sYXRlKTsKKyAgICAg
ICAgMCwgMCwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRl
ZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgog
ICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNv
bnN0cnVjdG9yQ2FsbGJhY2spOwogICAgIApAQCAtMTY0LDIzICsxNjQsMjMgQEAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3IKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OkdldFRlbXBs
YXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBs
YXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZp
bmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBl
KS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVz
dWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Cisg
ICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5lbmQo
KSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUg
aGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRl
bXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RlbXBs
YXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5
cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7
CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1wbGF0ZShk
YXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJl
bnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFk
ZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jv
b2wgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBj
dXJyZW50V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJu
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1
ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuaAppbmRleCAxNGFhYmM0YjhhMzA4OTViYWQ2YTNlMDA2YWM4ZWFkMjU2YWI1YWU4Li5k
MGU1YTlhMjJiNjZmZTA4YzRhZTlkOTFiOGM0YjRkZWZkMGJmMWZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKQEAgLTc2LDYgKzc2LDE3IEBAIGlubGluZSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1w
bCwgdjg6OkhhbmRsZTx2CiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9yTWFpbldv
cmxkKFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJU
KHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1w
bCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWlu
V29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+
CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBh
YmxlKiB3cmFwcGFibGUpCiB7CkBAIC04OCw2ICs5OSwyNSBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCBjb25z
dCBIbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJs
ZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29u
dGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNv
bnRhaW5lci5HZXRJc29sYXRlKCkpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFp
bXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBw
ZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRl
cigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVy
Q29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSog
d3JhcHBhYmxlKQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgp
LCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29u
dGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID4gaW1wbCwgY29u
c3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewog
ICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
Y3BwCmluZGV4IGQ1OGFhM2UwZjRjMjBlNDNhMzdiMzg4YTc1YTc4MDE1MjE2NzFmYjguLmViOGEz
OThiM2Y3NGE3MzAwNjc0YWE2ZjI0ZWM4MjYxMDk5ZWY2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC04Niw2ICs4
NiwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlQXR0ckdldHRlckNhbGxi
YWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogICAgIHJldHVybiBUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6dmFsdWVBdHRyR2V0dGVyKG5hbWUsIGlu
Zm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlQXR0ckdldHRlckZv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBp
bXAgPSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIHJldHVybiBpbXAtPnZhbHVlKCkgPyBpbXAtPnZhbHVlKCktPmRlc2Vy
aWFsaXplKCkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgp
KSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWVBdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VWOEludGVybmFsOjp2YWx1ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwg
aW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHZhbHVlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSog
aW1wID0gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKQEAgLTk5LDYgKzExMCwxOSBAQCBzdGF0aWMgdm9pZCB2YWx1ZUF0dHJTZXR0
ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYQog
ICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjp2YWx1ZUF0
dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCB2YWx1ZUF0dHJT
ZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcCA9IFY4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdiA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgaW1wLT5zZXRWYWx1ZShXVEY6OmdldFB0
cih2KSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCB2YWx1ZUF0dHJTZXR0ZXJDYWxs
YmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0clNldHRl
ckZvck1haW5Xb3JsZChuYW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gcmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wID0gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTExMCw2ICsxMzQsMTcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWFkb25seVZhbHVlQXR0ckdldHRlckNhbGxi
YWNrKHY4OjpMb2NhbDx2ODo6U3RyaW4KICAgICByZXR1cm4gVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyKG5hbWUsIGlu
Zm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRvbmx5VmFsdWVBdHRy
R2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UqIGltcCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIGltcC0+cmVhZG9ubHlWYWx1ZSgpID8gaW1w
LT5yZWFkb25seVZhbHVlKCktPmRlc2VyaWFsaXplKCkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4o
djhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKSk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gcmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICByZXR1cm4gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnJl
YWRvbmx5VmFsdWVBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZFZhbHVlQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICB2
ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3BlcnR5TmFtZSA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJv
bCgiY2FjaGVkVmFsdWUiKTsKQEAgLTEyOCw2ICsxNjMsMjQgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjYWNoZWRWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0
cmluZz4KICAgICByZXR1cm4gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50
ZXJuYWw6OmNhY2hlZFZhbHVlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRWYWx1ZUF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBwcm9wZXJ0eU5hbWUgPSB2ODo6U3RyaW5nOjpO
ZXdTeW1ib2woImNhY2hlZFZhbHVlIik7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVl
ID0gaW5mby5Ib2xkZXIoKS0+R2V0SGlkZGVuVmFsdWUocHJvcGVydHlOYW1lKTsKKyAgICBpZiAo
IXZhbHVlLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZCA9IGltcC0+Y2FjaGVkVmFsdWUoKTsKKyAgICB2YWx1
ZSA9IHNlcmlhbGl6ZWQgPyBzZXJpYWxpemVkLT5kZXNlcmlhbGl6ZSgpIDogdjg6OkhhbmRsZTx2
ODo6VmFsdWU+KHY4TnVsbChpbmZvLkdldElzb2xhdGUoKSkpOworICAgIGluZm8uSG9sZGVyKCkt
PlNldEhpZGRlblZhbHVlKHByb3BlcnR5TmFtZSwgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsK
K30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRWYWx1ZUF0dHJHZXR0ZXJD
YWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0ckdldHRlckZvck1haW5Xb3Js
ZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgY2FjaGVkVmFsdWVBdHRyU2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTQyLDYgKzE5NSwyMCBAQCBzdGF0aWMgdm9p
ZCBjYWNoZWRWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPAogICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOElu
dGVybmFsOjpjYWNoZWRWYWx1ZUF0dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitz
dGF0aWMgdm9pZCBjYWNoZWRWYWx1ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UqIGltcCA9IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdiA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSk7Cisg
ICAgaW1wLT5zZXRDYWNoZWRWYWx1ZShXVEY6OmdldFB0cih2KSk7CisgICAgaW5mby5Ib2xkZXIo
KS0+RGVsZXRlSGlkZGVuVmFsdWUodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjYWNoZWRWYWx1ZSIp
KTsgLy8gSW52YWxpZGF0ZSB0aGUgY2FjaGVkIHZhbHVlLgorICAgIHJldHVybjsKK30KKworc3Rh
dGljIHZvaWQgY2FjaGVkVmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRWYWx1ZUF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFt
ZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvcnRz
QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKIHsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBp
bXAgPSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwpAQCAtMTYwLDYgKzIyNywyNCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHBvcnRzQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAog
ICAgIHJldHVybiBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6
cG9ydHNBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHBvcnRzQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIE1lc3NhZ2VQb3J0QXJyYXkq
IHBvcnRzID0gaW1wLT5wb3J0cygpOworICAgIGlmICghcG9ydHMpCisgICAgICAgIHJldHVybiB2
ODo6QXJyYXk6Ok5ldygwKTsKKyAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRzQ29weSgqcG9ydHMp
OworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHBvcnRBcnJheSA9IHY4OjpBcnJheTo6TmV3KHBv
cnRzQ29weS5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9ydHNDb3B5LnNp
emUoKTsgKytpKQorICAgICAgICBwb3J0QXJyYXktPlNldCh2OEludGVnZXIoaSwgaW5mby5HZXRJ
c29sYXRlKCkpLCB0b1Y4RmFzdEZvck1haW5Xb3JsZChwb3J0c0NvcHlbaV0uZ2V0KCksIGluZm8s
IGltcCkpOworICAgIHJldHVybiBwb3J0QXJyYXk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gcG9ydHNBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0
dXJuIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpwb3J0c0F0
dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgdjg6Okhh
bmRsZTx2ODo6U3RyaW5nPiBwcm9wZXJ0eU5hbWUgPSB2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNh
Y2hlZFJlYWRvbmx5VmFsdWUiKTsKQEAgLTE3OCw2ICsyNjMsMjQgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBjYWNoZWRSZWFkb25seVZhbHVlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpM
b2NhbDx2ODoKICAgICByZXR1cm4gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4
SW50ZXJuYWw6OmNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQog
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0
dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gcHJvcGVydHlO
YW1lID0gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjYWNoZWRSZWFkb25seVZhbHVlIik7CisgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gaW5mby5Ib2xkZXIoKS0+R2V0SGlkZGVuVmFs
dWUocHJvcGVydHlOYW1lKTsKKyAgICBpZiAoIXZhbHVlLklzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHZhbHVlOworICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcCA9
IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZCA9IGlt
cC0+Y2FjaGVkUmVhZG9ubHlWYWx1ZSgpOworICAgIHZhbHVlID0gc2VyaWFsaXplZCA/IHNlcmlh
bGl6ZWQtPmRlc2VyaWFsaXplKCkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjhOdWxsKGluZm8u
R2V0SXNvbGF0ZSgpKSk7CisgICAgaW5mby5Ib2xkZXIoKS0+U2V0SGlkZGVuVmFsdWUocHJvcGVy
dHlOYW1lLCB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VW
OEludGVybmFsOjpjYWNoZWRSZWFkb25seVZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZChuYW1l
LCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhY2NlcHRUcmFuc2Zl
ckxpc3RNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5M
ZW5ndGgoKSA8IDEpCkBAIC0yODEsMTUgKzM4NCwxNSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGNvbnN0cnVjdG9yKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRpYyBj
b25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQXR0cnNbXSA9IHsKICAgICAvLyBBdHRyaWJ1dGUgJ3ZhbHVl
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJ2YWx1ZSIsIFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjp2YWx1ZUF0dHJHZXR0ZXJDYWxs
YmFjaywgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVl
QXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InZhbHVlIiwgVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6dmFs
dWVBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VW
OEludGVybmFsOjp2YWx1ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0clNldHRlckNhbGxi
YWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlYWRv
bmx5VmFsdWUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7
InJlYWRvbmx5VmFsdWUiLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRl
cm5hbDo6cmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CisgICAgeyJyZWFkb25seVZhbHVlIiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVY4SW50ZXJuYWw6OnJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpyZWFkb25seVZhbHVlQXR0ckdl
dHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRy
aWJ1dGUgJ2NhY2hlZFZhbHVlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhY2hlZEF0
dHJpYnV0ZScpCi0gICAgeyJjYWNoZWRWYWx1ZSIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0clNl
dHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImNhY2hlZFZhbHVlIiwgVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5h
bDo6Y2FjaGVkVmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2ssIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFja0Zvck1h
aW5Xb3JsZCwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNh
Y2hlZFZhbHVlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
ICAgICAvLyBBdHRyaWJ1dGUgJ3BvcnRzJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0
QXR0cjogJycpCi0gICAgeyJwb3J0cyIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VWOEludGVybmFsOjpwb3J0c0F0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CisgICAgeyJwb3J0cyIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVy
bmFsOjpwb3J0c0F0dHJHZXR0ZXJDYWxsYmFjaywgMCwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVY4SW50ZXJuYWw6OnBvcnRzQXR0ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxk
LCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2NhY2hlZFJlYWRvbmx5VmFs
dWUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FjaGVkQXR0cmlidXRl
JykKLSAgICB7ImNhY2hlZFJlYWRvbmx5VmFsdWUiLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFj
aywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJjYWNoZWRSZWFkb25seVZhbHVlIiwgVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFJlYWRvbmx5VmFs
dWVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VWOEludGVybmFsOjpjYWNoZWRSZWFkb25seVZhbHVlQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKIH07CiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZp
Z3VyYXRpb246OkJhdGNoZWRNZXRob2QgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlTWV0aG9kc1tdID0gewpAQCAtMzA4LDE0ICs0MTEsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxs
YmFjaygKICAgICByZXR1cm4gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50
ZXJuYWw6OmNvbnN0cnVjdG9yKGFyZ3MpOwogfQogCi1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNj
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7
CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBk
ZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShk
ZXNjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2U6OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgVjhUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlQXR0cnMpLAotICAgICAgICBWOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VNZXRob2RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZU1ldGhvZHMpLCBpc29sYXRlKTsKKyAgICAgICAgVjhUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlTWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VNZXRob2RzKSwgaXNvbGF0ZSwgY3VycmVu
dFdvcmxkVHlwZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBz
b21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIGRlc2MtPlNldENhbGxIYW5kbGVy
KFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFj
ayk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBkZXNjLT5J
bnN0YW5jZVRlbXBsYXRlKCk7CkBAIC0zMjksMjMgKzQzMiwyMyBAQCBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZQogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCit2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBl
cldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRh
dGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURh
dGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3Js
ZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgm
aW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRU
eXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFu
ZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSks
IGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5h
ZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRX
b3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0
ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVt
cGw7CiB9CiAKLWJvb2wgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpIYXNJ
bnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUp
CiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3Rh
bmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRU
eXBlKTsKIH0KIAogYm9vbCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Okhh
c0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5oCmluZGV4IGNhOTJjYzgwYmJjOTM3ZjlkODNkMmFlNDA3ZDEzZTkwNzc5
YTdlMzguLmE4OTlhOGIzZjA2ZDU1ODA0NGZiZmI1M2E2MGZiNTllN2NmNTFhNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKQEAg
LTc3LDYgKzc3LDE3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXBsLCB2ODo6CiAgICAgcmV0dXJuIHdyYXAo
aW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4Rm9yTWFpbldvcmxkKFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1h
aW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVs
bFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9
IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdy
YXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3Jh
cChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBI
b2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOEZhc3QoVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wbCwg
Y29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQog
ewpAQCAtODksNiArMTAwLDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZh
c3QoVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wbCwKIH0KIAogdGVtcGxh
dGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBX
cmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5lci5H
ZXRJc29sYXRlKCkpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAg
ICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWlu
V29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250
YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVy
LCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0
Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3
cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCks
IGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250
YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OEZhc3QoUGFzc1JlZlB0cjwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA+IGlt
cGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJs
ZSkKIHsKICAgICByZXR1cm4gdG9WOEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFi
bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAKaW5kZXggMWRmZmFjOGU4YzI4NzdjYmY1YjZmZDU3OGNh
YTEyMDVlYWU4Njk4Ny4uZjdmZDg5OTc3NThiYzBlYWI2ZDNmOGZhZjhlNmVlZDNlOGMxZTYzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0VHlwZWRlZnMuY3BwCkBAIC05MSw2ICs5MSwxNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpM
b2NhbDx2OAogICAgIHJldHVybiBUZXN0VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdM
b25nQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOworICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXcoc3RhdGljX2Nhc3Q8ZG91YmxlPihp
bXAtPnVuc2lnbmVkTG9uZ0xvbmdBdHRyKCkpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3Js
ZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICByZXR1cm4gVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9u
Z0F0dHJBdHRyR2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9p
ZCB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewogICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwpAQCAtMTA0LDYgKzExNSwxOSBAQCBzdGF0aWMgdm9pZCB1bnNpZ25l
ZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdgogICAgIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0
clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHVuc2lnbmVkTG9u
Z0xvbmdBdHRyQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCit7CisgICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHYgPSB0b1VJbnQ2NCh2YWx1
ZSk7CisgICAgaW1wLT5zZXRVbnNpZ25lZExvbmdMb25nQXR0cih2KTsKKyAgICByZXR1cm47Cit9
CisKK3N0YXRpYyB2b2lkIHVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0VHlwZWRl
ZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJGb3JNYWluV29ybGQo
bmFtZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGlt
bXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdFR5cGVk
ZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0x
MTUsNiArMTM5LDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW1tdXRhYmxlU2Vy
aWFsaXplZFNjcmlwdFZhbHVlQXR0ckdldHRlckNhbGxiYWNrKHY4CiAgICAgcmV0dXJuIFRlc3RU
eXBlZGVmc1Y4SW50ZXJuYWw6OmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJHZXR0
ZXIobmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW1tdXRh
YmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0ckdldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBU
ZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKKyAgICByZXR1cm4gaW1wLT5pbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoKSA/IGlt
cC0+aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKCktPmRlc2VyaWFsaXplKCkgOiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4odjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKSk7Cit9CisKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0
ckdldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0VHlwZWRlZnNW
OEludGVybmFsOjppbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyR2V0dGVyRm9yTWFp
bldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBpbW11dGFibGVTZXJpYWxpemVk
U2NyaXB0VmFsdWVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKQEAgLTEyOCw2ICsxNjMsMTkgQEAgc3RhdGljIHZvaWQgaW1tdXRhYmxlU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW4KICAgICBU
ZXN0VHlwZWRlZnNWOEludGVybmFsOjppbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRy
U2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZvaWQgaW1tdXRhYmxlU2Vy
aWFsaXplZFNjcmlwdFZhbHVlQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gdiA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHZhbHVlLCBpbmZvLkdldElzb2xh
dGUoKSk7CisgICAgaW1wLT5zZXRJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGOjpn
ZXRQdHIodikpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHZvaWQgaW1tdXRhYmxlU2VyaWFs
aXplZFNjcmlwdFZhbHVlQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0VHlwZWRlZnNWOEludGVybmFsOjppbW11dGFi
bGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyU2V0dGVyRm9yTWFpbldvcmxkKG5hbWUsIHZhbHVl
LCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RU
eXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xNDMsNiArMTkxLDIxIEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0
dGVyQ2FsbGJhY2sodjg6OkxvY2FsCiAgICAgcmV0dXJuIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6
OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0
ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVm
czo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgaW50IHYgPSBpbXAtPmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKTsKKyAgICBpZiAoVU5M
SUtFTFkoZWMpKQorICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElz
b2xhdGUoKSk7CisgICAgcmV0dXJuIHY4SW50ZWdlcih2LCBpbmZvLkdldElzb2xhdGUoKSk7Cit9
CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25B
dHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RUeXBlZGVm
c1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3Js
ZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25B
dHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0VHlwZWRl
ZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE1
Niw2ICsyMTksMTkgQEAgc3RhdGljIHZvaWQgYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0
dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUKICAgICBUZXN0VHlwZWRlZnNW
OEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIobmFtZSwgdmFsdWUs
IGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0
ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RU
eXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIGludCB2ID0gdG9JbnQzMih2YWx1ZSk7CisgICAgaW1wLT5zZXRBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbih2KTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGF0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgdmFsdWUsIGluZm8pOworfQor
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKICAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE2Nyw2ICsyNDMsMTcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBhdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjayh2
ODo6TG9jYWwKICAgICByZXR1cm4gVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0
ZXJFeGNlcHRpb25BdHRyR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckZvck1haW5Xb3Js
ZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+YXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCkpOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrRm9yTWFp
bldvcmxkKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIHJldHVybiBUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQobmFtZSwgaW5mbyk7Cit9CisKIHN0
YXRpYyB2b2lkIGF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVm
czo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xODMsNiArMjcwLDIyIEBAIHN0YXRpYyB2
b2lkIGF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lCiAgICAgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0
ZXJFeGNlcHRpb25BdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTsKIH0KIAorc3RhdGljIHZv
aWQgYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5
cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBpbnQgdiA9IHRvSW50MzIodmFs
dWUpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcC0+c2V0QXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24odiwgZWMpOworICAgIGlmIChVTkxJS0VMWShlYykpCisgICAgICAgIHNldERP
TUV4Y2VwdGlvbihlYywgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybjsKK30KKworc3Rh
dGljIHZvaWQgYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWlu
V29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZChu
YW1lLCB2YWx1ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RUeXBlZGVm
cyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTk4
LDYgKzMwMSwyMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrKHY4OgogICAgIHJldHVybiBUZXN0VHlw
ZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIo
bmFtZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyRm9yTWFpbldvcmxkKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RU
eXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFN0cmluZyB2ID0gaW1wLT5zdHJpbmdBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbihlYyk7CisgICAgaWYgKFVOTElLRUxZKGVjKSkKKyAgICAgICAg
cmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVy
biB2OFN0cmluZyh2LCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFuZGxlKTsKK30K
Kworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbkF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdFR5
cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVy
Rm9yTWFpbldvcmxkKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewogICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwpAQCAtMjExLDYgKzMyOSwxOSBAQCBzdGF0aWMgdm9pZCBzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZwog
ICAgIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
QXR0clNldHRlcihuYW1lLCB2YWx1ZSwgaW5mbyk7CiB9CiAKK3N0YXRpYyB2b2lkIHN0cmluZ0F0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckZvck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVm
czo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdS
RVNPVVJDRV9WT0lEKFY4U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFsdWUpOworICAgIGltcC0+c2V0
U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24odik7CisgICAgcmV0dXJuOworfQorCitzdGF0
aWMgdm9pZCBzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFja0Zv
ck1haW5Xb3JsZCh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgVGVzdFR5cGVk
ZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyRm9y
TWFpbldvcmxkKG5hbWUsIHZhbHVlLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAg
VGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CkBAIC0yMjIsNiArMzUzLDE3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3Ry
aW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2sodjg6CiAgICAgcmV0
dXJuIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJGb3JNYWluV29ybGQodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgVGVzdFR5cGVkZWZzKiBpbXAgPSBWOFRlc3RUeXBlZGVmczo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CisgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+c3RyaW5nQXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24oKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhhbmRsZSk7Cit9CisK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RUeXBl
ZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckZv
ck1haW5Xb3JsZChuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
ICAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKQEAgLTIzOCw2ICszODAsMjIgQEAgc3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmcKICAg
ICBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0
dHJTZXR0ZXIobmFtZSwgdmFsdWUsIGluZm8pOwogfQogCitzdGF0aWMgdm9pZCBzdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQoreworICAgIFRlc3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVT
T1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKKyAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICBpbXAtPnNldFN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKHYs
IGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAgICAgICBzZXRET01FeGNlcHRpb24oZWMs
IGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHN0cmlu
Z0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBUZXN0VHlwZWRlZnNWOEludGVybmFs
OjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJGb3JNYWluV29ybGQobmFt
ZSwgdmFsdWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFRlc3RU
eXBlZGVmc0NvbnN0cnVjdG9yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBk
YXRhID0gaW5mby5EYXRhKCk7CkBAIC00OTgsMTkgKzY1NiwxOSBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0
YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0VHlw
ZWRlZnNBdHRyc1tdID0gewogICAgIC8vIEF0dHJpYnV0ZSAndW5zaWduZWRMb25nTG9uZ0F0dHIn
IChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InVuc2lnbmVkTG9uZ0xvbmdB
dHRyIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0
dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRy
QXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InVuc2lnbmVkTG9uZ0xv
bmdBdHRyIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRy
R2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdB
dHRyQXR0clNldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExv
bmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFja0Zvck1haW5Xb3JsZCwgVGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29y
bGQsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnaW1tdXRhYmxlU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0ltbXV0YWJsZScpCi0g
ICAgeyJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiLCBUZXN0VHlwZWRlZnNWOEludGVy
bmFsOjppbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRl
c3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJT
ZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJpbW11dGFibGVTZXJpYWxpemVk
U2NyaXB0VmFsdWUiLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjppbW11dGFibGVTZXJpYWxpemVk
U2NyaXB0VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6Omlt
bXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVk
ZWZzVjhJbnRlcm5hbDo6aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0ckdldHRlckNh
bGxiYWNrRm9yTWFpbldvcmxkLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjppbW11dGFibGVTZXJp
YWxpemVkU2NyaXB0VmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnVGVzdFN1Yk9iaicgKFR5cGU6ICdyZWFkb25seSBh
dHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiVGVzdFN1Yk9iaiIsIFRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OlRlc3RUeXBlZGVmc0NvbnN0cnVjdG9yR2V0dGVyLCAwLCAmVjhUZXN0U3ViT2Jq
OjppbmZvLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgeyJUZXN0U3ViT2JqIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6VGVzdFR5
cGVkZWZzQ29uc3RydWN0b3JHZXR0ZXIsIDAsIDAsIDAsICZWOFRlc3RTdWJPYmo6OmluZm8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAg
ICAvLyBBdHRyaWJ1dGUgJ2F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0
ZScgRXh0QXR0cjogJycpCi0gICAgeyJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsIFRlc3RUeXBl
ZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0
ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJhdHRyV2l0aEdldHRlckV4Y2VwdGlv
biIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RUeXBlZGVm
c1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJhdHRy
V2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjph
dHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CisgICAgeyJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6
OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNW
OEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgVGVz
dFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2Fs
bGJhY2tGb3JNYWluV29ybGQsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
ICAgICAvLyBBdHRyaWJ1dGUgJ3N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uJyAoVHlwZTog
J2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisg
ICAgeyJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJu
YWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0
VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0
ZXJDYWxsYmFjaywgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJF
eGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JNYWluV29ybGQsIFRlc3RUeXBlZGVmc1Y4SW50
ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9y
TWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0cmluZ0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAg
eyJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6
OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0VHlw
ZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJD
YWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVkZWZzVjhJbnRl
cm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2tGb3JN
YWluV29ybGQsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uQXR0clNldHRlckNhbGxiYWNrRm9yTWFpbldvcmxkLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKIH07
CiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRNZXRob2QgVjhUZXN0
VHlwZWRlZnNNZXRob2RzW10gPSB7CkBAIC01MzMsMTQgKzY5MSwxNCBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhUZXN0VHlwZWRlZnM6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYQogICAgIHJldHVybiBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpjb25zdHJ1Y3Rv
cihhcmdzKTsKIH0KIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAog
ICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwogICAgIGRlZmF1
bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2Ms
ICJUZXN0VHlwZWRlZnMiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwg
VjhUZXN0VHlwZWRlZnM6OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgVjhUZXN0VHlwZWRl
ZnNBdHRycywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RUeXBlZGVmc0F0dHJzKSwKLSAgICAgICAg
VjhUZXN0VHlwZWRlZnNNZXRob2RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdFR5cGVkZWZzTWV0
aG9kcyksIGlzb2xhdGUpOworICAgICAgICBWOFRlc3RUeXBlZGVmc01ldGhvZHMsIFdURl9BUlJB
WV9MRU5HVEgoVjhUZXN0VHlwZWRlZnNNZXRob2RzKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlw
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2Vz
LCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4VGVzdFR5
cGVkZWZzOjpjb25zdHJ1Y3RvckNhbGxiYWNrKTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRl
bXBsYXRlPiBpbnN0YW5jZSA9IGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKTsKQEAgLTU1MSwyNSAr
NzA5LDI1IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29u
ZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZSh2ODo6CiAKICAgICAvLyBDdXN0b20gU2lnbmF0
dXJlICdtZXRob2RXaXRoU2VxdWVuY2VBcmcnCiAgICAgY29uc3QgaW50IG1ldGhvZFdpdGhTZXF1
ZW5jZUFyZ0FyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1l
dGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3ZbbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnY10gPSB7IFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOHNlcXVlbmNlPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT46OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhvZFdp
dGhTZXF1ZW5jZUFyZ0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5y
YXdUZW1wbGF0ZSgmVjhzZXF1ZW5jZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+OjppbmZvLCBjdXJy
ZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbWV0aG9kV2l0
aFNlcXVlbmNlQXJnU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1ldGhvZFdp
dGhTZXF1ZW5jZUFyZ0FyZ2MsIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3YpOwogICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJtZXRob2RXaXRoU2VxdWVuY2VBcmciKSwgdjg6
OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjptZXRob2RXaXRo
U2VxdWVuY2VBcmdNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbWV0aG9kV2l0aFNlcXVl
bmNlQXJnU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdudWxsYWJsZUFy
cmF5QXJnJwogICAgIGNvbnN0IGludCBudWxsYWJsZUFycmF5QXJnQXJnYyA9IDE7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbnVsbGFibGVBcnJheUFyZ0FyZ3ZbbnVsbGFi
bGVBcnJheUFyZ0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdU
ZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG51bGxhYmxlQXJyYXlBcmdBcmd2W251bGxhYmxlQXJy
YXlBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxh
dGUoJlY4RE9NU3RyaW5nW106OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6Okhh
bmRsZTx2ODo6U2lnbmF0dXJlPiBudWxsYWJsZUFycmF5QXJnU2lnbmF0dXJlID0gdjg6OlNpZ25h
dHVyZTo6TmV3KGRlc2MsIG51bGxhYmxlQXJyYXlBcmdBcmdjLCBudWxsYWJsZUFycmF5QXJnQXJn
dik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm51bGxhYmxlQXJyYXlB
cmciKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjpu
dWxsYWJsZUFycmF5QXJnTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIG51bGxhYmxlQXJy
YXlBcmdTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmluZ0FycmF5
RnVuY3Rpb24nCiAgICAgY29uc3QgaW50IHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjID0gMTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJn
dltzdHJpbmdBcnJheUZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZvLCB3b3JsZFR5cGUpIH07Cisg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkFy
Z3Zbc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgY3VycmVudFdvcmxkVHlw
ZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHN0cmluZ0FycmF5RnVuY3Rpb25T
aWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFy
Z2MsIHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgic3RyaW5nQXJyYXlGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0FycmF5RnVuY3Rpb25NZXRob2RDYWxs
YmFjaywgdjhVbmRlZmluZWQoKSwgc3RyaW5nQXJyYXlGdW5jdGlvblNpZ25hdHVyZSkpOwogCiAg
ICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnc3RyaW5nQXJyYXlGdW5jdGlvbjInCiAgICAgY29uc3Qg
aW50IHN0cmluZ0FycmF5RnVuY3Rpb24yQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmd2W3N0cmluZ0FycmF5RnVuY3Rp
b24yQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRl
KCZWOERPTVN0cmluZ1tdOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmd2W3N0cmluZ0FycmF5RnVu
Y3Rpb24yQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBs
YXRlKCZWOERPTVN0cmluZ1tdOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpI
YW5kbGU8djg6OlNpZ25hdHVyZT4gc3RyaW5nQXJyYXlGdW5jdGlvbjJTaWduYXR1cmUgPSB2ODo6
U2lnbmF0dXJlOjpOZXcoZGVzYywgc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmdjLCBzdHJpbmdBcnJh
eUZ1bmN0aW9uMkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJz
dHJpbmdBcnJheUZ1bmN0aW9uMiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RUeXBl
ZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0FycmF5RnVuY3Rpb24yTWV0aG9kQ2FsbGJhY2ssIHY4VW5k
ZWZpbmVkKCksIHN0cmluZ0FycmF5RnVuY3Rpb24yU2lnbmF0dXJlKSk7CiAKQEAgLTU3OCwyMyAr
NzM2LDIzIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29u
ZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZSh2ODo6CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAK
LXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RUeXBlZGVmczo6R2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBl
KQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFR5cGVkZWZzOjpH
ZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50
V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjpp
dGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8p
OwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkK
KyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJl
c3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5lbmQoKSkKICAgICAg
ICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2Nv
cGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAg
ICAgICAgQ29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgm
aW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0
ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRl
c3RUeXBlZGVmc1RlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRU
eXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAo
Y3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwog
fQogCi1ib29sIFY4VGVzdFR5cGVkZWZzOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKK2Jvb2wgVjhUZXN0VHlwZWRlZnM6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdv
cmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJl
bnRXb3JsZFR5cGUpOwogfQogCiBib29sIFY4VGVzdFR5cGVkZWZzOjpIYXNJbnN0YW5jZUluQW55
V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RUeXBlZGVmcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdFR5cGVkZWZzLmgKaW5kZXggZWIzODA0NGRiNDlhZDAxZTU4OGM5Y2VmZGE1NjFmMGY2ZWZh
N2UwNC4uMjViN2E1YTNmMTA0MzcxZjBjNmVmY2RlMTI3NDA3NjljODE1YTQ5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5
cGVkZWZzLmgKQEAgLTc2LDYgKzc2LDE3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOChUZXN0VHlwZWRlZnMqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlCiAgICAg
cmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9yTWFpbldvcmxkKFRlc3RUeXBlZGVmcyogaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsK
KyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNr
KGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0
b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRh
aW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
RmFzdChUZXN0VHlwZWRlZnMqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVy
LCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTg4LDYgKzk5LDI1IEBAIGlubGluZSB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdFR5cGVkZWZzKiBpbXBsLCBjb25zdCBIb2xk
ZXJDb250YWluZXImCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3Mg
V3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5X
b3JsZChUZXN0VHlwZWRlZnMqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVy
LCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5l
ci5HZXRJc29sYXRlKCkpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkK
KyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JN
YWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBj
b250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFp
bmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhG
YXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IFRlc3RUeXBlZGVmcyA+IGltcGwsIGNvbnN0IEhv
bGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBy
ZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFi
bGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBh
YmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBU
ZXN0VHlwZWRlZnMgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3Jh
cHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNv
bnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RPTURhdGFTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0
b3JlLmgKaW5kZXggYzA1MDMzZjBiNmNhNWMzNjk4YWE3NjQ1ODM5NmZhYTNjMTJmMGVhNi4uYjQw
MGVlM2QzMGYyYTk1YTkxNjhmN2Y5YmMxNTI3MDRlZjY3YjU0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKQEAgLTg0LDYgKzg0LDE2IEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGdldFdyYXBwZXJGb3JNYWluV29ybGQoVCogb2JqZWN0KQorICAgIHsKKyAgICAg
ICAgaWYgKG1haW5Xb3JsZFdyYXBwZXJJc1N0b3JlZEluT2JqZWN0KG9iamVjdCkgJiYgaXNNYWlu
V29ybGRPYmplY3Qob2JqZWN0KSkgeworICAgICAgICAgICAgaWYgKExJS0VMWSghRE9NV3JhcHBl
cldvcmxkOjppc29sYXRlZFdvcmxkc0V4aXN0KCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBn
ZXRXcmFwcGVyRnJvbU9iamVjdChvYmplY3QpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBt
YWluV29ybGRTdG9yZSgpLT5nZXQob2JqZWN0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXIoVCogb2JqZWN0LCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBjb25zdCBXcmFwcGVy
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICB7CiAgICAgICAgIGlmIChtYWluV29y
bGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChvYmplY3QpICYmIGlzTWFpbldvcmxkT2JqZWN0KG9i
amVjdCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3Vy
YXRpb24uY3BwCmluZGV4IDVmZTdiY2ZhY2RkZTU2NTcyYjVlMjBiMGViMzY3ZTU2MGRlY2FlOWQu
LjU2MWNhYmQ4MmI0Y2IzNDYzNGUxMjAxYzU4ZGFlNTBlZGZlNDlhNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmNwcApAQCAtMzMsMTAg
KzMzLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBWOERPTUNvbmZpZ3VyYXRp
b246OmJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0
ZT4gaW5zdGFuY2UsIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90b3R5cGUsIGNv
bnN0IEJhdGNoZWRBdHRyaWJ1dGUqIGF0dHJpYnV0ZXMsIHNpemVfdCBhdHRyaWJ1dGVDb3VudCwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCit2b2lkIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25m
aWd1cmVBdHRyaWJ1dGVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvdHlwZSwgY29uc3QgQmF0Y2hlZEF0
dHJpYnV0ZSogYXR0cmlidXRlcywgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXR0cmlidXRlQ291bnQ7ICsraSkKLSAgICAgICAgY29uZmlndXJl
QXR0cmlidXRlKGluc3RhbmNlLCBwcm90b3R5cGUsIGF0dHJpYnV0ZXNbaV0sIGlzb2xhdGUpOwor
ICAgICAgICBjb25maWd1cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvdHlwZSwgYXR0cmlidXRl
c1tpXSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIHZvaWQgVjhET01Db25maWd1
cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBmdW5jdGlvbkRlc2NyaXB0b3IsIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRl
PiBwcm90b3R5cGUsIGNvbnN0IEJhdGNoZWRDb25zdGFudCogY29uc3RhbnRzLCBzaXplX3QgY29u
c3RhbnRDb3VudCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQg
VjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUNhbGxiYWNrcyh2ODo6SGFuZGxlPHY4
OjpPYmplY3RUZW1wbGF0ZT4KIH0KIAogdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IFY4RE9NQ29u
ZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGZ1bmN0aW9uRGVzY3JpcHRvciwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHBhcmVudENsYXNzLAotICAgIHNp
emVfdCBmaWVsZENvdW50LCBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiBhdHRyaWJ1dGVzLCBzaXpl
X3QgYXR0cmlidXRlQ291bnQsIGNvbnN0IEJhdGNoZWRNZXRob2QqIGNhbGxiYWNrcywgc2l6ZV90
IGNhbGxiYWNrQ291bnQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorICAgIHNpemVfdCBmaWVsZENv
dW50LCBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiBhdHRyaWJ1dGVzLCBzaXplX3QgYXR0cmlidXRl
Q291bnQsIGNvbnN0IEJhdGNoZWRNZXRob2QqIGNhbGxiYWNrcywgc2l6ZV90IGNhbGxiYWNrQ291
bnQsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5
cGUpCiB7CiAgICAgZnVuY3Rpb25EZXNjcmlwdG9yLT5TZXRDbGFzc05hbWUodjg6OlN0cmluZzo6
TmV3U3ltYm9sKGludGVyZmFjZU5hbWUpKTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBs
YXRlPiBpbnN0YW5jZSA9IGZ1bmN0aW9uRGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgpOwpA
QCAtNzAsNyArNzAsNyBAQCB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gVjhET01Db25maWd1cmF0
aW9uOjpjb25maWd1cmVUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2OAogICAgIH0KIAogICAgIGlm
IChhdHRyaWJ1dGVDb3VudCkKLSAgICAgICAgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKGluc3Rh
bmNlLCBmdW5jdGlvbkRlc2NyaXB0b3ItPlByb3RvdHlwZVRlbXBsYXRlKCksIGF0dHJpYnV0ZXMs
IGF0dHJpYnV0ZUNvdW50LCBpc29sYXRlKTsKKyAgICAgICAgYmF0Y2hDb25maWd1cmVBdHRyaWJ1
dGVzKGluc3RhbmNlLCBmdW5jdGlvbkRlc2NyaXB0b3ItPlByb3RvdHlwZVRlbXBsYXRlKCksIGF0
dHJpYnV0ZXMsIGF0dHJpYnV0ZUNvdW50LCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAg
ICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1
cmU6Ok5ldyhmdW5jdGlvbkRlc2NyaXB0b3IpOwogICAgIGlmIChjYWxsYmFja0NvdW50KQogICAg
ICAgICBiYXRjaENvbmZpZ3VyZUNhbGxiYWNrcyhmdW5jdGlvbkRlc2NyaXB0b3ItPlByb3RvdHlw
ZVRlbXBsYXRlKCksIGRlZmF1bHRTaWduYXR1cmUsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6OkRvbnREZWxldGUpLCBjYWxsYmFja3MsIGNhbGxiYWNrQ291bnQsIGlzb2xh
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db25maWd1
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24u
aAppbmRleCA4ZjljOTFhMGFhMzBmOTg0NDA4NWI4NzBiOGVjOWE1ZGNlMmExY2ZmLi5lOTViMTU4
NmM0NjUzZjM3MjhiNTJjMDhiZjIxZTk1YzVkNzY1ZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaApAQCAtNDcsMTMgKzQ3LDE1IEBAIHB1
YmxpYzoKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgbmFtZTsKICAgICAgICAgdjg6OkFjY2Vz
c29yR2V0dGVyIGdldHRlcjsKICAgICAgICAgdjg6OkFjY2Vzc29yU2V0dGVyIHNldHRlcjsKKyAg
ICAgICAgdjg6OkFjY2Vzc29yR2V0dGVyIGdldHRlckZvck1haW5Xb3JsZDsKKyAgICAgICAgdjg6
OkFjY2Vzc29yU2V0dGVyIHNldHRlckZvck1haW5Xb3JsZDsKICAgICAgICAgV3JhcHBlclR5cGVJ
bmZvKiBkYXRhOwogICAgICAgICB2ODo6QWNjZXNzQ29udHJvbCBzZXR0aW5nczsKICAgICAgICAg
djg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZTsKICAgICAgICAgYm9vbCBvblByb3RvdHlw
ZTsKICAgICB9OwogCi0gICAgc3RhdGljIHZvaWQgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHY4
OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxh
dGU+LCBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiwgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LCB2ODo6
SXNvbGF0ZSopOworICAgIHN0YXRpYyB2b2lkIGJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyh2ODo6
SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRl
PiwgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSosIHNpemVfdCBhdHRyaWJ1dGVDb3VudCwgdjg6Oklz
b2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpOwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgT2JqZWN0T3JUZW1wbGF0ZT4KICAgICBzdGF0aWMgaW5saW5lIHZvaWQgY29uZmln
dXJlQXR0cmlidXRlKHY4OjpIYW5kbGU8T2JqZWN0T3JUZW1wbGF0ZT4gaW5zdGFuY2UsIHY4OjpI
YW5kbGU8T2JqZWN0T3JUZW1wbGF0ZT4gcHJvdG90eXBlLCBjb25zdCBCYXRjaGVkQXR0cmlidXRl
JiBhdHRyaWJ1dGUsIHY4OjpJc29sYXRlKikKQEAgLTY2LDYgKzY4LDI1IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlLmF0dHJpYnV0ZSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8Y2xh
c3MgT2JqZWN0T3JUZW1wbGF0ZT4KKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgY29uZmlndXJlQXR0
cmlidXRlKHY4OjpIYW5kbGU8T2JqZWN0T3JUZW1wbGF0ZT4gaW5zdGFuY2UsIHY4OjpIYW5kbGU8
T2JqZWN0T3JUZW1wbGF0ZT4gcHJvdG90eXBlLCBjb25zdCBCYXRjaGVkQXR0cmlidXRlJiBhdHRy
aWJ1dGUsIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQor
ICAgIHsKKyAgICAgICAgdjg6OkFjY2Vzc29yR2V0dGVyIGdldHRlciA9IGF0dHJpYnV0ZS5nZXR0
ZXI7CisgICAgICAgIHY4OjpBY2Nlc3NvclNldHRlciBzZXR0ZXIgPSBhdHRyaWJ1dGUuc2V0dGVy
OworICAgICAgICBpZiAoY3VycmVudFdvcmxkVHlwZSA9PSBNYWluV29ybGQpIHsKKyAgICAgICAg
ICAgIGlmIChhdHRyaWJ1dGUuZ2V0dGVyRm9yTWFpbldvcmxkKQorICAgICAgICAgICAgICAgIGdl
dHRlciA9IGF0dHJpYnV0ZS5nZXR0ZXJGb3JNYWluV29ybGQ7CisgICAgICAgICAgICBpZiAoYXR0
cmlidXRlLnNldHRlckZvck1haW5Xb3JsZCkKKyAgICAgICAgICAgICAgICBzZXR0ZXIgPSBhdHRy
aWJ1dGUuc2V0dGVyRm9yTWFpbldvcmxkOworICAgICAgICB9CisgICAgICAgIChhdHRyaWJ1dGUu
b25Qcm90b3R5cGUgPyBwcm90b3R5cGUgOiBpbnN0YW5jZSktPlNldEFjY2Vzc29yKHY4OjpTdHJp
bmc6Ok5ld1N5bWJvbChhdHRyaWJ1dGUubmFtZSksCisgICAgICAgICAgICBnZXR0ZXIsCisgICAg
ICAgICAgICBzZXR0ZXIsCisgICAgICAgICAgICB2ODo6RXh0ZXJuYWw6Ok5ldyhhdHRyaWJ1dGUu
ZGF0YSksCisgICAgICAgICAgICBhdHRyaWJ1dGUuc2V0dGluZ3MsCisgICAgICAgICAgICBhdHRy
aWJ1dGUuYXR0cmlidXRlKTsKKyAgICB9CisKICAgICAvLyBCYXRjaGVkQ29uc3RhbnQgdHJhbnNs
YXRlcyBpbnRvIGNhbGxzIHRvIFNldCgpIGZvciBzZXR0aW5nIHVwIGFuIG9iamVjdCdzCiAgICAg
Ly8gY29uc3RhbnRzLiBJdCBzZXRzIHRoZSBjb25zdGFudCBvbiBib3RoIHRoZSBGdW5jdGlvblRl
bXBsYXRlIGFuZCB0aGUKICAgICAvLyBPYmplY3RUZW1wbGF0ZS4gUHJvcGVydHlBdHRyaWJ1dGVz
IGlzIGFsd2F5cyBSZWFkT25seS4KQEAgLTg0LDcgKzEwNSw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyB2b2lkIGJhdGNoQ29uZmlndXJlQ2FsbGJhY2tzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRl
bXBsYXRlPiwgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiwgdjg6OlByb3BlcnR5QXR0cmlidXRl
LCBjb25zdCBCYXRjaGVkTWV0aG9kKiwgc2l6ZV90IGNhbGxiYWNrQ291bnQsIHY4OjpJc29sYXRl
Kik7CiAKLSAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGNvbmZpZ3VyZVRlbXBs
YXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiwgY29uc3QgY2hhciogaW50
ZXJmYWNlTmFtZSwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHBhcmVudENs
YXNzLCBzaXplX3QgZmllbGRDb3VudCwgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSosIHNpemVfdCBh
dHRyaWJ1dGVDb3VudCwgY29uc3QgQmF0Y2hlZE1ldGhvZCosIHNpemVfdCBjYWxsYmFja0NvdW50
LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gY29u
ZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+LCBjb25z
dCBjaGFyKiBpbnRlcmZhY2VOYW1lLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gcGFyZW50Q2xhc3MsIHNpemVfdCBmaWVsZENvdW50LCBjb25zdCBCYXRjaGVkQXR0cmlidXRl
Kiwgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LCBjb25zdCBCYXRjaGVkTWV0aG9kKiwgc2l6ZV90IGNh
bGxiYWNrQ291bnQsIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA1OTViZGY4OTlmZGZjZjYzYTMx
ZTkwMjBkMGUwOGVhMDEyY2I3NmU1Li43NTU3MjJiNGZiNjE1NmI1OGM4MDRjY2U4NTIwMzk2YjUz
MjdiOGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
T01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTYxMSw0ICs2MTEsOSBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOChET01XaW5kb3cqIHdpbmRvdywgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbgogICAgIHJldHVybiBnbG9iYWw7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4Rm9yTWFpbldvcmxkKERPTVdpbmRvdyogd2luZG93LCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgcmV0dXJu
IHRvVjgod2luZG93LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhFdmVudFRhcmdldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhFdmVudFRhcmdldEN1c3RvbS5jcHAKaW5kZXggZTc4OTZjYzExMTk1MWZiODgzOTA2
MWZjOWY1Y2U0NjdiOWQ4ODk5Ny4uM2Y3OWNhN2QwYmI4YmQwNjRiOWE4YjZhNDI3MmE3N2UzYzky
MzNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZl
bnRUYXJnZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEV2ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAtNTMsNiArNTMsMTEgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjgoRXZlbnRUYXJnZXQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db24KICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoRXZlbnRUYXJnZXQqIGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAg
ICByZXR1cm4gdG9WOChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiAjdW5k
ZWYgVFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3Rv
bS5jcHAKaW5kZXggZTExOWVlNWJmMDE3Y2JiNTQ1ZmEyNDM4ZTExNTJiY2M1Y2Y2NmIyZS4uNDY3
ZTFhNmJmYWI2M2VmMjkyYjM1OWUzMjc2MWYwMjY1YWE4YTY0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwCkBAIC0xMDEs
NiArMTAxLDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KElEQkFueSogaW1wbCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsCiAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoSURC
QW55KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCit7CisgICAgcmV0dXJuIHRvVjgoaW1wbCwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhNaWNyb0RhdGFJdGVtVmFsdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWljcm9EYXRhSXRlbVZhbHVlQ3VzdG9tLmNwcAppbmRl
eCA5NTNiYmVjMTUwN2JkMjQ2Y2JmN2M3M2Q5ZDQxYjE0Y2RkNzllMmQyLi4yNjBhZTc4OWFhZTA5
YTlhZTgyZDZlOWZmNTM5MDczMzYxNjczYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhNaWNyb0RhdGFJdGVtVmFsdWVDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1pY3JvRGF0YUl0ZW1WYWx1ZUN1c3Rv
bS5jcHAKQEAgLTQ4LDYgKzQ4LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KE1pY3Jv
RGF0YUl0ZW1WYWx1ZSogaXRlbVZhbHVlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+CiAgICAgcmV0
dXJuIHY4U3RyaW5nKGl0ZW1WYWx1ZS0+Z2V0U3RyaW5nKCksIGlzb2xhdGUpOwogfQogCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChNaWNyb0RhdGFJdGVtVmFsdWUqIGl0
ZW1WYWx1ZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQoreworICAgIHJldHVybiB0b1Y4KGl0ZW1WYWx1ZSwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1JQ1JPREFUQSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRl
eHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2Vy
Q29udGV4dEN1c3RvbS5jcHAKaW5kZXggOTA2YTE0ZDNhYjc0YWMwN2NjZDA3MzJmYzBhNzMwOTE0
ODJlYjlkYy4uNzJmNmUzZDRjMDkwMzQwZTUwZGE3YWQ4NWRlOGM4MWQxNmI3M2YwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2Vy
Q29udGV4dEN1c3RvbS5jcHAKQEAgLTE0MCw2ICsxNDAsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjgoV29ya2VyQ29udGV4dCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkMKICAgICByZXR1cm4gZ2xvYmFsOwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OEZvck1haW5Xb3JsZChXb3JrZXJDb250ZXh0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgcmV0dXJuIHRv
VjgoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193857</attachid>
            <date>2013-03-19 10:43:43 -0700</date>
            <delta_ts>2013-03-19 11:57:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111417-20130319183933.patch</filename>
            <type>text/plain</type>
            <size>219480</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRkNzJhZmYzYjFjNjM3
NGQxMDg2MWRiOGUwYmI1NDRmYjE4NTM2Yi4uNTVkZDc1M2JjYWI1MThkMzFhYWU0OTg1Njg3M2Iz
NWUzYTQ0ZGY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MyBAQAorMjAxMy0wMy0xOSAgTWFy
amEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBBZGQgbWFj
aGluZXJ5IGZvciBnZW5lcmF0aW5nIHNwZWNpYWxpemVkIGJpbmRpbmdzIGZvciB0aGUgbWFpbiB3
b3JsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEx
NDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IG5ldyBzcGVjaWFsaXplZCBiaW5kaW5ncyB3aWxsIGJlIGZhc3RlciwgYmVjYXVzZSB0aGV5IGRv
bid0IG5lZWQgdG8KKyAgICAgICAgZG8gdGhlICJtYWluIHdvcmxkLCBpc29sYXRlZCB3b3JsZCBv
ciBhIHdvcmtlciIgY2hlY2ssIGJ1dCBjYW4gcmlnaHQKKyAgICAgICAgYXdheSBhc3N1bWUgdGhh
dCB3ZSdyZSBpbiB0aGUgbWFpbiB3b3JsZC4KKworICAgICAgICBUaGlzIHBhdGNoIGdlbmVyYXRl
cyBtYWluIHdvcmxkIGJpbmRpbmdzIGZvciBnZXR0ZXJzIGFuZCBzZXR0ZXJzIG9mIE5vZGUKKyAg
ICAgICAgYW5kIEVsZW1lbnQuIChUaGUgcG9zc2liaWxpdHkgdG8gZ2VuZXJhdGUgYmluZGluZ3Mg
Zm9yIGNhbGxiYWNrcyB3aWxsIGJlCisgICAgICAgIGFkZGVkIGxhdGVyLikKKworICAgICAgICBO
byBuZXcgdGVzdHMgKHVwZGF0ZWQgZXhpc3RpbmcgYmluZGluZ3MgdGVzdHMpLgorCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0
ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJDYWxsYmFjayk6Cisg
ICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVOb3Jt
YWxBdHRyU2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVy
KToKKyAgICAgICAgKEdlbmVyYXRlTmFtZWRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChHZW5lcmF0
ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bik6CisgICAgICAgIChHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24pOgorICAgICAgICAo
R2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcpOgorICAgICAgICAoQ3JlYXRlQ3VzdG9tU2lnbmF0
dXJlKToKKyAgICAgICAgKE5hdGl2ZVRvSlNWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9JRExBdHRyaWJ1dGVzLnR4dDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhGbG9hdDY0QXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhGbG9h
dDY0QXJyYXlUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEZsb2F0NjRBcnJheTo6R2V0
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJyYXk6Okhhc0luc3RhbmNl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9i
amVjdFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6
R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpI
YXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFj
dGl2ZURPTU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxk
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXJUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRl
cjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXI6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29y
bGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1h
aW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b25maWd1cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25m
aWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEV2ZW50VGFyZ2V0OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFdmVu
dFRhcmdldDo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3Js
ZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFp
bldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJl
VjhUZXN0RXhjZXB0aW9uVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXhjZXB0
aW9uOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246Okhh
c0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhj
ZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RJbnRlcmZh
Y2VUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6OkdldFRlbXBs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6SGFzSW5zdGFuY2UpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRlbXBs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6Okdl
dFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1h
aW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0
cnVjdG9yQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZp
Z3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3ROYW1lZENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0
Tm9kZVRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6OkdldFRlbXBsYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6Okhhc0luc3RhbmNlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
T2JqOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6Okhhc0luc3Rh
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE9iajo6aW5zdGFsbFBlckNvbnRleHRQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmg6
CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNU
ZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4
RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpIYXNJbnN0YW5jZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RUeXBlZGVm
c1RlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdFR5cGVkZWZzOjpHZXRUZW1wbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RUeXBlZGVmczo6SGFzSW5zdGFuY2UpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9ET01EYXRhU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6Z2V0V3Jh
cHBlckZvck1haW5Xb3JsZCk6CisgICAgICAgIChET01EYXRhU3RvcmUpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERP
TUNvbmZpZ3VyYXRpb246OmJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJD
b3JlOjpWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKEJhdGNoZWRBdHRyaWJ1
dGUpOgorICAgICAgICAoVjhET01Db25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9W
OEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhFdmVudFRhcmdldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFp
bldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE1pY3JvRGF0YUl0ZW1WYWx1ZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9W
OEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5pZGw6CisgICAgICAgICogZG9tL05vZGUuaWRsOgorCiAyMDEzLTAzLTE4ICBUb20gU2VwZXog
IDx0c2VwZXpAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFt2OF0gU3VwcHJlc3MgYmluZGluZyBp
bnRlZ3JpdHkgY2hlY2sgb2YgSFRNTENvbnRlbnRFbGVtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBkZTIxNDU1YWUw
Njc3NWI0YmIzM2YxYzczMDgzOTQ1ZTI1NTM2YTAxLi4xNzk5Njk0MzJkMGZiMTRiZGVhYjQ2NTQy
ZTEzMGU4NzMwZjJkZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNTMxLDEyICs1MzEsMTkgQEAgRU5ECiAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKIGNsYXNzICR7bmF0aXZlVHlwZX07CiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOCgke25hdGl2ZVR5cGV9Kiwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7Cit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZvck1haW5Xb3JsZCgke25hdGl2ZVR5cGV9Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRl
ckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4RmFzdCgke25hdGl2ZVR5cGV9KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNv
bnRhaW5lciwgV3JhcHBhYmxlKikKIHsKICAgICByZXR1cm4gdG9WOChpbXBsLCBjb250YWluZXIu
SG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOwogfQorCit0ZW1wbGF0ZTxjbGFzcyBI
b2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoJHtuYXRpdmVUeXBlfSogaW1wbCwgY29uc3QgSG9s
ZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSopCit7CisgICAgcmV0dXJuIHRvVjhG
b3JNYWluV29ybGQoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0
ZSgpKTsKK30KIEVORAogICAgIH0gZWxzZSB7CiAKQEAgLTU3NCw2ICs1ODEsMTcgQEAgaW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KCR7bmF0aXZlVHlwZX0qIGltcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3IKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWlu
V29ybGQoJHtuYXRpdmVUeXBlfSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUo
aXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAg
ICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwp
OworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAkcmV0dXJuaW5n
V3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4K
IGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoJHtuYXRpdmVUeXBlfSogaW1w
bCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxl
KQogewpAQCAtNTg0LDYgKzYwMiwyNSBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjhGYXN0KCR7bmF0aXZlVHlwZX0qIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lcgogICAgICAg
ICByZXR1cm4gJHJldHVybmluZ1dyYXBwZXI7CiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFp
bmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKIH0KKwordGVtcGxhdGU8Y2xh
c3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKCR7bmF0aXZlVHlwZX0qIGltcGwsIGNvbnN0
IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAg
ICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpID09IE1haW5Xb3JsZCk7
CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWlu
ZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBE
T01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFw
cGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuICRyZXR1cm5pbmdXcmFwcGVyOworICAgIHJl
dHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUo
KSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxl
PgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNz
UmVmUHRyPCAke25hdGl2ZVR5cGV9ID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250
YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1h
aW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKIEVORAogICAg
IH0KIApAQCAtODg3LDYgKzkyNCw3IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJDYWxs
YmFjawogewogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0g
c2hpZnQ7CisgICAgbXkgJGZvck1haW5Xb3JsZFN1ZmZpeCA9IHNoaWZ0OwogCiAgICAgbXkgJGlu
dGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwogICAgIG15ICR2OEludGVyZmFjZU5hbWUg
PSAiVjgkaW50ZXJmYWNlTmFtZSI7CkBAIC04OTYsMTMgKzkzNCwxMyBAQCBzdWIgR2VuZXJhdGVO
b3JtYWxBdHRyR2V0dGVyQ2FsbGJhY2sKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29k
ZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1
cmUpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiI2lmICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKIAotICAgIHB1c2goQGltcGxDb250
ZW50SW50ZXJuYWxzLCAic3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2F0dHJOYW1lfUF0
dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbylcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAi
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2F0dHJOYW1lfUF0dHJHZXR0ZXJDYWxsYmFj
ayR7Zm9yTWFpbldvcmxkU3VmZml4fSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbylcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJu
YWxzLCAie1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsIEdlbmVyYXRlRmVh
dHVyZU9ic2VydmF0aW9uKCRhdHRyRXh0LT57IlY4TWVhc3VyZUFzIn0pKTsKICAgICBpZiAoSGFz
Q3VzdG9tR2V0dGVyKCRhdHRyRXh0KSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVy
bmFscywgIiAgICByZXR1cm4gJHt2OEludGVyZmFjZU5hbWV9Ojoke2F0dHJOYW1lfUF0dHJHZXR0
ZXJDdXN0b20obmFtZSwgaW5mbyk7XG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJu
YWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlcihuYW1lLCBpbmZvKTtcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gJHtpbnRlcmZhY2VOYW1lfVY4SW50
ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlciR7Zm9yTWFpbldvcmxkU3VmZml4fShuYW1lLCBp
bmZvKTtcbiIpOwogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIn1cblxu
Iik7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIjZW5kaWYgLy8gJHtjb25kaXRp
b25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtOTEyLDYgKzk1MCw3
IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIKIHsKICAgICBteSAkYXR0cmlidXRlID0g
c2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworICAgIG15ICRmb3JNYWluV29ybGRT
dWZmaXggPSBzaGlmdDsKIAogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFt
ZTsKICAgICBteSAkdjhJbnRlcmZhY2VOYW1lID0gIlY4JGludGVyZmFjZU5hbWUiOwpAQCAtOTMx
LDcgKzk3MCw3IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIKICAgICBteSAkY29uZGl0
aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygk
YXR0cmlidXRlLT5zaWduYXR1cmUpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAi
I2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAg
ICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgPDxFTkQpOwotc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiAke2F0dHJOYW1lfUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+ICR7YXR0ck5hbWV9QXR0ckdldHRlciR7Zm9yTWFpbldvcmxkU3VmZml4fSh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKIEVO
RAogICAgIGlmICgkc3ZnTmF0aXZlVHlwZSkgewpAQCAtMTExMSw3ICsxMTUwLDcgQEAgRU5ECiAg
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOCRhdHRyVHlwZS5oIik7CiAgICAgICAgIG15ICRz
dmdOYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigk
YXR0clR5cGUpOwogICAgICAgICAjIENvbnZlcnQgZnJvbSBhYnN0cmFjdCBTVkdQcm9wZXJ0eSB0
byByZWFsIHR5cGUsIHNvIHRoZSByaWdodCB0b0pTKCkgbWV0aG9kIGNhbiBiZSBpbnZva2VkLgot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gdG9WOEZhc3Qo
c3RhdGljX2Nhc3Q8JHN2Z05hdGl2ZVR5cGUqPigkcmVzdWx0KSwgaW5mbywgaW1wKTtcbiIpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gdG9WOEZhc3Qk
Zm9yTWFpbldvcmxkU3VmZml4KHN0YXRpY19jYXN0PCRzdmdOYXRpdmVUeXBlKj4oJHJlc3VsdCks
IGluZm8sIGltcCk7XG4iKTsKICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBl
TmVlZGluZ1RlYXJPZmYoJGF0dHJUeXBlKSBhbmQgbm90ICRpbnRlcmZhY2VOYW1lID1+IC9MaXN0
JC8pIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4JGF0dHJUeXBlLmgiKTsKICAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNWR1Byb3BlcnR5VGVhck9mZi5oIik7CkBAIC0xMTQ5LDcg
KzExODgsNyBAQCBFTkQKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAkd3JhcHBl
ZFZhbHVlID0gIldURjo6Z2V0UHRyKCR7dGVhck9mZlR5cGV9OjpjcmVhdGUoJHJlc3VsdCkpIjsK
ICAgICAgICAgfQotICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1
cm4gdG9WOEZhc3QoJHdyYXBwZWRWYWx1ZSwgaW5mbywgaW1wKTtcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gdG9WOEZhc3QkZm9yTWFpbldvcmxk
U3VmZml4KCR3cmFwcGVkVmFsdWUsIGluZm8sIGltcCk7XG4iKTsKICAgICB9IGVsc2lmICgkYXR0
cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIk1lc3NhZ2VQb3J0QXJyYXkiKSB7CiAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJNZXNzYWdlUG9ydC5oIik7CiAgICAgICAgIEFkZFRvSW1wbElu
Y2x1ZGVzKCJWOE1lc3NhZ2VQb3J0LmgiKTsKQEAgLTExNjEsNyArMTIwMCw3IEBAIEVORAogICAg
IE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHNDb3B5KCpwb3J0cyk7CiAgICAgdjg6OkxvY2FsPHY4OjpB
cnJheT4gcG9ydEFycmF5ID0gdjg6OkFycmF5OjpOZXcocG9ydHNDb3B5LnNpemUoKSk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb3J0c0NvcHkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHBv
cnRBcnJheS0+U2V0KHY4SW50ZWdlcihpLCBpbmZvLkdldElzb2xhdGUoKSksIHRvVjhGYXN0KHBv
cnRzQ29weVtpXS5nZXQoKSwgaW5mbywgaW1wKSk7CisgICAgICAgIHBvcnRBcnJheS0+U2V0KHY4
SW50ZWdlcihpLCBpbmZvLkdldElzb2xhdGUoKSksIHRvVjhGYXN0JGZvck1haW5Xb3JsZFN1ZmZp
eChwb3J0c0NvcHlbaV0uZ2V0KCksIGluZm8sIGltcCkpOwogICAgIHJldHVybiBwb3J0QXJyYXk7
CiBFTkQKICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSIgJiYgJGF0dHJFeHQtPnsiQ2FjaGVkQXR0cmlidXRlIn0pIHsKQEAg
LTExNzMsNyArMTIxMiw3IEBAIEVORAogICAgIHJldHVybiB2YWx1ZTsKIEVORAogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIHJldHVybiAiIC4g
TmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJHJlc3VsdCwgImluZm8uSG9s
ZGVyKCkiLCAiaW5mby5HZXRJc29sYXRlKCkiLCAiaW5mbyIsICJpbXAiLCAiUmV0dXJuVW5zYWZl
SGFuZGxlIikuIjtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAg
ICByZXR1cm4gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICRyZXN1
bHQsICJpbmZvLkhvbGRlcigpIiwgImluZm8uR2V0SXNvbGF0ZSgpIiwgImluZm8iLCAiaW1wIiwg
IlJldHVyblVuc2FmZUhhbmRsZSIsICRmb3JNYWluV29ybGRTdWZmaXgpLiI7XG4iKTsKICAgICB9
CiAKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIn1cblxuIik7ICAjIGVuZCBvZiBn
ZXR0ZXIKQEAgLTEyMjEsNiArMTI2MCw3IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJD
YWxsYmFjawogewogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNl
ID0gc2hpZnQ7CisgICAgbXkgJGZvck1haW5Xb3JsZFN1ZmZpeCA9IHNoaWZ0OwogCiAgICAgbXkg
JGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwogICAgIG15ICR2OEludGVyZmFjZU5h
bWUgPSAiVjgkaW50ZXJmYWNlTmFtZSI7CkBAIC0xMjMwLDEzICsxMjcwLDEzIEBAIHN1YiBHZW5l
cmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxsYmFjawogICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9
ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZSk7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIjaWYgJHtjb25kaXRp
b25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogCi0gICAgcHVzaChAaW1w
bENvbnRlbnRJbnRlcm5hbHMsICJzdGF0aWMgdm9pZCAke2F0dHJOYW1lfUF0dHJTZXR0ZXJDYWxs
YmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29u
dGVudEludGVybmFscywgInN0YXRpYyB2b2lkICR7YXR0ck5hbWV9QXR0clNldHRlckNhbGxiYWNr
JHtmb3JNYWluV29ybGRTdWZmaXh9KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbylcbiIpOwog
ICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAie1xuIik7CiAgICAgcHVzaChAaW1wbENv
bnRlbnRJbnRlcm5hbHMsIEdlbmVyYXRlRmVhdHVyZU9ic2VydmF0aW9uKCRhdHRyRXh0LT57IlY4
TWVhc3VyZUFzIn0pKTsKICAgICBpZiAoSGFzQ3VzdG9tU2V0dGVyKCRhdHRyRXh0KSkgewogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAke3Y4SW50ZXJmYWNlTmFtZX06
OiR7YXR0ck5hbWV9QXR0clNldHRlckN1c3RvbShuYW1lLCB2YWx1ZSwgaW5mbyk7XG4iKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAke2lu
dGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyKG5hbWUsIHZhbHVl
LCBpbmZvKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAk
e2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyJHtmb3JNYWlu
V29ybGRTdWZmaXh9KG5hbWUsIHZhbHVlLCBpbmZvKTtcbiIpOwogICAgIH0KICAgICBwdXNoKEBp
bXBsQ29udGVudEludGVybmFscywgIn1cblxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRl
cm5hbHMsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwpAQCAtMTI0Niw2ICsxMjg2LDcgQEAgc3ViIEdlbmVyYXRlTm9ybWFsQXR0clNl
dHRlcgogewogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0g
c2hpZnQ7CisgICAgbXkgJGZvck1haW5Xb3JsZFN1ZmZpeCA9IHNoaWZ0OwogCiAgICAgbXkgJGlu
dGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwogICAgIG15ICR2OEludGVyZmFjZU5hbWUg
PSAiVjgkaW50ZXJmYWNlTmFtZSI7CkBAIC0xMjU5LDcgKzEzMDAsNyBAQCBzdWIgR2VuZXJhdGVO
b3JtYWxBdHRyU2V0dGVyCiAKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVy
YXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwog
ICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9
XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICBwdXNoKEBpbXBsQ29udGVudEludGVy
bmFscywgInN0YXRpYyB2b2lkICR7YXR0ck5hbWV9QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgInN0YXRp
YyB2b2lkICR7YXR0ck5hbWV9QXR0clNldHRlciR7Zm9yTWFpbldvcmxkU3VmZml4fSh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFs
cywgIntcbiIpOwogCiAgICAgIyBJZiB0aGUgIlN0cmljdFR5cGVDaGVja2luZyIgZXh0ZW5kZWQg
YXR0cmlidXRlIGlzIHByZXNlbnQsIGFuZCB0aGUgYXR0cmlidXRlJ3MgdHlwZSBpcyBhbgpAQCAt
MjI3NSw3ICsyMzE2LDcgQEAgRU5ECiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwog
Ci12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9
Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAk
e3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNhY2hlZFRlbXBsYXRlOwogICAg
IGlmICghY2FjaGVkVGVtcGxhdGUuSXNFbXB0eSgpKQpAQCAtMjI4Nyw3ICsyMzI4LDcgQEAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0
cnVjdG9yOjpHZXRUZW1wbGF0ZSgKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBp
bnN0YW5jZSA9IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgpOwogICAgIGluc3RhbmNlLT5TZXRJ
bnRlcm5hbEZpZWxkQ291bnQoJHt2OEludGVyZmFjZU5hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQp
OwogICAgIHJlc3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiJHtpbnRl
cmZhY2VOYW1lfSIpKTsKLSAgICByZXN1bHQtPkluaGVyaXQoJHt2OEludGVyZmFjZU5hbWV9OjpH
ZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5cGUpKTsKKyAgICByZXN1bHQtPkluaGVyaXQoJHt2
OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZShpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSk7
CiAKICAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPjo6TmV3KGlzb2xhdGUsIHJlc3VsdCk7CiAgICAgcmV0dXJuIGNhY2hlZFRlbXBsYXRlOwpA
QCAtMjM1Niw2ICsyMzk3LDggQEAgc3ViIEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZQog
CiAgICAgbXkgJGdldHRlcjsKICAgICBteSAkc2V0dGVyOworICAgIG15ICRnZXR0ZXJGb3JNYWlu
V29ybGQ7CisgICAgbXkgJHNldHRlckZvck1haW5Xb3JsZDsKICAgICBteSAkcHJvcEF0dHIgPSAi
djg6Ok5vbmUiOwogCiAgICAgIyBDaGVjayBhdHRyaWJ1dGVzLgpAQCAtMjM4MiwxOSArMjQyNSwy
NSBAQCBzdWIgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlCiAgICAgICAgICRkYXRhID0g
IiZWOCR7Y29uc3RydWN0b3JUeXBlfTo6aW5mbyI7CiAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRl
cmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7aW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3RvckdldHRlciI7
CiAgICAgICAgICRzZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7aW50ZXJm
YWNlTmFtZX1SZXBsYWNlYWJsZUF0dHJTZXR0ZXJDYWxsYmFjayI7CisgICAgICAgICRnZXR0ZXJG
b3JNYWluV29ybGQgPSAiMCI7CisgICAgICAgICRzZXR0ZXJGb3JNYWluV29ybGQgPSAiMCI7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgIyBEZWZhdWx0IEdldHRlciBhbmQgU2V0dGVyCiAgICAgICAg
ICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdl
dHRlckNhbGxiYWNrIjsKICAgICAgICAgJHNldHRlciA9ICIke2ludGVyZmFjZU5hbWV9VjhJbnRl
cm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVyQ2FsbGJhY2siOworICAgICAgICAkZ2V0dGVyRm9y
TWFpbldvcmxkID0gIiR7Z2V0dGVyfUZvck1haW5Xb3JsZCI7CisgICAgICAgICRzZXR0ZXJGb3JN
YWluV29ybGQgPSAiJHtzZXR0ZXJ9Rm9yTWFpbldvcmxkIjsKIAogICAgICAgICBpZiAoIUhhc0N1
c3RvbVNldHRlcigkYXR0ckV4dCkgJiYgJGF0dHJFeHQtPnsiUmVwbGFjZWFibGUifSkgewogICAg
ICAgICAgICAgJHNldHRlciA9ICIke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHtpbnRlcmZh
Y2VOYW1lfVJlcGxhY2VhYmxlQXR0clNldHRlckNhbGxiYWNrIjsKKyAgICAgICAgICAgICRzZXR0
ZXJGb3JNYWluV29ybGQgPSAiMCI7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAjIFJlYWQgb25s
eSBhdHRyaWJ1dGVzCiAgICAgaWYgKElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKICAgICAgICAg
JHNldHRlciA9ICIwIjsKKyAgICAgICAgJHNldHRlckZvck1haW5Xb3JsZCA9ICIwIjsKICAgICB9
CiAKICAgICAjIEFuIGFjY2Vzc29yIGNhbiBiZSBpbnN0YWxsZWQgb24gdGhlIHByb3RvCkBAIC0y
NDAyLDExICsyNDUxLDE2IEBAIHN1YiBHZW5lcmF0ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUKICAg
ICAgICAgJG9uX3Byb3RvID0gIjEgLyogb24gcHJvdG8gKi8iOwogICAgIH0KIAorICAgIGlmICgh
JGF0dHJFeHQtPnsiVjhQZXJXb3JsZEJpbmRpbmdzIn0pIHsKKyAgICAgICRnZXR0ZXJGb3JNYWlu
V29ybGQgPSAiMCI7CisgICAgICAkc2V0dGVyRm9yTWFpbldvcmxkID0gIjAiOworICAgIH0KKwog
ICAgIG15ICRjb21tZW50SW5mbyA9ICJBdHRyaWJ1dGUgJyRhdHRyTmFtZScgKFR5cGU6ICciIC4g
JGF0dHJpYnV0ZS0+dHlwZSAuCiAgICAgICAgICAgICAgICAgICAgICAgIicgRXh0QXR0cjogJyIg
LiBqb2luKCcgJywga2V5cygleyRhdHRyRXh0fSkpIC4gIicpIjsKIAogICAgIHB1c2goQGltcGxD
b250ZW50LCAkaW5kZW50IC4gIiAgICBcL1wvICRjb21tZW50SW5mb1xuIik7Ci0gICAgcHVzaChA
aW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgIHtcIiRhdHRyTmFtZVwiLCAkZ2V0dGVyLCAkc2V0
dGVyLCAkZGF0YSwgJGFjY2Vzc0NvbnRyb2wsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4oJHByb3BBdHRyKSwgJG9uX3Byb3RvfSIgLiAkZGVsaW1pdGVyIC4gIlxuIik7CisgICAg
cHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgIHtcIiRhdHRyTmFtZVwiLCAkZ2V0dGVy
LCAkc2V0dGVyLCAkZ2V0dGVyRm9yTWFpbldvcmxkLCAkc2V0dGVyRm9yTWFpbldvcmxkLCAkZGF0
YSwgJGFjY2Vzc0NvbnRyb2wsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHBy
b3BBdHRyKSwgJG9uX3Byb3RvfSIgLiAkZGVsaW1pdGVyIC4gIlxuIik7CiB9CiAKIHN1YiBJc1N0
YW5kYXJkRnVuY3Rpb24KQEAgLTI3MTEsNyArMjc2NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgIG15ICRwYXJlbnQgPSAkXzsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIlY4JHtwYXJlbnR9LmgiKTsKICAgICAgICAgJHBhcmVudENsYXNzID0gIlY4IiAuICRwYXJl
bnQ7Ci0gICAgICAgICRwYXJlbnRDbGFzc1RlbXBsYXRlID0gJHBhcmVudENsYXNzIC4gIjo6R2V0
VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSI7CisgICAgICAgICRwYXJlbnRDbGFzc1RlbXBs
YXRlID0gJHBhcmVudENsYXNzIC4gIjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxk
VHlwZSkiOwogICAgICAgICBsYXN0OwogICAgIH0KIApAQCAtMjc5MCwxNCArMjg0NCwyMSBAQCBF
TkQKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIpOwogICAgICAgICB9CiAKLSAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyKCRhdHRy
aWJ1dGUsICRpbnRlcmZhY2UpOwotICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJDYWxs
YmFjaygkYXR0cmlidXRlLCAkaW50ZXJmYWNlKTsKLQorICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0
dHJHZXR0ZXIoJGF0dHJpYnV0ZSwgJGludGVyZmFjZSwgIiIpOworICAgICAgICBHZW5lcmF0ZU5v
cm1hbEF0dHJHZXR0ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiIik7CisgICAg
ICAgIGlmICgkYXR0ckV4dC0+eyJWOFBlcldvcmxkQmluZGluZ3MifSkgeworICAgICAgICAgICAg
R2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICJGb3JNYWlu
V29ybGQiKTsKKyAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlckNhbGxiYWNrKCRh
dHRyaWJ1dGUsICRpbnRlcmZhY2UsICJGb3JNYWluV29ybGQiKTsKKyAgICAgICAgfQogICAgICAg
ICBpZiAoIUhhc0N1c3RvbVNldHRlcigkYXR0ckV4dCkgJiYgJGF0dHJFeHQtPnsiUmVwbGFjZWFi
bGUifSkgewogICAgICAgICAgICAgJGhhc1JlcGxhY2VhYmxlID0gMTsKICAgICAgICAgfSBlbHNp
ZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFs
QXR0clNldHRlcigkYXR0cmlidXRlLCAkaW50ZXJmYWNlKTsKLSAgICAgICAgICAgIEdlbmVyYXRl
Tm9ybWFsQXR0clNldHRlckNhbGxiYWNrKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UpOworICAgICAg
ICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICIi
KTsKKyAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlckNhbGxiYWNrKCRhdHRyaWJ1
dGUsICRpbnRlcmZhY2UsICIiKTsKKyAgICAgICAgICAgIGlmICgkYXR0ckV4dC0+eyJWOFBlcldv
cmxkQmluZGluZ3MifSkgeworICAgICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIo
JGF0dHJpYnV0ZSwgJGludGVyZmFjZSwgIkZvck1haW5Xb3JsZCIpOworICAgICAgICAgICAgICBH
ZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAi
Rm9yTWFpbldvcmxkIik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMw
MDgsOSArMzA2OSw5IEBAIEVORAogICAgICMgY29uZmlndXJhdGlvbiBtZXRob2QuCiAgICAgaWYg
KCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCA8PEVORCk7Ci1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBD
b25maWd1cmVTaGFkb3dPYmplY3RUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVt
cGxhdGU+IHRlbXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0VGVtcGxhdGU+IENvbmZpZ3VyZVNoYWRvd09iamVjdFRlbXBsYXRlKHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gdGVtcGwsIHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgVjhET01Db25maWd1
cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXModGVtcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdFRlbXBsYXRlPigpLCBzaGFkb3dBdHRycywgV1RGX0FSUkFZX0xFTkdUSChzaGFkb3dBdHRy
cyksIGlzb2xhdGUpOworICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVBdHRy
aWJ1dGVzKHRlbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4oKSwgc2hhZG93QXR0
cnMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZG93QXR0cnMpLCBpc29sYXRlLCBjdXJyZW50V29ybGRU
eXBlKTsKIAogICAgIC8vIEluc3RhbGwgYSBzZWN1cml0eSBoYW5kbGVyIHdpdGggVjguCiAgICAg
dGVtcGwtPlNldEFjY2Vzc0NoZWNrQ2FsbGJhY2tzKFY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5
Q2hlY2tDdXN0b20sIFY4RE9NV2luZG93OjppbmRleGVkU2VjdXJpdHlDaGVja0N1c3RvbSwgdjg6
OkV4dGVybmFsOjpOZXcoJlY4RE9NV2luZG93OjppbmZvKSk7CkBAIC0zMDI2LDcgKzMwODcsNyBA
QCBFTkQKIAogICAgICMgR2VuZXJhdGUgdGhlIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24gbWV0aG9k
CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7Ci1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRl
KHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBs
YXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRl
c2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKQEAgLTMwMzYsNyArMzA5Nyw3IEBAIEVORAogICAg
ICAgICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgk
aW50ZXJmYWNlKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKICAgICBpZiAo
ISR7ZW5hYmxlX2Z1bmN0aW9ufSgpKQotICAgICAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01D
b25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCBcIlwiLCAkcGFyZW50Q2xhc3NU
ZW1wbGF0ZSwgJHt2OEludGVyZmFjZU5hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQsIDAsIDAsIDAs
IDAsIGlzb2xhdGUpOworICAgICAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0
aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCBcIlwiLCAkcGFyZW50Q2xhc3NUZW1wbGF0ZSwg
JHt2OEludGVyZmFjZU5hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQsIDAsIDAsIDAsIDAsIGlzb2xh
dGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIGVsc2UKIEVORAogICAgIH0KQEAgLTMwNTYsMTEg
KzMxMTcsMTEgQEAgRU5ECiAKICAgICBpZiAoJGhhc19jYWxsYmFja3MpIHsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICAgICAgJHt2OEludGVyZmFjZU5hbWV9TWV0aG9k
cywgV1RGX0FSUkFZX0xFTkdUSCgke3Y4SW50ZXJmYWNlTmFtZX1NZXRob2RzKSwgaXNvbGF0ZSk7
CisgICAgICAgICR7djhJbnRlcmZhY2VOYW1lfU1ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoJHt2
OEludGVyZmFjZU5hbWV9TWV0aG9kcyksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogRU5E
CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICAg
ICAgMCwgMCwgaXNvbGF0ZSk7CisgICAgICAgIDAsIDAsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5
cGUpOwogRU5ECiAgICAgfQogCkBAIC0zMDk2LDcgKzMxNTcsNyBAQCBFTkQKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246
OkJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPVxcXG4iKTsKICAgICAgICAgR2VuZXJhdGVTaW5n
bGVCYXRjaGVkQXR0cmlidXRlKCRpbnRlcmZhY2VOYW1lLCAkcnVudGltZV9hdHRyLCAiOyIsICIg
ICAgIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgICAgIFY4RE9N
Q29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRh
dGEsIGlzb2xhdGUpOworICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJp
YnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBl
KTsKICAgICB9CiBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNlbmRpZiAvLyAk
e2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMzE3OSwy
MyArMzI0MCwyMyBAQCBFTkQKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlw
ZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBp
ZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQ
ZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBs
YXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVy
biByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENv
bmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZv
LCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFw
KHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZSR7djhJbnRl
cmZhY2VOYW1lfVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRU
eXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAo
Y3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwog
fQogCi1ib29sICR7djhJbnRlcmZhY2VOYW1lfTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3Js
ZFR5cGUpCitib29sICR7djhJbnRlcmZhY2VOYW1lfTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBj
dXJyZW50V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJu
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1
ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgJHt2OEludGVyZmFjZU5hbWV9OjpIYXNJ
bnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKQEAgLTMzMDAsMTQgKzMzNjEsMTQgQEAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdFRlbXBsYXRlPiBWOERPTVdpbmRvdzo6R2V0U2hhZG93T2JqZWN0VGVtcGxhdGUodjg6Oklz
b2wKICAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gVjhE
T01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZUZvck1haW5Xb3JsZDsKICAgICAgICAgaWYgKFY4RE9N
V2luZG93U2hhZG93T2JqZWN0Q2FjaGVGb3JNYWluV29ybGQuSXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlRm9yTWFpbldvcmxkID0gdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpPYmplY3RUZW1wbGF0
ZTo6TmV3KCkpOwotICAgICAgICAgICAgQ29uZmlndXJlU2hhZG93T2JqZWN0VGVtcGxhdGUoVjhE
T01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZUZvck1haW5Xb3JsZCwgaXNvbGF0ZSk7CisgICAgICAg
ICAgICBDb25maWd1cmVTaGFkb3dPYmplY3RUZW1wbGF0ZShWOERPTVdpbmRvd1NoYWRvd09iamVj
dENhY2hlRm9yTWFpbldvcmxkLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gVjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZUZvck1haW5Xb3Js
ZDsKICAgICB9IGVsc2UgewogICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dFRlbXBsYXRlPiBWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlRm9yTm9uTWFpbldvcmxkOwog
ICAgICAgICBpZiAoVjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZUZvck5vbk1haW5Xb3JsZC5J
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGVGb3JO
b25NYWluV29ybGQgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+OjpOZXcoaXNv
bGF0ZSwgdjg6Ok9iamVjdFRlbXBsYXRlOjpOZXcoKSk7Ci0gICAgICAgICAgICBDb25maWd1cmVT
aGFkb3dPYmplY3RUZW1wbGF0ZShWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlRm9yTm9uTWFp
bldvcmxkLCBpc29sYXRlKTsKKyAgICAgICAgICAgIENvbmZpZ3VyZVNoYWRvd09iamVjdFRlbXBs
YXRlKFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGVGb3JOb25NYWluV29ybGQsIGlzb2xhdGUs
IGN1cnJlbnRXb3JsZFR5cGUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBWOERPTVdpbmRv
d1NoYWRvd09iamVjdENhY2hlRm9yTm9uTWFpbldvcmxkOwogICAgIH0KQEAgLTM1MTcsNyArMzU3
OCw3IEBAIEVORAogICAgICAgICAgICAgQGFyZ3MgPSAoKTsKICAgICAgICAgICAgIGZvcmVhY2gg
bXkgJHBhcmFtIChAcGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgbXkgJHBhcmFtTmFtZSA9ICRw
YXJhbS0+bmFtZTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gJHtwYXJhbU5hbWV9SGFuZGxlID0gIiAuIE5hdGl2ZVRvSlNWYWx1
ZSgkcGFyYW0sICRwYXJhbU5hbWUsICJ2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkiLCAidjhDb250
ZXh0LT5HZXRJc29sYXRlKCkiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtwYXJhbU5hbWV9SGFuZGxlID0g
IiAuIE5hdGl2ZVRvSlNWYWx1ZSgkcGFyYW0sICRwYXJhbU5hbWUsICJ2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+KCkiLCAidjhDb250ZXh0LT5HZXRJc29sYXRlKCkiLCAiIikgLiAiO1xuIik7CiAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCR7cGFyYW1OYW1lfUhhbmRs
ZS5Jc0VtcHR5KCkpIHtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICBpZiAoIWlzU2NyaXB0Q29udHJvbGxlclRlcm1pbmF0aW5nKCkpXG4iKTsKICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIENSQVNIKCk7XG4iKTsK
QEAgLTM4OTUsOSArMzk1Niw5IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZwogICAg
IG15ICRuYXRpdmVWYWx1ZTsKICAgICAjIEZJWE1FOiBVcGRhdGUgZm9yIGFsbCBTY3JpcHRXcmFw
cGFibGVzLgogICAgIGlmIChJc0RPTU5vZGVUeXBlKCRpbnRlcmZhY2VOYW1lKSkgewotICAgICAg
ICAkbmF0aXZlVmFsdWUgPSBOYXRpdmVUb0pTVmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsICRy
ZXR1cm4sICJhcmdzLkhvbGRlcigpIiwgImFyZ3MuR2V0SXNvbGF0ZSgpIiwgImFyZ3MiLCAiaW1w
IiwgIlJldHVyblVuc2FmZUhhbmRsZSIpOworICAgICAgICAkbmF0aXZlVmFsdWUgPSBOYXRpdmVU
b0pTVmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsICRyZXR1cm4sICJhcmdzLkhvbGRlcigpIiwg
ImFyZ3MuR2V0SXNvbGF0ZSgpIiwgImFyZ3MiLCAiaW1wIiwgIlJldHVyblVuc2FmZUhhbmRsZSIs
ICIiKTsKICAgICB9IGVsc2UgewotICAgICAgICAkbmF0aXZlVmFsdWUgPSBOYXRpdmVUb0pTVmFs
dWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsICRyZXR1cm4sICJhcmdzLkhvbGRlcigpIiwgImFyZ3Mu
R2V0SXNvbGF0ZSgpIiwgMCwgMCwgIlJldHVyblVuc2FmZUhhbmRsZSIpOworICAgICAgICAkbmF0
aXZlVmFsdWUgPSBOYXRpdmVUb0pTVmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsICRyZXR1cm4s
ICJhcmdzLkhvbGRlcigpIiwgImFyZ3MuR2V0SXNvbGF0ZSgpIiwgMCwgMCwgIlJldHVyblVuc2Fm
ZUhhbmRsZSIsICIiKTsKICAgICB9CiAKICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAicmV0dXJu
ICIgLiAkbmF0aXZlVmFsdWUgLiAiO1xuIjsKQEAgLTQxNDEsNyArNDIwMiw3IEBAIHN1YiBDcmVh
dGVDdXN0b21TaWduYXR1cmUKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcyhHZXRWOEhlYWRlck5hbWUoJHR5cGUpKTsKICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4JHt0eXBlfTo6aW5mbywgd29ybGRUeXBl
KSI7CisgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4JHt0eXBlfTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSki
OwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgJHJlc3VsdCAu
PSAidjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSI7CkBAIC00Mjg2LDYgKzQzNDcs
NyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgbXkgJGdldFNjcmlwdFdyYXBwYWJsZUFyZyA9
ICRnZXRTY3JpcHRXcmFwcGFibGUgPyAiLCAkZ2V0U2NyaXB0V3JhcHBhYmxlIiA6ICIiOwogICAg
IG15ICRyZXR1cm5IYW5kbGVUeXBlID0gc2hpZnQ7CiAgICAgbXkgJHJldHVybkhhbmRsZVR5cGVB
cmcgPSAkcmV0dXJuSGFuZGxlVHlwZSA/ICIsICRyZXR1cm5IYW5kbGVUeXBlIiA6ICIiOworICAg
IG15ICRmb3JNYWluV29ybGRTdWZmaXggPSBzaGlmdDsKIAogICAgIG15ICR0eXBlID0gJHNpZ25h
dHVyZS0+dHlwZTsKIApAQCAtNDM0Myw3ICs0NDA1LDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQog
CiAgICAgaWYgKElzRE9NTm9kZVR5cGUoJHR5cGUpIHx8ICR0eXBlIGVxICJFdmVudFRhcmdldCIp
IHsKICAgICAgIGlmICgkZ2V0U2NyaXB0V3JhcHBhYmxlKSB7Ci0gICAgICAgICAgcmV0dXJuICJ0
b1Y4RmFzdCgkdmFsdWUkZ2V0SG9sZGVyQ29udGFpbmVyQXJnJGdldFNjcmlwdFdyYXBwYWJsZUFy
ZykiOworICAgICAgICAgIHJldHVybiAidG9WOEZhc3Qke2Zvck1haW5Xb3JsZFN1ZmZpeH0oJHZh
bHVlJGdldEhvbGRlckNvbnRhaW5lckFyZyRnZXRTY3JpcHRXcmFwcGFibGVBcmcpIjsKICAgICAg
IH0KICAgICAgIHJldHVybiAidG9WOCgkdmFsdWUsICRnZXRDcmVhdGlvbkNvbnRleHQsICRnZXRJ
c29sYXRlKSI7CiAgICAgfQpAQCAtNDM2Myw3ICs0NDI1LDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1
ZQogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJ3dGYvR2V0UHRyLmgiKTsKIAogICAgIGlmICgkZ2V0
U2NyaXB0V3JhcHBhYmxlKSB7Ci0gICAgICAgICAgcmV0dXJuICJ0b1Y4RmFzdCgkdmFsdWUkZ2V0
SG9sZGVyQ29udGFpbmVyQXJnJGdldFNjcmlwdFdyYXBwYWJsZUFyZykiOworICAgICAgICAgIHJl
dHVybiAidG9WOEZhc3QkZm9yTWFpbldvcmxkU3VmZml4KCR2YWx1ZSRnZXRIb2xkZXJDb250YWlu
ZXJBcmckZ2V0U2NyaXB0V3JhcHBhYmxlQXJnKSI7CiAgICAgfQogICAgIHJldHVybiAidG9WOCgk
dmFsdWUsICRnZXRDcmVhdGlvbkNvbnRleHQsICRnZXRJc29sYXRlKSI7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0IGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAppbmRleCAyOGNi
ZWUzZWQ2NDI3M2VjOWJiMmNkMGYzOGY2NGVkMWFhMzI5MTk1Li42NjkyOGU3OTIxMzcxOWVhOTcw
YzYzMmNkY2VhMzY1ZmE1YzYwNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKQEAgLTEyOCw2ICsxMjgsNyBAQCBWOEVuYWJsZWRQ
ZXJDb250ZXh0PSoKIFY4R2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsRG9jdW1lbnR8SW1wbEVsZW1l
bnRSb290fEltcGxPd25lclJvb3R8SW1wbE93bmVyTm9kZVJvb3QKIFY4Tm9XcmFwcGVyQ2FjaGUK
IFY4TWVhc3VyZUFzPSoKK1Y4UGVyV29ybGRCaW5kaW5ncwogVjhSZWFkT25seQogVjhTa2lwVlRh
YmxlVmFsaWRhdGlvbgogVjhVbmZvcmdlYWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKaW5kZXggYmUw
ZmE1NDA1NWFkMjdmODc2ZGVkMTNmOTcyZDM4NzMzMzkyYWY2Yi4uYWEwMmY5MDY5NjdlMmM2YjIw
MDAzNzgxODgwNTQ0Y2YzNTVhOGQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCkBAIC0xMzUsMTQg
KzEzNSwxNCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhGbG9hdDY0QXJyYXk6OmNvbnN0cnVj
dG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQogICAgIHJldHVybiBGbG9hdDY0QXJy
YXlWOEludGVybmFsOjpjb25zdHJ1Y3RvcihhcmdzKTsKIH0KIAotc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRl
KHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUo
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+
UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZh
dWx0U2lnbmF0dXJlOwotICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246
OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJGbG9hdDY0QXJyYXkiLCBWOEFycmF5QnVmZmVyVmll
dzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSwgVjhGbG9hdDY0QXJyYXk6OmludGVy
bmFsRmllbGRDb3VudCwKKyAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9u
Ojpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiRmxvYXQ2NEFycmF5IiwgVjhBcnJheUJ1ZmZlclZp
ZXc6OkdldFRlbXBsYXRlKGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpLCBWOEZsb2F0NjRBcnJh
eTo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICAwLCAwLAotICAgICAgICBWOEZsb2F0NjRB
cnJheU1ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoVjhGbG9hdDY0QXJyYXlNZXRob2RzKSwgaXNv
bGF0ZSk7CisgICAgICAgIFY4RmxvYXQ2NEFycmF5TWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChW
OEZsb2F0NjRBcnJheU1ldGhvZHMpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICBV
TlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwg
bm90IGJlIHVzZWQuCiAgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjhGbG9hdDY0QXJyYXk6OmNv
bnN0cnVjdG9yQ2FsbGJhY2spOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGlu
c3RhbmNlID0gZGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhGbG9h
dDY0QXJyYXlUZW1wbGF0ZSh2ODo6CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdmb28nCiAg
ICAgY29uc3QgaW50IGZvb0FyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGZvb0FyZ3ZbZm9vQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPnJhd1RlbXBsYXRlKCZWOEZsb2F0MzJBcnJheTo6aW5mbywgd29ybGRUeXBlKSB9OworICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZvb0FyZ3ZbZm9vQXJnY10gPSB7IFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOEZsb2F0MzJBcnJh
eTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1
cmU+IGZvb1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBmb29BcmdjLCBmb29B
cmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZm9vIiksIHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoRmxvYXQ2NEFycmF5VjhJbnRlcm5hbDo6Zm9vTWV0aG9kQ2Fs
bGJhY2ssIHY4VW5kZWZpbmVkKCksIGZvb1NpZ25hdHVyZSkpOwogCkBAIC0xNjIsMjMgKzE2Miwy
MyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3Vy
ZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6OgogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhGbG9hdDY0QXJyYXk6OkdldFRlbXBs
YXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEZsb2F0NjRBcnJheTo6R2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxk
VHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0
b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAg
ICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAg
VjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRl
bXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQg
IT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJl
dHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwog
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAg
IENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8s
IHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhGbG9hdDY0
QXJyYXlUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSks
IGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJl
bnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAot
Ym9vbCBWOEZsb2F0NjRBcnJheTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiti
b29sIFY4RmxvYXQ2NEFycmF5OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5
cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0lu
c3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29y
bGRUeXBlKTsKIH0KIAogYm9vbCBWOEZsb2F0NjRBcnJheTo6SGFzSW5zdGFuY2VJbkFueVdvcmxk
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0
QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0
NjRBcnJheS5oCmluZGV4IGRjNTRmMDBlMGI1ZDA0ODUzODc1ZDM0YmViNmY5M2FkZWZiOThlMmIu
LjM4OTk1ZjYzODU0ODI3N2NkMmQwNGJlODg2MWFiY2RiNmUzYWM2MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJh
eS5oCkBAIC03Miw2ICs3MiwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgo
RmxvYXQ2NEFycmF5KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZQogICAgIHJldHVy
biB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChGbG9hdDY0QXJyYXkqIGltcGwsIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAg
aWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29s
YXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6
Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIs
IGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3Qo
RmxvYXQ2NEFycmF5KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3Jh
cHBhYmxlKiB3cmFwcGFibGUpCiB7CkBAIC04NCw2ICs5NSwyNSBAQCBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhGYXN0KEZsb2F0NjRBcnJheSogaW1wbCwgY29uc3QgSG9sZGVyQ29u
dGFpbmVyJgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBw
YWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQo
RmxvYXQ2NEFycmF5KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3Jh
cHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIuR2V0
SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAg
ICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldv
cmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3
cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFp
bmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwg
Y2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZv
ck1haW5Xb3JsZChQYXNzUmVmUHRyPCBGbG9hdDY0QXJyYXkgPiBpbXBsLCBjb25zdCBIb2xkZXJD
b250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJu
IHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsK
K30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4K
IGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgRmxvYXQ2
NEFycmF5ID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJs
ZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWlu
ZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDI0
MmJiN2VmYzJiZWI0ZDE0YTgxNjE5MzRlZTAyZjRjZDk5Yjg3NjguLjZhYjY2MWQ4MTMyYjYzZTJm
Y2I4ZTdiOTM3NzM3ZTFlMGI1NDFmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3Qu
Y3BwCkBAIC0xNzUsMTcgKzE3NSwxNyBAQCBzdGF0aWMgdm9pZCBUZXN0QWN0aXZlRE9NT2JqZWN0
RG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogCiBzdGF0
aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdEFjdGl2
ZURPTU9iamVjdEF0dHJzW10gPSB7CiAgICAgLy8gQXR0cmlidXRlICdleGNpdGluZ0F0dHInIChU
eXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7ImV4Y2l0aW5nQXR0
ciIsIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpleGNpdGluZ0F0dHJBdHRyR2V0dGVy
Q2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiZXhjaXRpbmdBdHRyIiwgVGVzdEFj
dGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4Y2l0aW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywg
MCwgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiB9OwogCi1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYXRl
KHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRl
bXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAg
IGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVy
ZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1
cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RBY3RpdmVET01PYmpl
Y3Q6OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgVjhUZXN0QWN0aXZlRE9NT2JqZWN0QXR0
cnMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0QWN0aXZlRE9NT2JqZWN0QXR0cnMpLAotICAgICAg
ICAwLCAwLCBpc29sYXRlKTsKKyAgICAgICAgMCwgMCwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlw
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2Vz
LCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+
IGluc3RhbmNlID0gZGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgpOwogICAgIHY4OjpMb2NhbDx2ODo6
T2JqZWN0VGVtcGxhdGU+IHByb3RvID0gZGVzYy0+UHJvdG90eXBlVGVtcGxhdGUoKTsKQEAgLTE5
NSw3ICsxOTUsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYQogCiAgICAgLy8gQ3VzdG9tIFNp
Z25hdHVyZSAnZXhjaXRpbmdGdW5jdGlvbicKICAgICBjb25zdCBpbnQgZXhjaXRpbmdGdW5jdGlv
bkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGV4Y2l0aW5n
RnVuY3Rpb25Bcmd2W2V4Y2l0aW5nRnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbywgd29ybGRUeXBlKSB9Owor
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGV4Y2l0aW5nRnVuY3Rpb25Bcmd2
W2V4Y2l0aW5nRnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2
ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGV4Y2l0aW5nRnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6
U2lnbmF0dXJlOjpOZXcoZGVzYywgZXhjaXRpbmdGdW5jdGlvbkFyZ2MsIGV4Y2l0aW5nRnVuY3Rp
b25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZXhjaXRpbmdG
dW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RBY3RpdmVET01PYmplY3RW
OEludGVybmFsOjpleGNpdGluZ0Z1bmN0aW9uTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCks
IGV4Y2l0aW5nRnVuY3Rpb25TaWduYXR1cmUpKTsKIApAQCAtMjA3LDIzICsyMDcsMjMgQEAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RB
Y3RpdmVET01PYmplY3RUZW1wbGEKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6
R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVu
dFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6
aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZv
KTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkp
CisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRh
dGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChy
ZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAg
ICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0g
ICAgICAgIENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYXRlKGRhdGEtPnJhd1Rl
bXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEt
PnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZp
Z3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZv
LCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0
YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAg
cmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6SGFzSW5zdGFu
Y2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3Jh
cHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6SGFz
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdv
cmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhh
c0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhU
ZXN0QWN0aXZlRE9NT2JqZWN0OjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01P
YmplY3QuaAppbmRleCA2YmFkOTkwMjFiMmM5YWFkMjg2YWViOThkYzczNTA1NjVmODZlMTYyLi40
OTFhM2FhOTkxMzhhMWY1ZjNiYjdhNjc3YjkyZmFhN2VhZmJjY2MzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFj
dGl2ZURPTU9iamVjdC5oCkBAIC03NSw2ICs3NSwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZQogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAK
K2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0QWN0aXZl
RE9NT2JqZWN0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9
PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2
OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBw
ZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYg
KCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJu
IHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xh
c3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RBY3RpdmVET01PYmplY3QqIGltcGwsIGNvbnN0IEhvbGRl
ckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTg3LDYg
Kzk4LDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdEFjdGl2
ZURPTU9iamVjdCogaW1wbCwgY29uc3QgSG9sZGVyQ29uCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhv
bGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXBsLCBjb25z
dCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7Cisg
ICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQp
OworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFp
bmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
RE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3Jh
cHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFw
KGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBU
ZXN0QWN0aXZlRE9NT2JqZWN0ID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWlu
ZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5X
b3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8
Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RBY3RpdmVET01PYmplY3QgPiBp
bXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFi
bGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBh
YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IGJhZDg1MmRm
OGRmNjE5ZjU1NjY1MzQ0ZDQ2MTk4OGNjNjhiNjgwM2IuLjQ0N2RmYWZhODg1NWRiNDY3NTg5ZWQx
MDhiMGIwNDRlNmMxZDEzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNw
cApAQCAtOTEsMTQgKzkxLDE0IEBAIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJh
dGNoZWRNZXRob2QgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJNZXRob2RzW10KICAgICB7ImFub3Ro
ZXJGdW5jdGlvbiIsIFRlc3RDdXN0b21OYW1lZEdldHRlclY4SW50ZXJuYWw6OmFub3RoZXJGdW5j
dGlvbk1ldGhvZENhbGxiYWNrfSwKIH07CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wbGF0ZSh2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRl
bXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAg
IGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVy
ZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1
cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyIiwg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdEN1c3RvbU5hbWVk
R2V0dGVyOjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIDAsIDAsCi0gICAgICAgIFY4VGVz
dEN1c3RvbU5hbWVkR2V0dGVyTWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RDdXN0b21O
YW1lZEdldHRlck1ldGhvZHMpLCBpc29sYXRlKTsKKyAgICAgICAgVjhUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXJNZXRob2RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyTWV0
aG9kcyksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZh
dWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAg
ICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IGRlc2MtPkluc3RhbmNl
VGVtcGxhdGUoKTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90byA9IGRl
c2MtPlByb3RvdHlwZVRlbXBsYXRlKCk7CkBAIC0xMTIsMjMgKzExMiwyMyBAQCBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5h
bWVkR2V0dGVyVGVtcAogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OkdldFRlbXBsYXRlKHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6R2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdv
cmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsK
LSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisg
ICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEt
PnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1
bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAg
IHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAg
ICAgIENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyVGVtcGxhdGUoZGF0YS0+cmF3VGVt
cGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+
dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmln
dXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5m
bywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRh
dGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAg
IHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6SGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVy
OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJu
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1
ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogYm9v
bCBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RD
dXN0b21OYW1lZEdldHRlci5oCmluZGV4IGY3MTdhMGZiNmYzYWIxNWY5NDgyOTI2OTJlYjNlZDAz
YzVhZWMwYTkuLmIwZWIyOTEzYmFlYWY4ZDY2NDYzOGY2ZDFmYTcxM2U3Y2EwY2FhMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0
b21OYW1lZEdldHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCkBAIC03Niw2ICs3NiwxNyBAQCBpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXBsLCB2
ODo6SGFuZGxlPHY4OjpPYgogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5X
b3JsZChUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29y
bGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkK
KyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3Js
ZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3Jh
cHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwor
fQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlu
bGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdEN1c3RvbU5hbWVkR2V0dGVy
KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFw
cGFibGUpCiB7CkBAIC04OCw2ICs5OSwyNSBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjhGYXN0KFRlc3RDdXN0b21OYW1lZEdldHRlciogaW1wbCwgY29uc3QgSG9sZGVyQwogfQog
CiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVzdEN1c3RvbU5h
bWVkR2V0dGVyKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBh
YmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIuR2V0SXNv
bGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAg
IHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxk
KGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFw
cGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVy
LkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xh
c3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1h
aW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIgPiBpbXBsLCBjb25zdCBI
b2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAg
cmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBh
YmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBw
YWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwg
VGVzdEN1c3RvbU5hbWVkR2V0dGVyID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250
YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBs
LmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggYjRhZTQ0YzU5ZTQ0NzE2MzQ1YjEzYTlhOTJlY2RlMjAwMzM4OWQyNy4u
Y2NjM2U1M2M4MDcwNDdkNjQ5N2RhYmQ5YjNjMDE1ZTM5MDM3N2ZlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtMTE1LDkgKzExNSw5IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAog
c3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RF
dmVudENvbnN0cnVjdG9yQXR0cnNbXSA9IHsKICAgICAvLyBBdHRyaWJ1dGUgJ2F0dHIxJyAoVHlw
ZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJhdHRyMSIsIFRlc3RF
dmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAorICAgIHsiYXR0cjEiLCBUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJu
YWw6OmF0dHIxQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAg
ICAvLyBBdHRyaWJ1dGUgJ2F0dHIyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0
cjogJ0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVjdG9yJykKLSAgICB7ImF0dHIyIiwgVGVzdEV2
ZW50Q29uc3RydWN0b3JWOEludGVybmFsOjphdHRyMkF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCisgICAgeyJhdHRyMiIsIFRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5h
bDo6YXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsK
IAogYm9vbCBmaWxsVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0KFRlc3RFdmVudENvbnN0cnVjdG9y
SW5pdCYgZXZlbnRJbml0LCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKQpAQCAtMTM3LDE0ICsx
MzcsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNv
bnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3UKICAgICByZXR1cm4gVGVzdEV2ZW50Q29u
c3RydWN0b3JWOEludGVybmFsOjpjb25zdHJ1Y3RvcihhcmdzKTsKIH0KIAotc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVudENvbnN0
cnVjdG9yVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2Ms
IHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZl
bnRDb25zdHJ1Y3RvclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29y
bGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9j
YWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBkZWZhdWx0U2lnbmF0dXJl
ID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEV2ZW50
Q29uc3RydWN0b3IiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICBWOFRlc3RF
dmVudENvbnN0cnVjdG9yQXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0RXZlbnRDb25zdHJ1
Y3RvckF0dHJzKSwKLSAgICAgICAgMCwgMCwgaXNvbGF0ZSk7CisgICAgICAgIDAsIDAsIGlzb2xh
dGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJl
KTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICBkZXNjLT5TZXRD
YWxsSGFuZGxlcihWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RvckNhbGxiYWNrKTsK
ICAgICAKQEAgLTE1NCwyMyArMTU0LDIzIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRlbXBsCiAgICAg
cmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBW
OFRlc3RFdmVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBl
cklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAg
ICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+
dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRh
dGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6
VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRX
b3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVN
YXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVl
OwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEV2
ZW50Q29uc3RydWN0b3JUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBl
KSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUp
LmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RFdmVudENvbnN0cnVj
dG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpLCBp
c29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50
V29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJv
b2wgVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5
cGUpCitib29sIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUg
Y3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVy
biBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFs
dWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiBib29sIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6
Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggZmM0
YTAxMzM0YTllMmY2ODI2MDc5OGNmYTM1MGJmYWNjN2FkZjE3Mi4uNDU5MjJmZThkNzBkMzk0Njc0
ODA3NTU4MjcxOThiMmU4ZWUwODQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5o
CkBAIC03Nyw2ICs3NywxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVz
dEV2ZW50Q29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iagogICAgIHJldHVybiB3
cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsK
KyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNr
KGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0
b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRh
aW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
RmFzdChUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBj
b250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtODksNiArMTAwLDI1IEBAIGlu
bGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdEV2ZW50Q29uc3RydWN0b3Iq
IGltcGwsIGNvbnN0IEhvbGRlckNvCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5l
ciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFz
dEZvck1haW5Xb3JsZChUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wbCwgY29uc3QgSG9sZGVyQ29u
dGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3
b3JsZFR5cGUoY29udGFpbmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAo
VU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29s
YXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9y
ZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250
YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxj
bGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdEV2ZW50Q29u
c3RydWN0b3IgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBh
YmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwu
Z2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xk
ZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdEV2ZW50Q29uc3RydWN0b3IgPiBpbXBsLCBjb25z
dCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAg
ICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IGU1MjU4MWEzMGY2ZWZhOTNhMWE3MWMwYjIyZTky
NGRjZThiZWExZjguLjBjOGVhMWFlOGZlYzU1ZjQyZDU5YWY5OTMwMTQyNGVjOGRmN2ZiMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMTU5LDE0ICsxNTksMTQgQEAgc3RhdGljIGNv
bnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZE1ldGhvZCBWOFRlc3RFdmVudFRhcmdldE1l
dGhvZHNbXSA9IHsKICAgICB7InJlbW92ZUV2ZW50TGlzdGVuZXIiLCBUZXN0RXZlbnRUYXJnZXRW
OEludGVybmFsOjpyZW1vdmVFdmVudExpc3RlbmVyTWV0aG9kQ2FsbGJhY2t9LAogfTsKIAotc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RF
dmVudFRhcmdldFRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBk
ZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVz
dEV2ZW50VGFyZ2V0VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3Js
ZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2Nh
bDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwogICAgIGRlZmF1bHRTaWduYXR1cmUg
PSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0RXZlbnRU
YXJnZXQiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0RXZl
bnRUYXJnZXQ6OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgMCwgMCwKLSAgICAgICAgVjhU
ZXN0RXZlbnRUYXJnZXRNZXRob2RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdEV2ZW50VGFyZ2V0
TWV0aG9kcyksIGlzb2xhdGUpOworICAgICAgICBWOFRlc3RFdmVudFRhcmdldE1ldGhvZHMsIFdU
Rl9BUlJBWV9MRU5HVEgoVjhUZXN0RXZlbnRUYXJnZXRNZXRob2RzKSwgaXNvbGF0ZSwgY3VycmVu
dFdvcmxkVHlwZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBz
b21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0
VGVtcGxhdGU+IGluc3RhbmNlID0gZGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgpOwogICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvID0gZGVzYy0+UHJvdG90eXBlVGVtcGxhdGUo
KTsKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUodgogCiAgICAgLy8g
Q3VzdG9tIFNpZ25hdHVyZSAnZGlzcGF0Y2hFdmVudCcKICAgICBjb25zdCBpbnQgZGlzcGF0Y2hF
dmVudEFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRpc3Bh
dGNoRXZlbnRBcmd2W2Rpc3BhdGNoRXZlbnRBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RXZlbnQ6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkaXNwYXRjaEV2ZW50QXJndltkaXNw
YXRjaEV2ZW50QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1Rl
bXBsYXRlKCZWOEV2ZW50OjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5k
bGU8djg6OlNpZ25hdHVyZT4gZGlzcGF0Y2hFdmVudFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6
Ok5ldyhkZXNjLCBkaXNwYXRjaEV2ZW50QXJnYywgZGlzcGF0Y2hFdmVudEFyZ3YpOwogICAgIHBy
b3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJkaXNwYXRjaEV2ZW50IiksIHY4OjpGdW5j
dGlvblRlbXBsYXRlOjpOZXcoVGVzdEV2ZW50VGFyZ2V0VjhJbnRlcm5hbDo6ZGlzcGF0Y2hFdmVu
dE1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBkaXNwYXRjaEV2ZW50U2lnbmF0dXJlKSk7
CiAKQEAgLTE4OCwyMyArMTg4LDIzIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZSh2CiAgICAgcmV0
dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRl
c3RFdmVudFRhcmdldDo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJX
b3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdEV2ZW50VGFyZ2V0OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3Jh
cHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEq
IGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0
ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6
aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmlu
ZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29y
bGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6
SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1w
bGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRU
eXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwp
OworICAgICAgICBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKGRhdGEtPnJhd1Rl
bXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlw
ZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0
ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdEV2ZW50VGFyZ2V0OjpI
YXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0RXZlbnRUYXJnZXQ6
Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVl
LCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiBib29s
IFY4VGVzdEV2ZW50VGFyZ2V0OjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgK
aW5kZXggZmUwMDg1MTM0Zjc5MzA3YWQ2NDlmNTljYThkNDRmNzdjNDEyYjNhNS4uODc1NTYyNDc3
MDBiMGY2Y2RiMjljMzhhMGRlZjhkNjI1MDI4ZTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgK
QEAgLTc5LDYgKzc5LDE3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0
RXZlbnRUYXJnZXQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4KICAgICByZXR1cm4gd3Jh
cChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoVGVzdEV2ZW50VGFyZ2V0KiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
Cit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOworICAgIGlm
IChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0
ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6Omdl
dFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBj
bGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRl
c3RFdmVudFRhcmdldCogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdy
YXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtOTEsNiArMTAyLDI1IEBAIGlubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdEV2ZW50VGFyZ2V0KiBpbXBsLCBjb25zdCBIb2xk
ZXJDb250YWluCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3Jh
cHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3Js
ZChUZXN0RXZlbnRUYXJnZXQqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVy
LCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5l
ci5HZXRJc29sYXRlKCkpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkK
KyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JN
YWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBj
b250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFp
bmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhG
YXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IFRlc3RFdmVudFRhcmdldCA+IGltcGwsIGNvbnN0
IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAg
ICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFw
cGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3Jh
cHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRy
PCBUZXN0RXZlbnRUYXJnZXQgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5l
ciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0
KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggZTZj
NTFiMjkzMmQ4Y2RmMWJkMzdhN2Q2MmI3YTJmZTk5MjZiZTQ3ZS4uNmNlN2I1OTVlOGE5YjEwNzU0
Y2IxYjVjOGE3NzYxNmU4OGNhODdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTg0LDE3
ICs4NCwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVBdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAKIHN0YXRpYyBjb25zdCBWOERPTUNv
bmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0RXhjZXB0aW9uQXR0cnNbXSA9IHsK
ICAgICAvLyBBdHRyaWJ1dGUgJ25hbWUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRB
dHRyOiAnJykKLSAgICB7Im5hbWUiLCBUZXN0RXhjZXB0aW9uVjhJbnRlcm5hbDo6bmFtZUF0dHJH
ZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJuYW1lIiwgVGVzdEV4Y2Vw
dGlvblY4SW50ZXJuYWw6Om5hbWVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAogfTsKIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5
cGUgd29ybGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5
cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwog
CiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAgZGVm
YXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVz
YywgIlRlc3RFeGNlcHRpb24iLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4o
KSwgVjhUZXN0RXhjZXB0aW9uOjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIFY4VGVzdEV4
Y2VwdGlvbkF0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdEV4Y2VwdGlvbkF0dHJzKSwKLSAg
ICAgICAgMCwgMCwgaXNvbGF0ZSk7CisgICAgICAgIDAsIDAsIGlzb2xhdGUsIGN1cnJlbnRXb3Js
ZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBj
YXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICAKIApAQCAtMTAzLDIzICsxMDMsMjMgQEAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRl
c3RFeGNlcHRpb25UZW1wbGF0ZSh2ODoKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUo
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlw
ZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBp
ZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQ
ZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBs
YXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVy
biByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENv
bmZpZ3VyZVY4VGVzdEV4Y2VwdGlvblRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3
b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdv
cmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdEV4Y2Vw
dGlvblRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwg
aXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVu
dFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1i
b29sIFY4VGVzdEV4Y2VwdGlvbjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiti
b29sIFY4VGVzdEV4Y2VwdGlvbjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRU
eXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJ
bnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdv
cmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhUZXN0RXhjZXB0aW9uOjpIYXNJbnN0YW5jZUluQW55V29y
bGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
eGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFeGNlcHRpb24uaAppbmRleCBiYWUyMmVjYTI4ODUxNzU2MDQxNzg1M2E4YjlkNDdjOTkxMzE4
MjI5Li4wNzJhYmNmMmUyNjcxZGVjNDJmYTIzZGUwMGFlYWIyYzk1M2E2MTg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4
Y2VwdGlvbi5oCkBAIC03NSw2ICs3NSwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjgoVGVzdEV4Y2VwdGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcgogICAg
IHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0RXhjZXB0aW9uKiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQp
OworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hl
Y2soaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRh
U3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29u
dGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjhGYXN0KFRlc3RFeGNlcHRpb24qIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFp
bmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTg3LDYgKzk4LDI1IEBAIGlubGluZSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdEV4Y2VwdGlvbiogaW1wbCwgY29uc3Qg
SG9sZGVyQ29udGFpbmVyCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xh
c3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1h
aW5Xb3JsZChUZXN0RXhjZXB0aW9uKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRh
aW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250
YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1w
bCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVy
Rm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIo
KSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNv
bnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0RXhjZXB0aW9uID4gaW1wbCwgY29u
c3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQorewor
ICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdy
YXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBX
cmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQ
dHI8IFRlc3RFeGNlcHRpb24gPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5l
ciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0
KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKaW5kZXggOWNj
MGNkODJkNWVjNGRkMzU4NGY3MzJlYjZmNDIxYzlhNzBlMjRlZi4uN2RhZTU4YTcxNjlmMWM0MTBi
M2JmODM2YjM4MmFhNzFmZDkyNjVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKQEAgLTM1Nywy
NyArMzU3LDI3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IoY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246
OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0SW50ZXJmYWNlQXR0cnNbXSA9IHsKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICAvLyBBdHRyaWJ1dGUgJ3N1
cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0cicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUn
IEV4dEF0dHI6ICdDb25kaXRpb25hbCBJbXBsZW1lbnRlZEJ5JykKLSAgICB7InN1cHBsZW1lbnRh
bFN0YXRpY1JlYWRPbmx5QXR0ciIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50
YWxTdGF0aWNSZWFkT25seUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAorICAgIHsic3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyIiwgVGVzdEludGVyZmFjZVY4
SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0ckF0dHJHZXR0ZXJDYWxsYmFj
aywgMCwgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMTIpCiAgICAgLy8gQXR0cmlidXRlICdzdXBwbGVtZW50YWxTdGF0aWNBdHRy
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFsIEltcGxlbWVudGVkQnkn
KQotICAgIHsic3VwcGxlbWVudGFsU3RhdGljQXR0ciIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFs
OjpzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0SW50ZXJmYWNl
VjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCisgICAgeyJzdXBwbGVtZW50YWxTdGF0aWNBdHRyIiwgVGVzdEludGVyZmFj
ZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRl
c3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0clNldHRlckNh
bGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVO
QUJMRShDb25kaXRpb24xMikKICAgICAvLyBBdHRyaWJ1dGUgJ3N1cHBsZW1lbnRhbFN0cjEnIChU
eXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwgSW1wbGVtZW50
ZWRCeScpCi0gICAgeyJzdXBwbGVtZW50YWxTdHIxIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6
OnN1cHBsZW1lbnRhbFN0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAor
ICAgIHsic3VwcGxlbWVudGFsU3RyMSIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVt
ZW50YWxTdHIxQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNl
bmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICAvLyBBdHRyaWJ1
dGUgJ3N1cHBsZW1lbnRhbFN0cjInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0
aW9uYWwgSW1wbGVtZW50ZWRCeScpCi0gICAgeyJzdXBwbGVtZW50YWxTdHIyIiwgVGVzdEludGVy
ZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RJ
bnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIyQXR0clNldHRlckNhbGxiYWNrLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyAgICB7InN1cHBsZW1lbnRhbFN0cjIiLCBUZXN0SW50ZXJmYWNlVjhJ
bnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyMkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdEludGVyZmFj
ZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKQogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEy
KQogICAgIC8vIEF0dHJpYnV0ZSAnc3VwcGxlbWVudGFsU3RyMycgKFR5cGU6ICdhdHRyaWJ1dGUn
IEV4dEF0dHI6ICdDdXN0b21TZXR0ZXIgQ3VzdG9tR2V0dGVyIENvbmRpdGlvbmFsIEltcGxlbWVu
dGVkQnknKQotICAgIHsic3VwcGxlbWVudGFsU3RyMyIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFs
OjpzdXBwbGVtZW50YWxTdHIzQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0SW50ZXJmYWNlVjhJbnRl
cm5hbDo6c3VwcGxlbWVudGFsU3RyM0F0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CisgICAgeyJzdXBwbGVtZW50YWxTdHIzIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBs
ZW1lbnRhbFN0cjNBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpz
dXBwbGVtZW50YWxTdHIzQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
ICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICAvLyBBdHRy
aWJ1dGUgJ3N1cHBsZW1lbnRhbE5vZGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29u
ZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCi0gICAgeyJzdXBwbGVtZW50YWxOb2RlIiwgVGVzdElu
dGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRl
c3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0clNldHRlckNhbGxiYWNr
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKKyAgICB7InN1cHBsZW1lbnRhbE5vZGUiLCBUZXN0SW50ZXJmYWNl
VjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTm9kZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdEludGVy
ZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAs
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjEyKQogfTsKIApAQCAtNDE4LDE0ICs0MTgsMTQgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4VGVzdEludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJgogICAgIHJldHVybiBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6Y29uc3RydWN0b3Io
YXJncyk7CiB9CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
Q29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
Q29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAog
ICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwogICAgIGRlZmF1
bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2Ms
ICJUZXN0SW50ZXJmYWNlIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCks
IFY4VGVzdEludGVyZmFjZTo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICBWOFRlc3RJbnRl
cmZhY2VBdHRycywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RJbnRlcmZhY2VBdHRycyksCi0gICAg
ICAgIFY4VGVzdEludGVyZmFjZU1ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0SW50ZXJm
YWNlTWV0aG9kcyksIGlzb2xhdGUpOworICAgICAgICBWOFRlc3RJbnRlcmZhY2VNZXRob2RzLCBX
VEZfQVJSQVlfTEVOR1RIKFY4VGVzdEludGVyZmFjZU1ldGhvZHMpLCBpc29sYXRlLCBjdXJyZW50
V29ybGRUeXBlKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNv
bWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAjaWYgRU5BQkxFKFRFU1RfSU5URVJGQUNF
KQogICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4VGVzdEludGVyZmFjZTo6Y29uc3RydWN0b3JD
YWxsYmFjayk7CkBAIC00MzgsNyArNDM4LDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKIAog
ICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N1cHBsZW1lbnRhbE1ldGhvZDInCiAgICAgY29uc3Qg
aW50IHN1cHBsZW1lbnRhbE1ldGhvZDJBcmdjID0gMjsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBzdXBwbGVtZW50YWxNZXRob2QyQXJndltzdXBwbGVtZW50YWxNZXRob2Qy
QXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxk
VHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdXBwbGVtZW50
YWxNZXRob2QyQXJndltzdXBwbGVtZW50YWxNZXRob2QyQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJh
d1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6
OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBzdXBwbGVtZW50YWxNZXRob2QyU2lnbmF0dXJlID0gdjg6
OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHN1cHBsZW1lbnRhbE1ldGhvZDJBcmdjLCBzdXBwbGVtZW50
YWxNZXRob2QyQXJndik7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTIpCiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN1cHBsZW1lbnRh
bE1ldGhvZDIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0SW50ZXJmYWNlVjhJbnRl
cm5hbDo6c3VwcGxlbWVudGFsTWV0aG9kMk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBz
dXBwbGVtZW50YWxNZXRob2QyU2lnbmF0dXJlKSk7CkBAIC00NTMsMjMgKzQ1MywyMyBAQCBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdElu
dGVyZmFjZVRlbXBsYXRlKHY4OgogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0SW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0SW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSh2
ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQog
ewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1
bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChy
ZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVN
YXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRh
LT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmln
dXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxk
VHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRU
eXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNl
VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpLCBpc29s
YXRlLCBjdXJyZW50V29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29y
bGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wg
VjhUZXN0SW50ZXJmYWNlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wg
VjhUZXN0SW50ZXJmYWNlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUp
CiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3Rh
bmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRU
eXBlKTsKIH0KIAogYm9vbCBWOFRlc3RJbnRlcmZhY2U6Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVy
ZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdElu
dGVyZmFjZS5oCmluZGV4IGFlYTE5Yzk4NDViMWFhYmEwY2UwMmFhN2U2Yjc5NTg3OTU3YjFhNzcu
LjhkNTEwOGE3ODJjMDE5ZWVkMjNmYWI2YzVhMTAyYTVlNDhhODY2ZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJm
YWNlLmgKQEAgLTc5LDYgKzc5LDE3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OChUZXN0SW50ZXJmYWNlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyCiAgICAgcmV0
dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9yTWFpbldvcmxkKFRlc3RJbnRlcmZhY2UqIGltcGws
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7Cisg
ICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhp
c29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9y
ZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWlu
ZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZh
c3QoVGVzdEludGVyZmFjZSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIs
IFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtOTEsNiArMTAyLDI1IEBAIGlubGluZSB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdEludGVyZmFjZSogaW1wbCwgY29uc3QgSG9s
ZGVyQ29udGFpbmVyCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3Mg
V3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5X
b3JsZChUZXN0SW50ZXJmYWNlKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5l
ciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWlu
ZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkp
CisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9y
TWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwg
Y29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRh
aW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0SW50ZXJmYWNlID4gaW1wbCwgY29uc3Qg
SG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAg
IHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBw
YWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFw
cGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8
IFRlc3RJbnRlcmZhY2UgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwg
V3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCks
IGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcAppbmRleCA4NWZjYzVjYzExNTRkN2Y1ZWJiNzVkMGVmNmNhZGUzMWQyYWFl
NWJkLi5iMWZmMjNjYzQ4ZTBiNGEzOTkyMjhjYjAxMGY0ZDZhYzllYTg5ODViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC05MiwxNCArOTIsMTQg
QEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZE1ldGhvZCBWOFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyTWV0aG8KICAgICB7Im1ldGhvZCIsIFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyVjhJbnRlcm5hbDo6bWV0aG9kTWV0aG9kQ2FsbGJhY2t9LAogfTsKIAotc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdv
cmxkVHlwZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29u
ZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBl
cldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90
eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsK
ICAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1w
bGF0ZShkZXNjLCAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW50
ZXJuYWxGaWVsZENvdW50LAogICAgICAgICAwLCAwLAotICAgICAgICBWOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyTWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyTWV0aG9kcyksIGlzb2xhdGUpOworICAgICAgICBWOFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyTWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyTWV0aG9kcyksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIFVOVVNFRF9Q
QVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUg
dXNlZC4KICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IGRlc2Mt
Pkluc3RhbmNlVGVtcGxhdGUoKTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBw
cm90byA9IGRlc2MtPlByb3RvdHlwZVRlbXBsYXRlKCk7CkBAIC0xMTIsMjMgKzExMiwyMyBAQCBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZQogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6
R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRU
eXBlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXI6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0
YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0
YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVy
YXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZp
bmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5
cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5k
bGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUs
IHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8s
IHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRl
bXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0
ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxk
VHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRU
eXBlKQorYm9vbCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAg
ICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmlu
Zm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogYm9vbCBWOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5oCmluZGV4IDEwNzE3ZmZiOTg3MGZlZGYxZWQyODA5OWI3ZTVmODhiYzg1
ZjE5YmUuLmRhNGU4ZjgxYjBmYWNjOGRkYTg3MjE5MDY0NTg5YjBmMmVlMGY5N2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaApAQCAtNzUsNiArNzUsMTcgQEAg
aW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyKiBpbXBsLCB2ODo6SGFuZGxlPHYKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhG
b3JNYWluV29ybGQoVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAg
ICBBU1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElL
RUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBl
ckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdy
YXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVy
LCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTg3LDYgKzk4LDI1IEBAIGlubGluZSB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGlt
cGwsIGNvbnN0IEhvCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3Mg
V3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5X
b3JsZChUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFp
bmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3Js
ZFR5cGUoY29udGFpbmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5M
SUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRl
KCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6
Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWlu
ZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3Jh
cHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGlt
cGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBI
b2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgPiBp
bXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFi
bGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBh
YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA4ZDA1NGRjY2Yy
MGI2ZGM5MjUyMzViOTFjNmY2ZTVlNTUzNWNiNDU1Li40MTk1ZjMwMDY4YzEzNzBiNWY5ZGQyNzlj
YmE1MzY4ODEwNjk2Zjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBA
IC0xMDksNyArMTA5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3ROYW1l
ZENvbnN0cnVjdG9yQ29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODoKICAgICByZXR1cm4gc2V0
RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKLXY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6
OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxk
VHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROYW1lZENv
bnN0cnVjdG9yQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjYWNoZWRUZW1wbGF0ZTsKICAgICBpZiAoIWNh
Y2hlZFRlbXBsYXRlLklzRW1wdHkoKSkKQEAgLTEyMSwyMCArMTIxLDIwIEBAIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0
b3I6OkdldFRlbXBsCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2Ug
PSByZXN1bHQtPkluc3RhbmNlVGVtcGxhdGUoKTsKICAgICBpbnN0YW5jZS0+U2V0SW50ZXJuYWxG
aWVsZENvdW50KFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OmludGVybmFsRmllbGRDb3VudCk7CiAg
ICAgcmVzdWx0LT5TZXRDbGFzc05hbWUodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJUZXN0TmFtZWRD
b25zdHJ1Y3RvciIpKTsKLSAgICByZXN1bHQtPkluaGVyaXQoVjhUZXN0TmFtZWRDb25zdHJ1Y3Rv
cjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSk7CisgICAgcmVzdWx0LT5Jbmhlcml0
KFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKGlzb2xhdGUsIGN1cnJlbnRXb3Js
ZFR5cGUpKTsKIAogICAgIGNhY2hlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgcmVzdWx0KTsKICAgICByZXR1cm4gY2FjaGVkVGVt
cGxhdGU7CiB9CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
Q29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldv
cmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbGF0ZSh2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVBy
b3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1
cmU7CiAgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJl
VGVtcGxhdGUoZGVzYywgIlRlc3ROYW1lZENvbnN0cnVjdG9yIiwgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OmludGVybmFsRmll
bGRDb3VudCwKICAgICAgICAgMCwgMCwKLSAgICAgICAgMCwgMCwgaXNvbGF0ZSk7CisgICAgICAg
IDAsIDAsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZh
dWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAg
ICAKIApAQCAtMTQzLDIzICsxNDMsMjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3ROYW1lZENvbnN0cnVjdG9yVGVtcGwKICAgICBy
ZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdE5hbWVkQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVy
SXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAg
IFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50
ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0
YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpU
ZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdv
cmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1h
cChjdXJyZW50V29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7
CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0TmFt
ZWRDb25zdHJ1Y3RvclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUp
LCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSku
YWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0
b3JUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlz
b2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRX
b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9v
bCBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKK2Jvb2wgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBj
dXJyZW50V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJu
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1
ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6
SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaAppbmRleCAzMGE3
NTZiNjQ5YjY5YmE1ZDk0M2QxZTc4ZGU4YzgzM2NlNTUyMzU0Li44NWVjNWZkYmQwZTViMDUxY2Qy
ZjRkY2M3MzU0NGJiNmE3MDI1ZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgK
QEAgLTgyLDYgKzgyLDE3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0
TmFtZWRDb25zdHJ1Y3RvciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqCiAgICAgcmV0dXJuIHdy
YXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4Rm9yTWFpbldvcmxkKFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOwor
ICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2so
aXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3Rv
cmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3Jl
YXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFp
bmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhG
YXN0KFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNv
bnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CkBAIC05NCw2ICsxMDUsMjUgQEAgaW5s
aW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0TmFtZWRDb25zdHJ1Y3Rvciog
aW1wbCwgY29uc3QgSG9sZGVyQ28KIH0KIAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVy
LCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0
Rm9yTWFpbldvcmxkKFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBsLCBjb25zdCBIb2xkZXJDb250
YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdv
cmxkVHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChV
TkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xh
dGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3Jl
OjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRh
aW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0TmFtZWRDb25z
dHJ1Y3RvciA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFi
bGUqIHdyYXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5n
ZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRl
ckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0TmFtZWRDb25zdHJ1Y3RvciA+IGltcGwsIGNvbnN0
IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKICAg
ICByZXR1cm4gdG9WOEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5v
ZGUuY3BwCmluZGV4IDI1OTg4NTMwZjBiODdiMjJmOGYwMmNlNjk4ZDAxOTg0MGYxOWUwMDMuLjZk
YTFkZTQyNmNmMTc4NDM0ZmQ5ZDZiNjczOWU1ZmJmMDU1YjliZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKQEAg
LTkzLDE0ICs5MywxNCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0Tm9kZTo6Y29uc3Ry
dWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiBUZXN0
Tm9kZVY4SW50ZXJuYWw6OmNvbnN0cnVjdG9yKGFyZ3MpOwogfQogCi1zdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1wbGF0ZSh2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3ROb2RlVGVtcGxhdGUodjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9u
bHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2ln
bmF0dXJlOwotICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZp
Z3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0Tm9kZSIsIFY4Tm9kZTo6R2V0VGVtcGxhdGUoaXNvbGF0
ZSwgd29ybGRUeXBlKSwgVjhUZXN0Tm9kZTo6aW50ZXJuYWxGaWVsZENvdW50LAorICAgIGRlZmF1
bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2Ms
ICJUZXN0Tm9kZSIsIFY4Tm9kZTo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlw
ZSksIFY4VGVzdE5vZGU6OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgMCwgMCwKLSAgICAg
ICAgMCwgMCwgaXNvbGF0ZSk7CisgICAgICAgIDAsIDAsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5
cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNl
cywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOFRlc3RO
b2RlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKTsKICAgICAKQEAgLTExMCwyMyArMTEwLDIzIEBAIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0
Tm9kZVRlbXBsYXRlKHY4OjpQZXJzCiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROb2RlOjpHZXRUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Tm9kZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsK
LSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9
IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0
YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJl
bnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxh
dGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZh
bHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVz
dE5vZGVUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0
ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5m
bywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3ROb2RlVGVtcGxhdGUoZGF0YS0+cmF3
VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRU
eXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8s
IHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0Tm9kZTo6SGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdE5vZGU6Okhhc0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUp
OworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5j
ZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiBib29sIFY4VGVzdE5vZGU6
Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgKaW5kZXggOTQ0YjJhODliOGRjOGQ5ZjVlMmJiOWU0MGVj
MWU1ZjhjMzhlMjhkYi4uYWNmZTE1NTRjZWUyYjZmODA4MzhiYjBhZDkzZDBkY2VmOGNlNTA1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0Tm9kZS5oCkBAIC03Nyw2ICs3NywxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjgoVGVzdE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpbwogICAg
IHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0Tm9kZSogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlz
b2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3Jl
OjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5l
ciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFz
dChUZXN0Tm9kZSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBw
YWJsZSogd3JhcHBhYmxlKQogewpAQCAtODksNiArMTAwLDI1IEBAIGlubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE5vZGUqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5l
ciYgY29uCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBh
YmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChU
ZXN0Tm9kZSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJs
ZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVyLkdldElzb2xh
dGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICBy
ZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChp
bXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBl
cjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5H
ZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNz
IFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWlu
V29ybGQoUGFzc1JlZlB0cjwgVGVzdE5vZGUgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0
Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0
ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdE5vZGUgPiBpbXBs
LCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUp
CiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHAKaW5kZXggNzIwNWFlMTM2MDIxNTI4YjkzOWVlMWMxZmY3YmJiODYyODQ3OGJk
My4uZmNhY2IwY2I4MWFmNWYzMTI3MTQwNTRjMjIzYjZiOGFkNmQ3Y2NjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAK
QEAgLTMwODAsMTU1ICszMDgwLDE1NSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNv
bnN0cnVjdG9yKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRpYyBjb25zdCBWOERP
TUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0T2JqQXR0cnNbXSA9IHsKICAg
ICAvLyBBdHRyaWJ1dGUgJ3JlYWRPbmx5TG9uZ0F0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmli
dXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InJlYWRPbmx5TG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRl
cm5hbDo6cmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCisgICAgeyJyZWFkT25seUxvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5
TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAg
IC8vIEF0dHJpYnV0ZSAncmVhZE9ubHlTdHJpbmdBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJp
YnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJyZWFkT25seVN0cmluZ0F0dHIiLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6cmVhZE9ubHlTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKKyAgICB7InJlYWRPbmx5U3RyaW5nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpy
ZWFkT25seVN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAsIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVhZE9ubHlUZXN0T2JqQXR0cicgKFR5cGU6ICdyZWFk
b25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsicmVhZE9ubHlUZXN0T2JqQXR0ciIs
IFRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVRlc3RPYmpBdHRyQXR0ckdldHRlckNhbGxiYWNr
LCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InJlYWRPbmx5VGVzdE9iakF0dHIiLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6cmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCwg
MCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdzdGF0aWNSZWFkT25seUxvbmdB
dHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJzdGF0
aWNSZWFkT25seUxvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1JlYWRPbmx5TG9u
Z0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3RhdGlj
UmVhZE9ubHlMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNSZWFkT25seUxvbmdB
dHRyQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBB
dHRyaWJ1dGUgJ3N0YXRpY1N0cmluZ0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAn
JykKLSAgICB7InN0YXRpY1N0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljU3Ry
aW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0cmlu
Z0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3RhdGljU3Ry
aW5nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNTdHJpbmdBdHRyQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljU3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxs
YmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdUZXN0U3ViT2Jq
JyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJUZXN0U3Vi
T2JqIiwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpDb25zdHJ1Y3RvckdldHRlciwgMCwgJlY4
VGVzdFN1Yk9iajo6aW5mbywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAorICAgIHsiVGVzdFN1Yk9iaiIsIFRlc3RPYmpWOEludGVybmFsOjpU
ZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIsIDAsIDAsIDAsICZWOFRlc3RTdWJPYmo6OmluZm8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAg
ICAvLyBBdHRyaWJ1dGUgJ2VudW1BdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycp
Ci0gICAgeyJlbnVtQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjplbnVtQXR0ckF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVudW1BdHRyQXR0clNldHRlckNhbGxiYWNrLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyAgICB7ImVudW1BdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVudW1B
dHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW51bUF0dHJBdHRyU2V0
dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnc2hv
cnRBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJzaG9ydEF0dHIi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6c2hvcnRBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6c2hvcnRBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
KyAgICB7InNob3J0QXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzaG9ydEF0dHJBdHRyR2V0dGVy
Q2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpzaG9ydEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ss
IDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAndW5zaWduZWRTaG9ydEF0
dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InVuc2lnbmVkU2hvcnRB
dHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkU2hvcnRBdHRyQXR0ckdldHRlckNhbGxi
YWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRTaG9ydEF0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAorICAgIHsidW5zaWduZWRTaG9ydEF0dHIiLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6dW5zaWduZWRTaG9ydEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOElu
dGVybmFsOjp1bnNpZ25lZFNob3J0QXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdsb25nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUn
IEV4dEF0dHI6ICcnKQotICAgIHsibG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0
dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0dHJTZXR0
ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJsb25nQXR0ciIsIFRlc3RPYmpWOElu
dGVybmFsOjpsb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6Omxv
bmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBB
dHRyaWJ1dGUgJ2xvbmdMb25nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQot
ICAgIHsibG9uZ0xvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJTZXR0ZXJD
YWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJsb25nTG9uZ0F0dHIiLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6bG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6bG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
ICAgICAvLyBBdHRyaWJ1dGUgJ3Vuc2lnbmVkTG9uZ0xvbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0
ZScgRXh0QXR0cjogJycpCi0gICAgeyJ1bnNpZ25lZExvbmdMb25nQXR0ciIsIFRlc3RPYmpWOElu
dGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4
SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKKyAgICB7InVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6
OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnc3RyaW5nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUn
IEV4dEF0dHI6ICcnKQotICAgIHsic3RyaW5nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJp
bmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0ckF0
dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJzdHJpbmdBdHRyIiwgVGVz
dE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOElu
dGVybmFsOjpzdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKICAgICAvLyBBdHRyaWJ1dGUgJ3Rlc3RPYmpBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0
QXR0cjogJ1Y4TWVhc3VyZUFzJykKLSAgICB7InRlc3RPYmpBdHRyIiwgVGVzdE9ialY4SW50ZXJu
YWw6OnRlc3RPYmpBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6dGVz
dE9iakF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsidGVzdE9i
akF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RPYmpWOEludGVybmFsOjp0ZXN0T2JqQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdYTUxPYmpBdHRyJyAoVHlwZTogJ2F0
dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJYTUxPYmpBdHRyIiwgVGVzdE9ialY4SW50ZXJu
YWw6OlhNTE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpYTUxP
YmpBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7IlhNTE9iakF0
dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVz
dE9ialY4SW50ZXJuYWw6OlhNTE9iakF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnY3JlYXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScg
RXh0QXR0cjogJycpCi0gICAgeyJjcmVhdGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0
ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0clNldHRlckNhbGxi
YWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImNyZWF0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpj
cmVhdGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpjcmVhdGVBdHRyU2V0
dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVm
bGVjdGVkU3RyaW5nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykK
LSAgICB7InJlZmxlY3RlZFN0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVk
U3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZFN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsicmVm
bGVjdGVkU3RyaW5nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRy
QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0
ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmli
dXRlICdyZWZsZWN0ZWRJbnRlZ3JhbEF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAn
UmVmbGVjdCcpCi0gICAgeyJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5h
bDo6cmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRl
cm5hbDo6cmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKKyAgICB7InJlZmxlY3RlZEludGVncmFsQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFs
OjpyZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIn
IChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnUmVmbGVjdCcpCi0gICAgeyJyZWZsZWN0ZWRV
bnNpZ25lZEludGVncmFsQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRVbnNpZ25l
ZEludGVncmFsQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxl
Y3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKKyAgICB7InJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIiwgVGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0
T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyQ2Fs
bGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVk
Qm9vbGVhbkF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnUmVmbGVjdCcpCi0gICAg
eyJyZWZsZWN0ZWRCb29sZWFuQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRCb29s
ZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJv
b2xlYW5BdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InJlZmxl
Y3RlZEJvb2xlYW5BdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRy
QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQm9vbGVhbkF0
dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJp
YnV0ZSAncmVmbGVjdGVkVVJMQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdVUkwg
UmVmbGVjdCcpCi0gICAgeyJyZWZsZWN0ZWRVUkxBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJl
ZmxlY3RlZFVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZs
ZWN0ZWRVUkxBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InJl
ZmxlY3RlZFVSTEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyU2V0
dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVm
bGVjdGVkU3RyaW5nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykK
LSAgICB7InJlZmxlY3RlZFN0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVk
U3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZFN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsicmVm
bGVjdGVkU3RyaW5nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRy
QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0
ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmli
dXRlICdyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRB
dHRyOiAnUmVmbGVjdCcpCi0gICAgeyJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0ckdldHRlckNhbGxi
YWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0clNl
dHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InJlZmxlY3RlZEN1c3RvbUludGVn
cmFsQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJB
dHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21JbnRl
Z3JhbEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8v
IEF0dHJpYnV0ZSAncmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHInIChUeXBlOiAnYXR0cmlidXRl
JyBFeHRBdHRyOiAnUmVmbGVjdCcpCi0gICAgeyJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIs
IFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0
clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InJlZmxlY3RlZEN1c3RvbUJv
b2xlYW5BdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRy
QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tQm9v
bGVhbkF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8v
IEF0dHJpYnV0ZSAncmVmbGVjdGVkQ3VzdG9tVVJMQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4
dEF0dHI6ICdVUkwgUmVmbGVjdCcpCi0gICAgeyJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIiwgVGVz
dE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlckNhbGxi
YWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywg
VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAndHlwZWRBcnJheUF0
dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InR5cGVkQXJyYXlBdHRy
IiwgVGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJyYXlBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6dHlwZWRBcnJheUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIHsidHlwZWRBcnJheUF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dHlw
ZWRBcnJheUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFy
cmF5QXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8g
QXR0cmlidXRlICdhdHRyV2l0aEdldHRlckV4Y2VwdGlvbicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4
dEF0dHI6ICcnKQotICAgIHsiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCBUZXN0T2JqVjhJbnRl
cm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpW
OEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCisgICAgeyJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOElu
dGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAw
LCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJhdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlv
bkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImF0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJF
eGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8v
IEF0dHJpYnV0ZSAnc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24nIChUeXBlOiAnYXR0cmli
dXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwg
VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRl
ckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b25BdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3RyaW5nQXR0cldp
dGhHZXR0ZXJFeGNlcHRpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbicg
KFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsic3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0
aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAg
eyJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAw
LCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2N1c3RvbUF0dHInIChUeXBl
OiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ3VzdG9tJykKLSAgICB7ImN1c3RvbUF0dHIiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6Y3VzdG9tQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OmN1c3RvbUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAg
IHsiY3VzdG9tQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpjdXN0b21BdHRyQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3VzdG9tQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywg
MCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0U3RhdGVB
dHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQotICAgIHsi
d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRT
dGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisg
ICAgeyJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6
d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRoJykKLSAgICB7Indp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6Ondp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0
T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0
dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQotICAgIHsi
d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJDYWxsYmFjaywg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCisgICAgeyJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRl
ckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRy
aWJ1dGUgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzJyAoVHlwZTog
J2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRoJykKLSAgICB7IndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlUmFpc2VzIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRy
U2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpW
OEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJT
ZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICd3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlJyAoVHlwZTog
J2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRoJykKLSAgICB7IndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAor
ICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIs
IFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxs
YmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzJyAoVHlwZTogJ2F0
dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRoJykKLSAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0
dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2ssIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAorICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlcyIsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiAgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdD
YWxsV2l0aCcpCi0gICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
V2l0aFNwYWNlc0F0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxs
YmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKKyAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRo
U3BhY2VzQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFj
a0F0dHJpYnV0ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcpCi0gICAg
eyJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIiwgVGVzdE9ialY4SW50
ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRyR2V0dGVy
Q2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0
YWNrQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7Indp
dGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5h
bDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxs
YmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tB
dHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8v
IEF0dHJpYnV0ZSAnZW5mb3JjZWRSYW5nZUxvbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0
QXR0cjogJ0VuZm9yY2VSYW5nZScpCi0gICAgeyJlbmZvcmNlZFJhbmdlTG9uZ0F0dHIiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZUxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZUxvbmdBdHRyQXR0clNldHRlckNhbGxiYWNr
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKKyAgICB7ImVuZm9yY2VkUmFuZ2VMb25nQXR0ciIsIFRlc3RPYmpW
OEludGVybmFsOjplbmZvcmNlZFJhbmdlTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RP
YmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAs
IDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnZW5mb3JjZWRSYW5nZVVuc2ln
bmVkTG9uZ0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnRW5mb3JjZVJhbmdlJykK
LSAgICB7ImVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6
OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0F0dHIi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0F0dHJBdHRyR2V0
dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25n
QXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0
cmlidXRlICdlbmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0
QXR0cjogJ0VuZm9yY2VSYW5nZScpCi0gICAgeyJlbmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRyIiwg
VGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRyQXR0clNl
dHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImVuZm9yY2VkUmFuZ2VMb25nTG9u
Z0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZUxvbmdMb25nQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nTG9uZ0F0
dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJp
YnV0ZSAnZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0xvbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0
ZScgRXh0QXR0cjogJ0VuZm9yY2VSYW5nZScpCi0gICAgeyJlbmZvcmNlZFJhbmdlVW5zaWduZWRM
b25nTG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9u
Z0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRS
YW5nZVVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKKyAgICB7ImVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdMb25nQXR0ciIsIFRlc3RPYmpWOElu
dGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJh
Y2ssIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nTG9uZ0F0dHJB
dHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogI2lmIEVOQUJMRShDb25k
aXRpb24xKQogICAgIC8vIEF0dHJpYnV0ZSAnY29uZGl0aW9uYWxBdHRyMScgKFR5cGU6ICdhdHRy
aWJ1dGUnIEV4dEF0dHI6ICdDb25kaXRpb25hbCcpCi0gICAgeyJjb25kaXRpb25hbEF0dHIxIiwg
VGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIFRl
c3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIxQXR0clNldHRlckNhbGxiYWNrLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKKyAgICB7ImNvbmRpdGlvbmFsQXR0cjEiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
Y29uZGl0aW9uYWxBdHRyMUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmNv
bmRpdGlvbmFsQXR0cjFBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAog
I2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKQogI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBF
TkFCTEUoQ29uZGl0aW9uMikKICAgICAvLyBBdHRyaWJ1dGUgJ2NvbmRpdGlvbmFsQXR0cjInIChU
eXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwnKQotICAgIHsiY29uZGl0aW9u
YWxBdHRyMiIsIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIyQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMkF0dHJTZXR0ZXJDYWxs
YmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJjb25kaXRpb25hbEF0dHIyIiwgVGVzdE9ialY4
SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOElu
dGVybmFsOjpjb25kaXRpb25hbEF0dHIyQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlv
bjIpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogICAgIC8v
IEF0dHJpYnV0ZSAnY29uZGl0aW9uYWxBdHRyMycgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6
ICdDb25kaXRpb25hbCcpCi0gICAgeyJjb25kaXRpb25hbEF0dHIzIiwgVGVzdE9ialY4SW50ZXJu
YWw6OmNvbmRpdGlvbmFsQXR0cjNBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFs
Ojpjb25kaXRpb25hbEF0dHIzQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAg
ICB7ImNvbmRpdGlvbmFsQXR0cjMiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRy
M0F0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjNB
dHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogI2VuZGlmIC8vIEVOQUJM
RShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MSkKICAgICAvLyBBdHRyaWJ1dGUgJ2NvbmRpdGlvbmFsQXR0cjQnIChUeXBlOiAnYXR0cmlidXRl
JyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwnKQotICAgIHsiY29uZGl0aW9uYWxBdHRyNCIsIFRlc3RP
YmpWOEludGVybmFsOjpUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIsIFRlc3RPYmpWOEludGVybmFs
OjpUZXN0T2JqUmVwbGFjZWFibGVBdHRyU2V0dGVyQ2FsbGJhY2ssICZWOFRlc3RPYmplY3RBOjpp
bmZvLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCisgICAgeyJjb25kaXRpb25hbEF0dHI0IiwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpD
b25zdHJ1Y3RvckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0
dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgJlY4VGVzdE9iamVjdEE6OmluZm8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBF
TkFCTEUoQ29uZGl0aW9uMSkKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRp
dGlvbjIpCiAgICAgLy8gQXR0cmlidXRlICdjb25kaXRpb25hbEF0dHI1JyAoVHlwZTogJ2F0dHJp
YnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFsJykKLSAgICB7ImNvbmRpdGlvbmFsQXR0cjUiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9iakNvbnN0cnVjdG9yR2V0dGVyLCBUZXN0T2JqVjhJbnRl
cm5hbDo6VGVzdE9ialJlcGxhY2VhYmxlQXR0clNldHRlckNhbGxiYWNrLCAmVjhUZXN0T2JqZWN0
Qjo6aW5mbywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAorICAgIHsiY29uZGl0aW9uYWxBdHRyNSIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0
T2JqQ29uc3RydWN0b3JHZXR0ZXIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqUmVwbGFjZWFi
bGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsICZWOFRlc3RPYmplY3RCOjppbmZvLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAjZW5kaWYg
Ly8gRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQogI2lmIEVOQUJMRShD
b25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKICAgICAvLyBBdHRyaWJ1dGUgJ2NvbmRp
dGlvbmFsQXR0cjYnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwnKQot
ICAgIHsiY29uZGl0aW9uYWxBdHRyNiIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqQ29uc3Ry
dWN0b3JHZXR0ZXIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqUmVwbGFjZWFibGVBdHRyU2V0
dGVyQ2FsbGJhY2ssICZWOFRlc3RPYmplY3RDOjppbmZvLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJjb25kaXRpb25hbEF0dHI2
IiwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpDb25zdHJ1Y3RvckdldHRlciwgVGVzdE9ialY4
SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgJlY4
VGVzdE9iamVjdEM6OmluZm8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjIpCiAgICAgLy8gQXR0cmlidXRlICdjYWNoZWRBdHRyaWJ1dGUxJyAoVHlwZTog
J3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ0NhY2hlZEF0dHJpYnV0ZScpCi0gICAgeyJj
YWNoZWRBdHRyaWJ1dGUxIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTFBdHRy
R2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiY2FjaGVkQXR0cmlidXRl
MSIsIFRlc3RPYmpWOEludGVybmFsOjpjYWNoZWRBdHRyaWJ1dGUxQXR0ckdldHRlckNhbGxiYWNr
LCAwLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2NhY2hlZEF0dHJp
YnV0ZTInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FjaGVkQXR0cmli
dXRlJykKLSAgICB7ImNhY2hlZEF0dHJpYnV0ZTIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y2FjaGVk
QXR0cmlidXRlMkF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJj
YWNoZWRBdHRyaWJ1dGUyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTJBdHRy
R2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0
ZSAnYW55QXR0cmlidXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJh
bnlBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6YW55QXR0cmlidXRlQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6YW55QXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNr
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKKyAgICB7ImFueUF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFs
OjphbnlBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjphbnlB
dHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8v
IEF0dHJpYnV0ZSAnZmxvYXRBcnJheScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQot
ICAgIHsiZmxvYXRBcnJheSIsIFRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFycmF5QXR0ckdldHRl
ckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZmxvYXRBcnJheUF0dHJTZXR0ZXJDYWxsYmFj
aywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJmbG9hdEFycmF5IiwgVGVzdE9ialY4SW50ZXJuYWw6
OmZsb2F0QXJyYXlBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFy
cmF5QXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRy
aWJ1dGUgJ2RvdWJsZUFycmF5JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAg
eyJkb3VibGVBcnJheSIsIFRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0clNldHRlckNhbGxiYWNr
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKKyAgICB7ImRvdWJsZUFycmF5IiwgVGVzdE9ialY4SW50ZXJuYWw6
OmRvdWJsZUFycmF5QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZG91Ymxl
QXJyYXlBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0
dHJpYnV0ZSAnY29udGVudERvY3VtZW50JyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0
QXR0cjogJ0NoZWNrU2VjdXJpdHlGb3JOb2RlJykKLSAgICB7ImNvbnRlbnREb2N1bWVudCIsIFRl
c3RPYmpWOEludGVybmFsOjpjb250ZW50RG9jdW1lbnRBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAorICAgIHsiY29udGVudERvY3VtZW50IiwgVGVzdE9ialY4SW50ZXJuYWw6
OmNvbnRlbnREb2N1bWVudEF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiAgICAgLy8gQXR0cmlidXRlICdtdXRhYmxlUG9pbnQnIChUeXBlOiAnYXR0cmlidXRlJyBF
eHRBdHRyOiAnJykKLSAgICB7Im11dGFibGVQb2ludCIsIFRlc3RPYmpWOEludGVybmFsOjptdXRh
YmxlUG9pbnRBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9p
bnRBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsibXV0YWJsZVBvaW50
IiwgVGVzdE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0dHJHZXR0ZXJDYWxsYmFjaywgVGVz
dE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdpbW11dGFibGVQb2ludCcgKFR5cGU6ICdh
dHRyaWJ1dGUnIEV4dEF0dHI6ICdJbW11dGFibGUnKQotICAgIHsiaW1tdXRhYmxlUG9pbnQiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RP
YmpWOEludGVybmFsOjppbW11dGFibGVQb2ludEF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgeyJpbW11dGFibGVQb2ludCIsIFRlc3RPYmpWOEludGVybmFsOjppbW11dGFi
bGVQb2ludEF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBv
aW50QXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRy
aWJ1dGUgJ3N0cmF3YmVycnknIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnSW1wbGVtZW50
ZWRBcycpCi0gICAgeyJzdHJhd2JlcnJ5IiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmF3YmVycnlB
dHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpzdHJhd2JlcnJ5QXR0clNldHRl
ckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InN0cmF3YmVycnkiLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6c3RyYXdiZXJyeUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6
OnN0cmF3YmVycnlBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAg
IC8vIEF0dHJpYnV0ZSAnc3RyaWN0RmxvYXQnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAn
U3RyaWN0VHlwZUNoZWNraW5nJykKLSAgICB7InN0cmljdEZsb2F0IiwgVGVzdE9ialY4SW50ZXJu
YWw6OnN0cmljdEZsb2F0QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3Ry
aWN0RmxvYXRBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3RyaWN0
RmxvYXQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGbG9hdEF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdkZXNjcmlwdGlvbicgKFR5cGU6ICdy
ZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiZGVzY3JpcHRpb24iLCBUZXN0
T2JqVjhJbnRlcm5hbDo6ZGVzY3JpcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAorICAgIHsiZGVzY3JpcHRpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZGVzY3JpcHRp
b25BdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0
dHJpYnV0ZSAnaWQnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7ImlkIiwg
VGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6aWRBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiaWQiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6aWRBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpp
ZEF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmli
dXRlICdoYXNoJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAg
eyJoYXNoIiwgVGVzdE9ialY4SW50ZXJuYWw6Omhhc2hBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAorICAgIHsiaGFzaCIsIFRlc3RPYmpWOEludGVybmFsOjpoYXNoQXR0ckdl
dHRlckNhbGxiYWNrLCAwLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUg
J3JlcGxhY2VhYmxlQXR0cmlidXRlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0
cjogJ1JlcGxhY2VhYmxlJykKLSAgICB7InJlcGxhY2VhYmxlQXR0cmlidXRlIiwgVGVzdE9ialY4
SW50ZXJuYWw6OnJlcGxhY2VhYmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6VGVzdE9ialJlcGxhY2VhYmxlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKKyAgICB7InJlcGxhY2VhYmxlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6
OnJlcGxhY2VhYmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6VGVzdE9ialJlcGxhY2VhYmxlQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ251bGxhYmxlRG91YmxlQXR0cmlidXRlJyAoVHlwZTog
J3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJudWxsYWJsZURvdWJsZUF0
dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZURvdWJsZUF0dHJpYnV0ZUF0dHJH
ZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJudWxsYWJsZURvdWJsZUF0
dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZURvdWJsZUF0dHJpYnV0ZUF0dHJH
ZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRl
ICdudWxsYWJsZUxvbmdBdHRyaWJ1dGUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRB
dHRyOiAnJykKLSAgICB7Im51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFs
OjpudWxsYWJsZUxvbmdBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAorICAgIHsibnVsbGFibGVMb25nQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51
bGxhYmxlTG9uZ0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUnIChUeXBl
OiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7Im51bGxhYmxlQm9vbGVh
bkF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGVB
dHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsibnVsbGFibGVCb29s
ZWFuQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlQm9vbGVhbkF0dHJpYnV0
ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0
cmlidXRlICdudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1
dGUnIEV4dEF0dHI6ICcnKQotICAgIHsibnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUiLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAs
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAorICAgIHsibnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUiLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAs
IDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnbnVsbGFibGVMb25nU2V0
dGFibGVBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7Im51
bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxl
TG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIHsibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJh
Y2ssIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJT
ZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdu
dWxsYWJsZVN0cmluZ1ZhbHVlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAg
eyJudWxsYWJsZVN0cmluZ1ZhbHVlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5n
VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmlu
Z1ZhbHVlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7Im51bGxhYmxl
U3RyaW5nVmFsdWUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJH
ZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVBdHRy
U2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsKIAogc3RhdGljIGNvbnN0
IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZE1ldGhvZCBWOFRlc3RPYmpNZXRob2RzW10gPSB7
CkBAIC0zMzMxLDE0ICszMzMxLDE0IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPYmo6
OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1
cm4gVGVzdE9ialY4SW50ZXJuYWw6OmNvbnN0cnVjdG9yKGFyZ3MpOwogfQogCi1zdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBs
YXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJl
YWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVs
dFNpZ25hdHVyZTsKICAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpj
b25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdE9iamVjdCIsIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6OmludGVybmFsRmllbGRDb3VudCwKICAgICAg
ICAgVjhUZXN0T2JqQXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0T2JqQXR0cnMpLAotICAg
ICAgICBWOFRlc3RPYmpNZXRob2RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdE9iak1ldGhvZHMp
LCBpc29sYXRlKTsKKyAgICAgICAgVjhUZXN0T2JqTWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChW
OFRlc3RPYmpNZXRob2RzKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CiAgICAgVU5VU0VE
X1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBi
ZSB1c2VkLgogICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4VGVzdE9iajo6Y29uc3RydWN0b3JD
YWxsYmFjayk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBk
ZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCk7CkBAIC0zMzQ5LDQzICszMzQ5LDQzIEBAIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVt
cGxhdGUodjg6OlBlcnNpCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmVuYWJsZWRB
dFJ1bnRpbWVBdHRyMUVuYWJsZWQoKSkgewogICAgICAgICBzdGF0aWMgY29uc3QgVjhET01Db25m
aWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhID1cCiAgICAgICAgIC8vIEF0dHJp
YnV0ZSAnZW5hYmxlZEF0UnVudGltZUF0dHIxJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjog
J1Y4RW5hYmxlZEF0UnVudGltZScpCi0gICAgICAgIHsiZW5hYmxlZEF0UnVudGltZUF0dHIxIiwg
VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXJDYWxs
YmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL307Ci0gICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmln
dXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEsIGlzb2xhdGUpOworICAgICAg
ICB7ImVuYWJsZWRBdFJ1bnRpbWVBdHRyMSIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRS
dW50aW1lQXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVk
QXRSdW50aW1lQXR0cjFBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99Owor
ICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwg
cHJvdG8sIGF0dHJEYXRhLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICB9CiAgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZlYXR1cmVOYW1lRW5hYmxlZCgpKSB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgYXR0
ckRhdGEgPVwKICAgICAgICAgLy8gQXR0cmlidXRlICdlbmFibGVkQXRSdW50aW1lQXR0cjInIChU
eXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnVjhFbmFibGVkQXRSdW50aW1lJykKLSAgICAgICAg
eyJlbmFibGVkQXRSdW50aW1lQXR0cjIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVu
dGltZUF0dHIyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0
UnVudGltZUF0dHIyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfTsKLSAgICAgICAg
VjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBh
dHRyRGF0YSwgaXNvbGF0ZSk7CisgICAgICAgIHsiZW5hYmxlZEF0UnVudGltZUF0dHIyIiwgVGVz
dE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0ZXJDYWxsYmFjaywg
VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJTZXR0ZXJDYWxsYmFj
aywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL307CisgICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6Y29u
ZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEsIGlzb2xhdGUsIGN1cnJl
bnRXb3JsZFR5cGUpOwogICAgIH0KIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3ZvaWRNZXRo
b2RXaXRoQXJncycKICAgICBjb25zdCBpbnQgdm9pZE1ldGhvZFdpdGhBcmdzQXJnYyA9IDM7Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdm9pZE1ldGhvZFdpdGhBcmdzQXJn
dlt2b2lkTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbywgd29ybGRU
eXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHZvaWRNZXRob2RX
aXRoQXJnc0FyZ3Zbdm9pZE1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6Omlu
Zm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiB2
b2lkTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgdm9p
ZE1ldGhvZFdpdGhBcmdzQXJnYywgdm9pZE1ldGhvZFdpdGhBcmdzQXJndik7CiAgICAgcHJvdG8t
PlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZvaWRNZXRob2RXaXRoQXJncyIpLCB2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjp2b2lkTWV0aG9kV2l0aEFyZ3NN
ZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdm9pZE1ldGhvZFdpdGhBcmdzU2lnbmF0dXJl
KSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdsb25nTWV0aG9kV2l0aEFyZ3MnCiAgICAg
Y29uc3QgaW50IGxvbmdNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOwotICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IGxvbmdNZXRob2RXaXRoQXJnc0FyZ3ZbbG9uZ01ldGhvZFdpdGhB
cmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBsb25nTWV0aG9kV2l0aEFyZ3NBcmd2W2xvbmdN
ZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigp
LCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCBjdXJyZW50V29ybGRU
eXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbG9uZ01ldGhvZFdpdGhBcmdz
U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGxvbmdNZXRob2RXaXRoQXJnc0Fy
Z2MsIGxvbmdNZXRob2RXaXRoQXJnc0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJsb25nTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5l
dyhUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ01ldGhvZFdpdGhBcmdzTWV0aG9kQ2FsbGJhY2ssIHY4
VW5kZWZpbmVkKCksIGxvbmdNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3Vz
dG9tIFNpZ25hdHVyZSAnb2JqTWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50IG9iak1ldGhv
ZFdpdGhBcmdzQXJnYyA9IDM7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
b2JqTWV0aG9kV2l0aEFyZ3NBcmd2W29iak1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRl
c3RPYmo6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBvYmpNZXRob2RXaXRoQXJnc0FyZ3Zbb2JqTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxh
dGUoJlY4VGVzdE9iajo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxl
PHY4OjpTaWduYXR1cmU+IG9iak1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVy
ZTo6TmV3KGRlc2MsIG9iak1ldGhvZFdpdGhBcmdzQXJnYywgb2JqTWV0aG9kV2l0aEFyZ3NBcmd2
KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgib2JqTWV0aG9kV2l0aEFy
Z3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6b2JqTWV0
aG9kV2l0aEFyZ3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgb2JqTWV0aG9kV2l0aEFy
Z3NTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFdpdGhTZXF1
ZW5jZUFyZycKICAgICBjb25zdCBpbnQgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnYyA9IDE7Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJn
QXJndlttZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4c2VxdWVuY2U8U2NyaXB0UHJvZmlsZT46OmluZm8s
IHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRo
b2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2NdID0geyBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhzZXF1ZW5jZTxTY3Jp
cHRQcm9maWxlPjo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4
OjpTaWduYXR1cmU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1
cmU6Ok5ldyhkZXNjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjLCBtZXRob2RXaXRoU2VxdWVu
Y2VBcmdBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0aG9k
V2l0aFNlcXVlbmNlQXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50
ZXJuYWw6Om1ldGhvZFdpdGhTZXF1ZW5jZUFyZ01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgp
LCBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWdu
YXR1cmUgJ21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MnCiAgICAgY29uc3QgaW50
IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjID0gMjsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhy
b3dzQXJndlttZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJnY10gPSB7IHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdz
QW5kVGhyb3dzQXJndlttZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJnY10gPSB7
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIGN1cnJlbnRXb3JsZFR5
cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RUaGF0UmVxdWlyZXNB
bGxBcmdzQW5kVGhyb3dzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1ldGhv
ZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjLCBtZXRob2RUaGF0UmVxdWlyZXNBbGxB
cmdzQW5kVGhyb3dzQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2wo
Im1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRo
cm93c01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RUaGF0UmVxdWlyZXNBbGxB
cmdzQW5kVGhyb3dzU2lnbmF0dXJlKSk7CiAgICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5
bWJvbCgic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljTWV0aG9kV2l0aENhbGxi
YWNrQW5kT3B0aW9uYWxBcmdNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OkxvY2Fs
PHY4OjpTaWduYXR1cmU+KCkpKTsKQEAgLTM0MDMsNDMgKzM0MDMsNDMgQEAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0
ZSh2ODo6UGVyc2kKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmluZ0FycmF5RnVuY3Rp
b24nCiAgICAgY29uc3QgaW50IHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjID0gMTsKLSAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltzdHJp
bmdBcnJheUZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSkt
PnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3Ry
aW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHN0cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1
cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MsIHN0
cmluZ0FycmF5RnVuY3Rpb25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5
bWJvbCgic3RyaW5nQXJyYXlGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRl
c3RPYmpWOEludGVybmFsOjpzdHJpbmdBcnJheUZ1bmN0aW9uTWV0aG9kQ2FsbGJhY2ssIHY4VW5k
ZWZpbmVkKCksIHN0cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3Rv
bSBTaWduYXR1cmUgJ2RvbVN0cmluZ0xpc3RGdW5jdGlvbicKICAgICBjb25zdCBpbnQgZG9tU3Ry
aW5nTGlzdEZ1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJndltkb21TdHJpbmdMaXN0RnVuY3Rpb25Bcmdj
XSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9N
U3RyaW5nTGlzdDo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ3ZbZG9tU3RyaW5nTGlzdEZ1bmN0
aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRl
KCZWOERPTVN0cmluZ0xpc3Q6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6Okhh
bmRsZTx2ODo6U2lnbmF0dXJlPiBkb21TdHJpbmdMaXN0RnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6
U2lnbmF0dXJlOjpOZXcoZGVzYywgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJnYywgZG9tU3RyaW5n
TGlzdEZ1bmN0aW9uQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2wo
ImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RP
YmpWOEludGVybmFsOjpkb21TdHJpbmdMaXN0RnVuY3Rpb25NZXRob2RDYWxsYmFjaywgdjhVbmRl
ZmluZWQoKSwgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0
b20gU2lnbmF0dXJlICdjb252ZXJ0MScKICAgICBjb25zdCBpbnQgY29udmVydDFBcmdjID0gMTsK
LSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0MUFyZ3ZbY29udmVy
dDFBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUo
JlY4YTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGNvbnZlcnQxQXJndltjb252ZXJ0MUFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhhOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9
OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDFTaWduYXR1cmUgPSB2ODo6
U2lnbmF0dXJlOjpOZXcoZGVzYywgY29udmVydDFBcmdjLCBjb252ZXJ0MUFyZ3YpOwogICAgIHBy
b3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0MSIpLCB2ODo6RnVuY3Rpb25U
ZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0MU1ldGhvZENhbGxiYWNrLCB2
OFVuZGVmaW5lZCgpLCBjb252ZXJ0MVNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25h
dHVyZSAnY29udmVydDInCiAgICAgY29uc3QgaW50IGNvbnZlcnQyQXJnYyA9IDE7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDJBcmd2W2NvbnZlcnQyQXJnY10g
PSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGI6Omlu
Zm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBj
b252ZXJ0MkFyZ3ZbY29udmVydDJBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+cmF3VGVtcGxhdGUoJlY4Yjo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2
ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZlcnQyU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVy
ZTo6TmV3KGRlc2MsIGNvbnZlcnQyQXJnYywgY29udmVydDJBcmd2KTsKICAgICBwcm90by0+U2V0
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVydDIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDJNZXRob2RDYWxsYmFjaywgdjhVbmRlZmlu
ZWQoKSwgY29udmVydDJTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2Nv
bnZlcnQ0JwogICAgIGNvbnN0IGludCBjb252ZXJ0NEFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQ0QXJndltjb252ZXJ0NEFyZ2NdID0geyBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhkOjppbmZvLCB3b3Js
ZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDRB
cmd2W2NvbnZlcnQ0QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJh
d1RlbXBsYXRlKCZWOGQ6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRs
ZTx2ODo6U2lnbmF0dXJlPiBjb252ZXJ0NFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhk
ZXNjLCBjb252ZXJ0NEFyZ2MsIGNvbnZlcnQ0QXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3Ry
aW5nOjpOZXdTeW1ib2woImNvbnZlcnQ0IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVz
dE9ialY4SW50ZXJuYWw6OmNvbnZlcnQ0TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGNv
bnZlcnQ0U2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdjb252ZXJ0NScK
ICAgICBjb25zdCBpbnQgY29udmVydDVBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBjb252ZXJ0NUFyZ3ZbY29udmVydDVBcmdjXSA9IHsgVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4ZTo6aW5mbywgd29ybGRUeXBlKSB9
OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQ1QXJndltjb252
ZXJ0NUFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0
ZSgmVjhlOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNp
Z25hdHVyZT4gY29udmVydDVTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgY29u
dmVydDVBcmdjLCBjb252ZXJ0NUFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3
U3ltYm9sKCJjb252ZXJ0NSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOElu
dGVybmFsOjpjb252ZXJ0NU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0NVNp
Z25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAndmFyaWFkaWNOb2RlTWV0aG9k
JwogICAgIGNvbnN0IGludCB2YXJpYWRpY05vZGVNZXRob2RBcmdjID0gMjsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2YXJpYWRpY05vZGVNZXRob2RBcmd2W3ZhcmlhZGlj
Tm9kZU1ldGhvZEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdU
ZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCB3b3JsZFR5cGUpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdmFyaWFkaWNOb2RlTWV0aG9kQXJndlt2
YXJpYWRpY05vZGVNZXRob2RBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSksIFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOE5vZGU6OmluZm8sIGN1cnJl
bnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiB2YXJpYWRpY05v
ZGVNZXRob2RTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgdmFyaWFkaWNOb2Rl
TWV0aG9kQXJnYywgdmFyaWFkaWNOb2RlTWV0aG9kQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6
U3RyaW5nOjpOZXdTeW1ib2woInZhcmlhZGljTm9kZU1ldGhvZCIpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY05vZGVNZXRob2RNZXRob2RDYWxs
YmFjaywgdjhVbmRlZmluZWQoKSwgdmFyaWFkaWNOb2RlTWV0aG9kU2lnbmF0dXJlKSk7CiAgICAg
VjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywg
VjhUZXN0T2JqQ29uc3RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdE9iakNvbnN0cyksIGlzb2xh
dGUpOwpAQCAtMzQ0OSwyMyArMzQ0OSwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQogICAg
IHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
VjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhU
ZXN0T2JqOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBs
YXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZp
bmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBl
KS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVz
dWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Cisg
ICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5lbmQo
KSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUg
aGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRl
bXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxh
dGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVt
cGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJl
VjhUZXN0T2JqVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5
cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcChj
dXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9
CiAKLWJvb2wgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jv
b2wgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7
Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNl
KCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBl
KTsKIH0KIAogYm9vbCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpAQCAtMzQ4MywxMyArMzQ4
MywxMyBAQCB2b2lkIFY4VGVzdE9iajo6aW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gaW5zdGFuY2UsIFRlcwogICAgIGlmIChDb250ZXh0RmVhdHVyZXM6
OmVuYWJsZWRQZXJDb250ZXh0QXR0cjFFbmFibGVkKGltcGwtPmRvY3VtZW50KCkpKSB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgYXR0
ckRhdGEgPVwKICAgICAgICAgLy8gQXR0cmlidXRlICdlbmFibGVkUGVyQ29udGV4dEF0dHIxJyAo
VHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1Y4RW5hYmxlZFBlckNvbnRleHQnKQotICAgICAg
ICB7ImVuYWJsZWRQZXJDb250ZXh0QXR0cjEiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBl
ckNvbnRleHRBdHRyMUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJs
ZWRQZXJDb250ZXh0QXR0cjFBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99OworICAg
ICAgICB7ImVuYWJsZWRQZXJDb250ZXh0QXR0cjEiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxl
ZFBlckNvbnRleHRBdHRyMUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVu
YWJsZWRQZXJDb250ZXh0QXR0cjFBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99OwogICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0
YW5jZSwgcHJvdG8sIGF0dHJEYXRhLCBpc29sYXRlKTsKICAgICB9CiAgICAgaWYgKENvbnRleHRG
ZWF0dXJlczo6ZmVhdHVyZU5hbWVFbmFibGVkKGltcGwtPmRvY3VtZW50KCkpKSB7CiAgICAgICAg
IHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRh
dGEgPVwKICAgICAgICAgLy8gQXR0cmlidXRlICdlbmFibGVkUGVyQ29udGV4dEF0dHIyJyAoVHlw
ZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1Y4RW5hYmxlZFBlckNvbnRleHQnKQotICAgICAgICB7
ImVuYWJsZWRQZXJDb250ZXh0QXR0cjIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNv
bnRleHRBdHRyMkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQ
ZXJDb250ZXh0QXR0cjJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99OworICAgICAg
ICB7ImVuYWJsZWRQZXJDb250ZXh0QXR0cjIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBl
ckNvbnRleHRBdHRyMkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJs
ZWRQZXJDb250ZXh0QXR0cjJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
OwogICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5j
ZSwgcHJvdG8sIGF0dHJEYXRhLCBpc29sYXRlKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKaW5kZXggMWYyM2U2
NDUwOWJhNGJhNTExODRmMDY1MGY5MDM2NDU4NjI1NTE5NS4uZGZjNDRlNWExNjFhZDdhYzQ1N2U3
NzQwY2I2MWNjZWZlN2E5ZWFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaApAQCAtODEsNiArODEsMTcgQEAgaW5saW5lIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RPYmoqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb24KICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29y
bGQoVGVzdE9iaiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkg
PT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4g
djhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFw
cGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlm
ICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVy
biB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNs
YXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0T2JqKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CkBAIC05Myw2ICsxMDQsMjUgQEAg
aW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0T2JqKiBpbXBsLCBjb25z
dCBIb2xkZXJDb250YWluZXImIGNvbnQKIH0KIAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFp
bmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhG
YXN0Rm9yTWFpbldvcmxkKFRlc3RPYmoqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29u
dGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNv
bnRhaW5lci5HZXRJc29sYXRlKCkpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFp
bXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBw
ZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRl
cigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVy
Q29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IFRlc3RPYmogPiBpbXBsLCBjb25zdCBI
b2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAg
cmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBh
YmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBw
YWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwg
VGVzdE9iaiA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFi
bGUqIHdyYXBwYWJsZSkKIHsKICAgICByZXR1cm4gdG9WOEZhc3QoaW1wbC5nZXQoKSwgY29udGFp
bmVyLCB3cmFwcGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuY3BwCmluZGV4IDZlYWEzN2MxMTM3ZmIyYTg2MjVjZDkxNjg5ZTQ4NGYzNWY5OGViMzQuLmQw
MzUwMWE0Y2Q3NDA5NGMyOTBmMmIwYzQ1ZWMwNjEyYTlmNGUwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTE0NywxNCArMTQ3LDE0IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1
Y3RvckNhbGxiYWNrKGNvbnN0IHY4CiAgICAgcmV0dXJuIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzVjhJbnRlcm5hbDo6Y29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1RlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNj
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3Vy
cmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAg
djg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVsdFNp
Z25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+KCksIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmludGVybmFsRmllbGRDb3Vu
dCwKICAgICAgICAgMCwgMCwKLSAgICAgICAgMCwgMCwgaXNvbGF0ZSk7CisgICAgICAgIDAsIDAs
IGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2ln
bmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICBkZXNj
LT5TZXRDYWxsSGFuZGxlcihWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3Rv
ckNhbGxiYWNrKTsKICAgICAKQEAgLTE2NCwyMyArMTY0LDIzIEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yCiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVu
dFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6
aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZv
KTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkp
CisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRh
dGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChy
ZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAg
ICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNj
b3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0g
ICAgICAgIENvbmZpZ3VyZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1wbGF0ZShkYXRh
LT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAg
ICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAg
ICBDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGVtcGxhdGUoZGF0YS0+cmF3
VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRU
eXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8s
IHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdv
cmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJl
bnRXb3JsZFR5cGUpOwogfQogCiBib29sIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Okhh
c0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgK
aW5kZXggMTRhYWJjNGI4YTMwODk1YmFkNmEzZTAwNmFjOGVhZDI1NmFiNWFlOC4uZDBlNWE5YTIy
YjY2ZmUwOGM0YWU5ZDkxYjhjNGI0ZGVmZDBiZjFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5oCkBAIC03Niw2ICs3NiwxNyBAQCBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjgoVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwsIHY4OjpI
YW5kbGU8dgogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CiB9CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5
cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAg
ICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGlt
cGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVy
OworICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisK
IHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3Jh
cHBhYmxlKQogewpAQCAtODgsNiArOTksMjUgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4RmFzdChUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCwgY29uc3QgSG8KIH0K
IAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+Citpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwg
V3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIu
R2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisg
ICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFp
bldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29u
dGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5l
ciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFz
dEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA+IGlt
cGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJs
ZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFp
bmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwg
Y2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQ
YXNzUmVmUHRyPCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA+IGltcGwsIGNvbnN0IEhvbGRl
ckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKICAgICByZXR1
cm4gdG9WOEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRl
eCBkNThhYTNlMGY0YzIwZTQzYTM3YjM4OGE3NWE3ODAxNTIxNjcxZmI4Li4wM2QwMDgxMDkwNjYw
MzMxNjEyM2IwNDM4YzIzMTM4YWRiMmEyMGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMjgxLDE1ICsyODEsMTUg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3Rvcihjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogCiBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVk
QXR0cmlidXRlIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUF0dHJzW10gPSB7
CiAgICAgLy8gQXR0cmlidXRlICd2YWx1ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcn
KQotICAgIHsidmFsdWUiLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRl
cm5hbDo6dmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VWOEludGVybmFsOjp2YWx1ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCisgICAgeyJ2YWx1ZSIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOElu
dGVybmFsOjp2YWx1ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlYWRvbmx5VmFsdWUnIChUeXBlOiAncmVh
ZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InJlYWRvbmx5VmFsdWUiLCBUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6cmVhZG9ubHlWYWx1ZUF0
dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZWFkb25seVZhbHVl
IiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnJlYWRvbmx5
VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8v
IEF0dHJpYnV0ZSAnY2FjaGVkVmFsdWUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2Fj
aGVkQXR0cmlidXRlJykKLSAgICB7ImNhY2hlZFZhbHVlIiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0ckdldHRlckNhbGxiYWNrLCBU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkVmFsdWVB
dHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiY2FjaGVkVmFsdWUiLCBU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkVmFsdWVB
dHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOElu
dGVybmFsOjpjYWNoZWRWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiAgICAgLy8gQXR0cmlidXRlICdwb3J0cycgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUn
IEV4dEF0dHI6ICcnKQotICAgIHsicG9ydHMiLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlVjhJbnRlcm5hbDo6cG9ydHNBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAorICAgIHsicG9ydHMiLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJ
bnRlcm5hbDo6cG9ydHNBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAogICAgIC8vIEF0dHJpYnV0ZSAnY2FjaGVkUmVhZG9ubHlWYWx1ZScgKFR5cGU6ICdyZWFkb25s
eSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWNoZWRBdHRyaWJ1dGUnKQotICAgIHsiY2FjaGVkUmVh
ZG9ubHlWYWx1ZSIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFs
OjpjYWNoZWRSZWFkb25seVZhbHVlQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKKyAgICB7ImNhY2hlZFJlYWRvbmx5VmFsdWUiLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFj
aywgMCwgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiB9OwogCiBzdGF0aWMgY29uc3QgVjhET01Db25m
aWd1cmF0aW9uOjpCYXRjaGVkTWV0aG9kIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZU1ldGhvZHNbXSA9IHsKQEAgLTMwOCwxNCArMzA4LDE0IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2Fs
bGJhY2soCiAgICAgcmV0dXJuIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOElu
dGVybmFsOjpjb25zdHJ1Y3RvcihhcmdzKTsKIH0KIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVz
Yywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3Js
ZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgp
OwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAg
ZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUo
ZGVzYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlOjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIFY4VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZUF0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZUF0dHJzKSwKLSAgICAgICAgVjhUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlTWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VNZXRob2RzKSwgaXNvbGF0ZSk7CisgICAgICAgIFY4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZU1ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoVjhU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlTWV0aG9kcyksIGlzb2xhdGUsIGN1cnJl
bnRXb3JsZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4g
c29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICBkZXNjLT5TZXRDYWxsSGFuZGxl
cihWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJh
Y2spOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gZGVzYy0+
SW5zdGFuY2VUZW1wbGF0ZSgpOwpAQCAtMzI5LDIzICszMjksMjMgQEAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWUKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQor
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBk
YXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVE
YXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29y
bGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFw
KHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQo
JmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxk
VHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6Okhh
bmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUp
LCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSku
YWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50
V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxh
dGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRl
bXBsOwogfQogCi1ib29sIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6SGFz
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVl
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBl
KQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0
YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxk
VHlwZSk7CiB9CiAKIGJvb2wgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpI
YXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuaAppbmRleCBjYTkyY2M4MGJiYzkzN2Y5ZDgzZDJhZTQwN2QxM2U5MDc3
OWE3ZTM4Li5hODk5YThiM2YwNmQ1NTgwNDRmYmZiNTNhNjBmYjU5ZTdjZjUxYTU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCkBA
IC03Nyw2ICs3NywxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wbCwgdjg6OgogICAgIHJldHVybiB3cmFw
KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBN
YWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51
bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIg
PSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3
cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdy
YXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3Mg
SG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjhGYXN0KFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcGws
IGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkK
IHsKQEAgLTg5LDYgKzEwMCwyNSBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhG
YXN0KFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcGwsCiB9CiAKIHRlbXBs
YXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwg
V3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIu
R2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisg
ICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFp
bldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29u
dGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5l
ciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFz
dEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSog
d3JhcHBhYmxlKQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgp
LCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29u
dGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPiBp
bXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFi
bGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBh
YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwCmluZGV4IDFkZmZhYzhlOGMyODc3Y2JmNWI2ZmQ1Nzhj
YWExMjA1ZWFlODY5ODcuLjVmNjUwYjgwZGE0MGFmMjU2YTlmZjk1ZGZhNjRlNDdhNWMzM2NkYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcApAQCAtNDk4LDE5ICs0OTgsMTkgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3Rvcihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
CiBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVz
dFR5cGVkZWZzQXR0cnNbXSA9IHsKICAgICAvLyBBdHRyaWJ1dGUgJ3Vuc2lnbmVkTG9uZ0xvbmdB
dHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJ1bnNpZ25lZExvbmdM
b25nQXR0ciIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0
ckdldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25n
QXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJ1bnNpZ25lZExv
bmdMb25nQXR0ciIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRy
QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdM
b25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8g
QXR0cmlidXRlICdpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUnIChUeXBlOiAnYXR0cmli
dXRlJyBFeHRBdHRyOiAnSW1tdXRhYmxlJykKLSAgICB7ImltbXV0YWJsZVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmltbXV0YWJsZVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6aW1tdXRh
YmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKKyAgICB7ImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIsIFRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVl
QXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1
dGUgJ1Rlc3RTdWJPYmonIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykK
LSAgICB7IlRlc3RTdWJPYmoiLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpUZXN0VHlwZWRlZnND
b25zdHJ1Y3RvckdldHRlciwgMCwgJlY4VGVzdFN1Yk9iajo6aW5mbywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiVGVzdFN1Yk9i
aiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OlRlc3RUeXBlZGVmc0NvbnN0cnVjdG9yR2V0dGVy
LCAwLCAwLCAwLCAmVjhUZXN0U3ViT2JqOjppbmZvLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdhdHRyV2l0
aEdldHRlckV4Y2VwdGlvbicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsi
YXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0
aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVkZWZzVjhJbnRlcm5h
bDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAorICAgIHsiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCBUZXN0VHlwZWRlZnNWOEludGVy
bmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVk
ZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2ss
IDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnYXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24nIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7ImF0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJF
eGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAg
ICB7ImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0
cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4SW50
ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0cmluZ0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJzdHJpbmdBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVy
bmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCisgICAgeyJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsIFRlc3RU
eXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRl
ckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8g
QXR0cmlidXRlICdzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbicgKFR5cGU6ICdhdHRyaWJ1
dGUnIEV4dEF0dHI6ICcnKQotICAgIHsic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCBU
ZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJH
ZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3Ry
aW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVkZWZz
VjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJh
Y2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmln
dXJhdGlvbjo6QmF0Y2hlZE1ldGhvZCBWOFRlc3RUeXBlZGVmc01ldGhvZHNbXSA9IHsKQEAgLTUz
MywxNCArNTMzLDE0IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RUeXBlZGVmczo6Y29u
c3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAgICAgcmV0dXJuIFRlc3RU
eXBlZGVmc1Y4SW50ZXJuYWw6OmNvbnN0cnVjdG9yKGFyZ3MpOwogfQogCi1zdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVt
cGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29s
YXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1w
bGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBk
ZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+
IGRlZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJh
dGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RUeXBlZGVmcyIsIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RUeXBlZGVmczo6aW50ZXJuYWxGaWVs
ZENvdW50LAogICAgICAgICBWOFRlc3RUeXBlZGVmc0F0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFY4
VGVzdFR5cGVkZWZzQXR0cnMpLAotICAgICAgICBWOFRlc3RUeXBlZGVmc01ldGhvZHMsIFdURl9B
UlJBWV9MRU5HVEgoVjhUZXN0VHlwZWRlZnNNZXRob2RzKSwgaXNvbGF0ZSk7CisgICAgICAgIFY4
VGVzdFR5cGVkZWZzTWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RUeXBlZGVmc01ldGhv
ZHMpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVs
dFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAgICAg
ZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjhUZXN0VHlwZWRlZnM6OmNvbnN0cnVjdG9yQ2FsbGJhY2sp
OwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gZGVzYy0+SW5z
dGFuY2VUZW1wbGF0ZSgpOwpAQCAtNTUxLDI1ICs1NTEsMjUgQEAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRl
KHY4OjoKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFdpdGhTZXF1ZW5jZUFyZycK
ICAgICBjb25zdCBpbnQgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnYyA9IDE7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRo
b2RXaXRoU2VxdWVuY2VBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+cmF3VGVtcGxhdGUoJlY4c2VxdWVuY2U8U2VyaWFsaXplZFNjcmlwdFZhbHVlPjo6aW5mbywg
d29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhv
ZFdpdGhTZXF1ZW5jZUFyZ0FyZ3ZbbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnY10gPSB7IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOHNlcXVlbmNlPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT46OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6Okhh
bmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWduYXR1cmUgPSB2ODo6
U2lnbmF0dXJlOjpOZXcoZGVzYywgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnYywgbWV0aG9kV2l0
aFNlcXVlbmNlQXJnQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2wo
Im1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RU
eXBlZGVmc1Y4SW50ZXJuYWw6Om1ldGhvZFdpdGhTZXF1ZW5jZUFyZ01ldGhvZENhbGxiYWNrLCB2
OFVuZGVmaW5lZCgpLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWduYXR1cmUpKTsKIAogICAgIC8v
IEN1c3RvbSBTaWduYXR1cmUgJ251bGxhYmxlQXJyYXlBcmcnCiAgICAgY29uc3QgaW50IG51bGxh
YmxlQXJyYXlBcmdBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBudWxsYWJsZUFycmF5QXJnQXJndltudWxsYWJsZUFycmF5QXJnQXJnY10gPSB7IFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZv
LCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbnVs
bGFibGVBcnJheUFyZ0FyZ3ZbbnVsbGFibGVBcnJheUFyZ0FyZ2NdID0geyBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgY3Vy
cmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG51bGxhYmxl
QXJyYXlBcmdTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbnVsbGFibGVBcnJh
eUFyZ0FyZ2MsIG51bGxhYmxlQXJyYXlBcmdBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJp
bmc6Ok5ld1N5bWJvbCgibnVsbGFibGVBcnJheUFyZyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6Om51bGxhYmxlQXJyYXlBcmdNZXRob2RDYWxsYmFj
aywgdjhVbmRlZmluZWQoKSwgbnVsbGFibGVBcnJheUFyZ1NpZ25hdHVyZSkpOwogCiAgICAgLy8g
Q3VzdG9tIFNpZ25hdHVyZSAnc3RyaW5nQXJyYXlGdW5jdGlvbicKICAgICBjb25zdCBpbnQgc3Ry
aW5nQXJyYXlGdW5jdGlvbkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2W3N0cmluZ0FycmF5RnVuY3Rpb25BcmdjXSA9
IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3Ry
aW5nW106OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0aW9uQXJnY10g
PSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0
cmluZ1tdOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNp
Z25hdHVyZT4gc3RyaW5nQXJyYXlGdW5jdGlvblNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5l
dyhkZXNjLCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJnYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Yp
OwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdHJpbmdBcnJheUZ1bmN0
aW9uIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6
c3RyaW5nQXJyYXlGdW5jdGlvbk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdHJpbmdB
cnJheUZ1bmN0aW9uU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdzdHJp
bmdBcnJheUZ1bmN0aW9uMicKICAgICBjb25zdCBpbnQgc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmdj
ID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1
bmN0aW9uMkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8sIHdvcmxk
VHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJh
eUZ1bmN0aW9uMkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmdjXSA9IHsgVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8sIGN1
cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBzdHJpbmdB
cnJheUZ1bmN0aW9uMlNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBzdHJpbmdB
cnJheUZ1bmN0aW9uMkFyZ2MsIHN0cmluZ0FycmF5RnVuY3Rpb24yQXJndik7CiAgICAgcHJvdG8t
PlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN0cmluZ0FycmF5RnVuY3Rpb24yIiksIHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXJyYXlG
dW5jdGlvbjJNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgc3RyaW5nQXJyYXlGdW5jdGlv
bjJTaWduYXR1cmUpKTsKIApAQCAtNTc4LDIzICs1NzgsMjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRl
KHY4OjoKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IFY4VGVzdFR5cGVkZWZzOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gVjhUZXN0VHlwZWRlZnM6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29s
YXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQ
ZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBs
YXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50
ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBs
YXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRU
eXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1
cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAog
ICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RUeXBlZGVm
c1RlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3
b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0
ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUoZGF0YS0+cmF3
VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRU
eXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8s
IHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0VHlwZWRlZnM6Okhh
c0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RUeXBlZGVmczo6SGFz
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdv
cmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhh
c0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhU
ZXN0VHlwZWRlZnM6Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuaAppbmRleCBlYjM4MDQ0
ZGI0OWFkMDFlNTg4YzljZWZkYTU2MWYwZjZlZmE3ZTA0Li4yNWI3YTVhM2YxMDQzNzFmMGM2ZWZj
ZGUxMjc0MDc2OWM4MTVhNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuaApAQCAtNzYsNiArNzYsMTcgQEAg
aW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RUeXBlZGVmcyogaW1wbCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmUKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhG
b3JNYWluV29ybGQoVGVzdFR5cGVkZWZzKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJUKHdvcmxk
VHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisg
ICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQo
aW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30K
KwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RUeXBlZGVmcyogaW1wbCwgY29u
c3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpA
QCAtODgsNiArOTksMjUgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChU
ZXN0VHlwZWRlZnMqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYKIH0KIAogdGVtcGxhdGU8
Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRlc3RUeXBlZGVmcyogaW1wbCwgY29u
c3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQorewor
ICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxk
KTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRh
aW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdy
YXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3Jh
cChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwg
VGVzdFR5cGVkZWZzID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdy
YXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChp
bXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3Mg
SG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RUeXBlZGVmcyA+IGltcGwsIGNvbnN0IEhv
bGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKICAgICBy
ZXR1cm4gdG9WOEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAppbmRleCBjMDUwMzNmMGI2Y2E1YzM2
OThhYTc2NDU4Mzk2ZmFhM2MxMmYwZWE2Li40NDE1ZDg1MzU1M2M2Y2EyMjhlYTNjYWEyMjIwN2Uw
MjJjNmFlMzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRh
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaApA
QCAtODQsNiArODQsMTQgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0V3JhcHBlckZvck1haW5X
b3JsZChUKiBvYmplY3QpCisgICAgeworICAgICAgICBpZiAobWFpbldvcmxkV3JhcHBlcklzU3Rv
cmVkSW5PYmplY3Qob2JqZWN0KSAmJiBpc01haW5Xb3JsZE9iamVjdChvYmplY3QpKQorICAgICAg
ICAgICAgcmV0dXJuIGdldFdyYXBwZXJGcm9tT2JqZWN0KG9iamVjdCk7CisgICAgICAgIHJldHVy
biBtYWluV29ybGRTdG9yZSgpLT5nZXQob2JqZWN0KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXIoVCogb2JqZWN0LCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBjb25zdCBXcmFw
cGVyQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICB7CiAgICAgICAgIGlmIChtYWlu
V29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChvYmplY3QpICYmIGlzTWFpbldvcmxkT2JqZWN0
KG9iamVjdCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
Q29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZp
Z3VyYXRpb24uY3BwCmluZGV4IDVmZTdiY2ZhY2RkZTU2NTcyYjVlMjBiMGViMzY3ZTU2MGRlY2Fl
OWQuLjU2MWNhYmQ4MmI0Y2IzNDYzNGUxMjAxYzU4ZGFlNTBlZGZlNDlhNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmNwcApAQCAtMzMs
MTAgKzMzLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBWOERPTUNvbmZpZ3Vy
YXRpb246OmJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1w
bGF0ZT4gaW5zdGFuY2UsIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90b3R5cGUs
IGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUqIGF0dHJpYnV0ZXMsIHNpemVfdCBhdHRyaWJ1dGVDb3Vu
dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2b2lkIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hD
b25maWd1cmVBdHRyaWJ1dGVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5j
ZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvdHlwZSwgY29uc3QgQmF0Y2hl
ZEF0dHJpYnV0ZSogYXR0cmlidXRlcywgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0cmlidXRlQ291bnQ7ICsraSkKLSAgICAgICAgY29uZmln
dXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90b3R5cGUsIGF0dHJpYnV0ZXNbaV0sIGlzb2xhdGUp
OworICAgICAgICBjb25maWd1cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvdHlwZSwgYXR0cmli
dXRlc1tpXSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIHZvaWQgVjhET01Db25m
aWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyh2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBmdW5jdGlvbkRlc2NyaXB0b3IsIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBs
YXRlPiBwcm90b3R5cGUsIGNvbnN0IEJhdGNoZWRDb25zdGFudCogY29uc3RhbnRzLCBzaXplX3Qg
Y29uc3RhbnRDb3VudCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCkBAIC01NSw3ICs1NSw3IEBAIHZv
aWQgVjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUNhbGxiYWNrcyh2ODo6SGFuZGxl
PHY4OjpPYmplY3RUZW1wbGF0ZT4KIH0KIAogdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IFY4RE9N
Q29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGZ1bmN0aW9uRGVzY3JpcHRvciwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFt
ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHBhcmVudENsYXNzLAotICAg
IHNpemVfdCBmaWVsZENvdW50LCBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiBhdHRyaWJ1dGVzLCBz
aXplX3QgYXR0cmlidXRlQ291bnQsIGNvbnN0IEJhdGNoZWRNZXRob2QqIGNhbGxiYWNrcywgc2l6
ZV90IGNhbGxiYWNrQ291bnQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorICAgIHNpemVfdCBmaWVs
ZENvdW50LCBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiBhdHRyaWJ1dGVzLCBzaXplX3QgYXR0cmli
dXRlQ291bnQsIGNvbnN0IEJhdGNoZWRNZXRob2QqIGNhbGxiYWNrcywgc2l6ZV90IGNhbGxiYWNr
Q291bnQsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3Js
ZFR5cGUpCiB7CiAgICAgZnVuY3Rpb25EZXNjcmlwdG9yLT5TZXRDbGFzc05hbWUodjg6OlN0cmlu
Zzo6TmV3U3ltYm9sKGludGVyZmFjZU5hbWUpKTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRl
bXBsYXRlPiBpbnN0YW5jZSA9IGZ1bmN0aW9uRGVzY3JpcHRvci0+SW5zdGFuY2VUZW1wbGF0ZSgp
OwpAQCAtNzAsNyArNzAsNyBAQCB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gVjhET01Db25maWd1
cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2OAogICAgIH0KIAogICAg
IGlmIChhdHRyaWJ1dGVDb3VudCkKLSAgICAgICAgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKGlu
c3RhbmNlLCBmdW5jdGlvbkRlc2NyaXB0b3ItPlByb3RvdHlwZVRlbXBsYXRlKCksIGF0dHJpYnV0
ZXMsIGF0dHJpYnV0ZUNvdW50LCBpc29sYXRlKTsKKyAgICAgICAgYmF0Y2hDb25maWd1cmVBdHRy
aWJ1dGVzKGluc3RhbmNlLCBmdW5jdGlvbkRlc2NyaXB0b3ItPlByb3RvdHlwZVRlbXBsYXRlKCks
IGF0dHJpYnV0ZXMsIGF0dHJpYnV0ZUNvdW50LCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsK
ICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZSA9IHY4OjpTaWdu
YXR1cmU6Ok5ldyhmdW5jdGlvbkRlc2NyaXB0b3IpOwogICAgIGlmIChjYWxsYmFja0NvdW50KQog
ICAgICAgICBiYXRjaENvbmZpZ3VyZUNhbGxiYWNrcyhmdW5jdGlvbkRlc2NyaXB0b3ItPlByb3Rv
dHlwZVRlbXBsYXRlKCksIGRlZmF1bHRTaWduYXR1cmUsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6OkRvbnREZWxldGUpLCBjYWxsYmFja3MsIGNhbGxiYWNrQ291bnQsIGlz
b2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db25m
aWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRp
b24uaAppbmRleCA4ZjljOTFhMGFhMzBmOTg0NDA4NWI4NzBiOGVjOWE1ZGNlMmExY2ZmLi5lOTVi
MTU4NmM0NjUzZjM3MjhiNTJjMDhiZjIxZTk1YzVkNzY1ZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaApAQCAtNDcsMTMgKzQ3LDE1IEBA
IHB1YmxpYzoKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgbmFtZTsKICAgICAgICAgdjg6OkFj
Y2Vzc29yR2V0dGVyIGdldHRlcjsKICAgICAgICAgdjg6OkFjY2Vzc29yU2V0dGVyIHNldHRlcjsK
KyAgICAgICAgdjg6OkFjY2Vzc29yR2V0dGVyIGdldHRlckZvck1haW5Xb3JsZDsKKyAgICAgICAg
djg6OkFjY2Vzc29yU2V0dGVyIHNldHRlckZvck1haW5Xb3JsZDsKICAgICAgICAgV3JhcHBlclR5
cGVJbmZvKiBkYXRhOwogICAgICAgICB2ODo6QWNjZXNzQ29udHJvbCBzZXR0aW5nczsKICAgICAg
ICAgdjg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZTsKICAgICAgICAgYm9vbCBvblByb3Rv
dHlwZTsKICAgICB9OwogCi0gICAgc3RhdGljIHZvaWQgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVz
KHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVt
cGxhdGU+LCBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiwgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LCB2
ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2b2lkIGJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyh2
ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBs
YXRlPiwgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSosIHNpemVfdCBhdHRyaWJ1dGVDb3VudCwgdjg6
Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpOwogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgT2JqZWN0T3JUZW1wbGF0ZT4KICAgICBzdGF0aWMgaW5saW5lIHZvaWQgY29u
ZmlndXJlQXR0cmlidXRlKHY4OjpIYW5kbGU8T2JqZWN0T3JUZW1wbGF0ZT4gaW5zdGFuY2UsIHY4
OjpIYW5kbGU8T2JqZWN0T3JUZW1wbGF0ZT4gcHJvdG90eXBlLCBjb25zdCBCYXRjaGVkQXR0cmli
dXRlJiBhdHRyaWJ1dGUsIHY4OjpJc29sYXRlKikKQEAgLTY2LDYgKzY4LDI1IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlLmF0dHJpYnV0ZSk7CiAgICAgfQogCisgICAgdGVtcGxhdGU8
Y2xhc3MgT2JqZWN0T3JUZW1wbGF0ZT4KKyAgICBzdGF0aWMgaW5saW5lIHZvaWQgY29uZmlndXJl
QXR0cmlidXRlKHY4OjpIYW5kbGU8T2JqZWN0T3JUZW1wbGF0ZT4gaW5zdGFuY2UsIHY4OjpIYW5k
bGU8T2JqZWN0T3JUZW1wbGF0ZT4gcHJvdG90eXBlLCBjb25zdCBCYXRjaGVkQXR0cmlidXRlJiBh
dHRyaWJ1dGUsIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBl
KQorICAgIHsKKyAgICAgICAgdjg6OkFjY2Vzc29yR2V0dGVyIGdldHRlciA9IGF0dHJpYnV0ZS5n
ZXR0ZXI7CisgICAgICAgIHY4OjpBY2Nlc3NvclNldHRlciBzZXR0ZXIgPSBhdHRyaWJ1dGUuc2V0
dGVyOworICAgICAgICBpZiAoY3VycmVudFdvcmxkVHlwZSA9PSBNYWluV29ybGQpIHsKKyAgICAg
ICAgICAgIGlmIChhdHRyaWJ1dGUuZ2V0dGVyRm9yTWFpbldvcmxkKQorICAgICAgICAgICAgICAg
IGdldHRlciA9IGF0dHJpYnV0ZS5nZXR0ZXJGb3JNYWluV29ybGQ7CisgICAgICAgICAgICBpZiAo
YXR0cmlidXRlLnNldHRlckZvck1haW5Xb3JsZCkKKyAgICAgICAgICAgICAgICBzZXR0ZXIgPSBh
dHRyaWJ1dGUuc2V0dGVyRm9yTWFpbldvcmxkOworICAgICAgICB9CisgICAgICAgIChhdHRyaWJ1
dGUub25Qcm90b3R5cGUgPyBwcm90b3R5cGUgOiBpbnN0YW5jZSktPlNldEFjY2Vzc29yKHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbChhdHRyaWJ1dGUubmFtZSksCisgICAgICAgICAgICBnZXR0ZXIsCisg
ICAgICAgICAgICBzZXR0ZXIsCisgICAgICAgICAgICB2ODo6RXh0ZXJuYWw6Ok5ldyhhdHRyaWJ1
dGUuZGF0YSksCisgICAgICAgICAgICBhdHRyaWJ1dGUuc2V0dGluZ3MsCisgICAgICAgICAgICBh
dHRyaWJ1dGUuYXR0cmlidXRlKTsKKyAgICB9CisKICAgICAvLyBCYXRjaGVkQ29uc3RhbnQgdHJh
bnNsYXRlcyBpbnRvIGNhbGxzIHRvIFNldCgpIGZvciBzZXR0aW5nIHVwIGFuIG9iamVjdCdzCiAg
ICAgLy8gY29uc3RhbnRzLiBJdCBzZXRzIHRoZSBjb25zdGFudCBvbiBib3RoIHRoZSBGdW5jdGlv
blRlbXBsYXRlIGFuZCB0aGUKICAgICAvLyBPYmplY3RUZW1wbGF0ZS4gUHJvcGVydHlBdHRyaWJ1
dGVzIGlzIGFsd2F5cyBSZWFkT25seS4KQEAgLTg0LDcgKzEwNSw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyB2b2lkIGJhdGNoQ29uZmlndXJlQ2FsbGJhY2tzKHY4OjpIYW5kbGU8djg6Ok9iamVj
dFRlbXBsYXRlPiwgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiwgdjg6OlByb3BlcnR5QXR0cmli
dXRlLCBjb25zdCBCYXRjaGVkTWV0aG9kKiwgc2l6ZV90IGNhbGxiYWNrQ291bnQsIHY4OjpJc29s
YXRlKik7CiAKLSAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGNvbmZpZ3VyZVRl
bXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiwgY29uc3QgY2hhciog
aW50ZXJmYWNlTmFtZSwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHBhcmVu
dENsYXNzLCBzaXplX3QgZmllbGRDb3VudCwgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSosIHNpemVf
dCBhdHRyaWJ1dGVDb3VudCwgY29uc3QgQmF0Y2hlZE1ldGhvZCosIHNpemVfdCBjYWxsYmFja0Nv
dW50LCB2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4g
Y29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+LCBj
b25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gcGFyZW50Q2xhc3MsIHNpemVfdCBmaWVsZENvdW50LCBjb25zdCBCYXRjaGVkQXR0cmli
dXRlKiwgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LCBjb25zdCBCYXRjaGVkTWV0aG9kKiwgc2l6ZV90
IGNhbGxiYWNrQ291bnQsIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCA1OTViZGY4OTlmZGZjZjYz
YTMxZTkwMjBkMGUwOGVhMDEyY2I3NmU1Li43NTU3MjJiNGZiNjE1NmI1OGM4MDRjY2U4NTIwMzk2
YjUzMjdiOGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTYxMSw0ICs2MTEsOSBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOChET01XaW5kb3cqIHdpbmRvdywgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbgogICAgIHJldHVybiBnbG9iYWw7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4Rm9yTWFpbldvcmxkKERPTVdpbmRvdyogd2luZG93LCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgcmV0
dXJuIHRvVjgod2luZG93LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhFdmVudFRhcmdldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhFdmVudFRhcmdldEN1c3RvbS5jcHAKaW5kZXggZTc4OTZjYzExMTk1MWZiODgz
OTA2MWZjOWY1Y2U0NjdiOWQ4ODk5Ny4uM2Y3OWNhN2QwYmI4YmQwNjRiOWE4YjZhNDI3MmE3N2Uz
YzkyMzNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RXZlbnRUYXJnZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEV2ZW50VGFyZ2V0Q3VzdG9tLmNwcApAQCAtNTMsNiArNTMsMTEgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjgoRXZlbnRUYXJnZXQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gY3JlYXRpb25Db24KICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoRXZlbnRUYXJnZXQqIGltcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sK
KyAgICByZXR1cm4gdG9WOChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiAj
dW5kZWYgVFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1
c3RvbS5jcHAKaW5kZXggZTExOWVlNWJmMDE3Y2JiNTQ1ZmEyNDM4ZTExNTJiY2M1Y2Y2NmIyZS4u
NDY3ZTFhNmJmYWI2M2VmMjkyYjM1OWUzMjc2MWYwMjY1YWE4YTY0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwCkBAIC0x
MDEsNiArMTAxLDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KElEQkFueSogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsCiAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQo
SURCQW55KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgcmV0dXJuIHRvVjgoaW1wbCwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNaWNyb0RhdGFJdGVtVmFsdWVDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWljcm9EYXRhSXRlbVZhbHVlQ3VzdG9tLmNwcApp
bmRleCA5NTNiYmVjMTUwN2JkMjQ2Y2JmN2M3M2Q5ZDQxYjE0Y2RkNzllMmQyLi4yNjBhZTc4OWFh
ZTA5YTlhZTgyZDZlOWZmNTM5MDczMzYxNjczYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNaWNyb0RhdGFJdGVtVmFsdWVDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1pY3JvRGF0YUl0ZW1WYWx1ZUN1
c3RvbS5jcHAKQEAgLTQ4LDYgKzQ4LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KE1p
Y3JvRGF0YUl0ZW1WYWx1ZSogaXRlbVZhbHVlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+CiAgICAg
cmV0dXJuIHY4U3RyaW5nKGl0ZW1WYWx1ZS0+Z2V0U3RyaW5nKCksIGlzb2xhdGUpOwogfQogCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChNaWNyb0RhdGFJdGVtVmFsdWUq
IGl0ZW1WYWx1ZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQoreworICAgIHJldHVybiB0b1Y4KGl0ZW1WYWx1ZSwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1JQ1JPREFUQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNv
bnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29y
a2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggOTA2YTE0ZDNhYjc0YWMwN2NjZDA3MzJmYzBhNzMw
OTE0ODJlYjlkYy4uNzJmNmUzZDRjMDkwMzQwZTUwZGE3YWQ4NWRlOGM4MWQxNmI3M2YwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29y
a2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTE0MCw2ICsxNDAsMTEgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoV29ya2VyQ29udGV4dCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkMKICAgICByZXR1cm4gZ2xvYmFsOwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOEZvck1haW5Xb3JsZChXb3JrZXJDb250ZXh0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgcmV0dXJu
IHRvVjgoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5p
ZGwKaW5kZXggNWQ4M2FkZWVjMTJhODQwYWVkMDQ0MGYxYmNhNWQ3MDVjYTYzNDAzYS4uNzhiOTQ5
NzhhMzYwM2M3NTk3OTI0MjgzNzc2YzlhN2Y3MDUwMTJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bApAQCAtMjcsNyArMjcsNyBAQAogCiAgICAgLy8gRE9NIExldmVsIDEgQ29yZQogCi0gICAgW1Ry
ZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyB0YWdOYW1lOworICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGwsIFY4UGVyV29y
bGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0YWdOYW1lOwogCiAgICAg
W1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gRE9NU3RyaW5nIGdldEF0dHJpYnV0ZShp
biBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgbmFtZSk7CiAgICAgW09i
akNMZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gdm9pZCBzZXRBdHRyaWJ1dGUoaW4gW09wdGlvbmFs
PURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWUsCkBAIC00Myw3ICs0Myw3IEBACiAK
ICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykKICAgICAvLyBGb3IgT2JqQyB0aGlz
IGlzIGRlZmluZWQgb24gTm9kZSBmb3IgbGVnYWN5IHN1cHBvcnQuCi0gICAgcmVhZG9ubHkgYXR0
cmlidXRlIE5hbWVkTm9kZU1hcCAgICAgYXR0cmlidXRlczsKKyAgICBbVjhQZXJXb3JsZEJpbmRp
bmdzXSByZWFkb25seSBhdHRyaWJ1dGUgTmFtZWROb2RlTWFwICAgICBhdHRyaWJ1dGVzOwogICAg
IGJvb2xlYW4gICAgICAgICAgICBoYXNBdHRyaWJ1dGVzKCk7CiAjZW5kaWYKIApAQCAtNjcsMjMg
KzY3LDIzIEBACiAgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gYm9vbGVhbiBoYXNB
dHRyaWJ1dGVOUyhpbiBbVHJlYXROdWxsQXM9TnVsbFN0cmluZyxPcHRpb25hbD1EZWZhdWx0SXNV
bmRlZmluZWRdIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01T
dHJpbmcgbG9jYWxOYW1lKTsKIAotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NTdHlsZURlY2xh
cmF0aW9uIHN0eWxlOworICAgIFtWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBDU1NTdHlsZURlY2xhcmF0aW9uIHN0eWxlOwogCiAgICAgLy8gQ29tbW9uIGV4dGVuc2lvbnMK
IAotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG9mZnNldExlZnQ7Ci0gICAgcmVhZG9ubHkg
YXR0cmlidXRlIGxvbmcgb2Zmc2V0VG9wOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG9m
ZnNldFdpZHRoOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG9mZnNldEhlaWdodDsKLSAg
ICBbSW1wbGVtZW50ZWRBcz1iaW5kaW5nc09mZnNldFBhcmVudF0gcmVhZG9ubHkgYXR0cmlidXRl
IEVsZW1lbnQgb2Zmc2V0UGFyZW50OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGNsaWVu
dExlZnQ7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgY2xpZW50VG9wOwotICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBsb25nIGNsaWVudFdpZHRoOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBs
b25nIGNsaWVudEhlaWdodDsKLSAgICAgICAgICAgICBhdHRyaWJ1dGUgbG9uZyBzY3JvbGxMZWZ0
OwotICAgICAgICAgICAgIGF0dHJpYnV0ZSBsb25nIHNjcm9sbFRvcDsKLSAgICByZWFkb25seSBh
dHRyaWJ1dGUgbG9uZyBzY3JvbGxXaWR0aDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBz
Y3JvbGxIZWlnaHQ7CisgICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRl
IGxvbmcgb2Zmc2V0TGVmdDsKKyAgICBbVjhQZXJXb3JsZEJpbmRpbmdzXSByZWFkb25seSBhdHRy
aWJ1dGUgbG9uZyBvZmZzZXRUb3A7CisgICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gcmVhZG9ubHkg
YXR0cmlidXRlIGxvbmcgb2Zmc2V0V2lkdGg7CisgICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gcmVh
ZG9ubHkgYXR0cmlidXRlIGxvbmcgb2Zmc2V0SGVpZ2h0OworICAgIFtJbXBsZW1lbnRlZEFzPWJp
bmRpbmdzT2Zmc2V0UGFyZW50LCBWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBFbGVtZW50IG9mZnNldFBhcmVudDsKKyAgICBbVjhQZXJXb3JsZEJpbmRpbmdzXSByZWFkb25s
eSBhdHRyaWJ1dGUgbG9uZyBjbGllbnRMZWZ0OworICAgIFtWOFBlcldvcmxkQmluZGluZ3NdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBsb25nIGNsaWVudFRvcDsKKyAgICBbVjhQZXJXb3JsZEJpbmRpbmdz
XSByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBjbGllbnRXaWR0aDsKKyAgICBbVjhQZXJXb3JsZEJp
bmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBjbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIGxvbmcgc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICBbVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgbG9uZyBzY3JvbGxUb3A7Cisg
ICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgc2Nyb2xsV2lk
dGg7CisgICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgc2Ny
b2xsSGVpZ2h0OwogCiAgICAgdm9pZCBmb2N1cygpOwogICAgIHZvaWQgYmx1cigpOwpAQCAtOTgs
MTEgKzk4LDExIEBACiAgICAgLy8gSFRNTCA1CiAgICAgTm9kZUxpc3QgZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgbmFtZSk7
CiAKLSAgICBbUmVmbGVjdD1jbGFzc10gYXR0cmlidXRlIERPTVN0cmluZyBjbGFzc05hbWU7Ci0g
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVRva2VuTGlzdCBjbGFzc0xpc3Q7CisgICAgW1JlZmxl
Y3Q9Y2xhc3MsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIERPTVN0cmluZyBjbGFzc05h
bWU7CisgICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIERPTVRva2Vu
TGlzdCBjbGFzc0xpc3Q7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExB
TkdVQUdFX0pBVkFTQ1JJUFQKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nTWFwIGRh
dGFzZXQ7CisgICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZ01hcCBkYXRhc2V0OwogI2VuZGlmCiAKICAgICAvLyBOb2RlU2VsZWN0b3IgLSBTZWxlY3Rv
ciBBUEkKQEAgLTExNiwxNyArMTE2LDE3IEBACiAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OwogCiAgICAgLy8gRWxlbWVudFRyYXZlcnNhbCBBUEkKLSAgICByZWFkb25seSBhdHRyaWJ1dGUg
RWxlbWVudCBmaXJzdEVsZW1lbnRDaGlsZDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVu
dCBsYXN0RWxlbWVudENoaWxkOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IHByZXZp
b3VzRWxlbWVudFNpYmxpbmc7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgbmV4dEVs
ZW1lbnRTaWJsaW5nOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGNoaWxk
RWxlbWVudENvdW50OworICAgIFtWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBFbGVtZW50IGZpcnN0RWxlbWVudENoaWxkOworICAgIFtWOFBlcldvcmxkQmluZGluZ3NdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IGxhc3RFbGVtZW50Q2hpbGQ7CisgICAgW1Y4UGVyV29y
bGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgcHJldmlvdXNFbGVtZW50U2li
bGluZzsKKyAgICBbVjhQZXJXb3JsZEJpbmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVu
dCBuZXh0RWxlbWVudFNpYmxpbmc7CisgICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgY2hpbGRFbGVtZW50Q291bnQ7CiAKICAgICAvLyBTaGFk
b3dBd2FyZSBBUEkKICNpZiBkZWZpbmVkKEVOQUJMRV9TSEFET1dfRE9NKSAmJiBFTkFCTEVfU0hB
RE9XX0RPTSAmJiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFT
Q1JJUFQKLSAgICBbUmVmbGVjdD1wc2V1ZG8sIFY4RW5hYmxlZEF0UnVudGltZT1zaGFkb3dET00s
IEltcGxlbWVudGVkQXM9cHNldWRvXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdlYmtpdFBzZXVkbzsK
KyAgICBbUmVmbGVjdD1wc2V1ZG8sIFY4RW5hYmxlZEF0UnVudGltZT1zaGFkb3dET00sIEltcGxl
bWVudGVkQXM9cHNldWRvLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBET01TdHJpbmcg
d2Via2l0UHNldWRvOwogICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9c2hhZG93RE9NLCBJbXBsZW1l
bnRlZEFzPWNyZWF0ZVNoYWRvd1Jvb3RdIFNoYWRvd1Jvb3Qgd2Via2l0Q3JlYXRlU2hhZG93Um9v
dCgpIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9c2hhZG93
RE9NLCBJbXBsZW1lbnRlZEFzPXNoYWRvd1Jvb3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTaGFkb3dS
b290IHdlYmtpdFNoYWRvd1Jvb3Q7CisgICAgW1Y4RW5hYmxlZEF0UnVudGltZT1zaGFkb3dET00s
IEltcGxlbWVudGVkQXM9c2hhZG93Um9vdCwgVjhQZXJXb3JsZEJpbmRpbmdzXSByZWFkb25seSBh
dHRyaWJ1dGUgU2hhZG93Um9vdCB3ZWJraXRTaGFkb3dSb290OwogI2VuZGlmCiAKICAgICAvLyBE
T00gNApAQCAtMTQxLDcgKzE0MSw3IEBACiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElW
RV9DKSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgIC8vIE9iamVjdGl2ZS1DIGV4dGVuc2lv
bnMKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVyVGV4dDsKKyAgICBbVjhQ
ZXJXb3JsZEJpbmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVyVGV4dDsK
ICNlbmRpZgogCiAjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9G
VUxMU0NSRUVOX0FQSQpAQCAtMTU2LDQxICsxNTYsNDEgQEAKICAgICBbQ29uZGl0aW9uYWw9UE9J
TlRFUl9MT0NLXSB2b2lkIHdlYmtpdFJlcXVlc3RQb2ludGVyTG9jaygpOwogCiAgICAgLy8gQ1NT
IFJlZ2lvbnMgQVBJCi0gICAgW0NvbmRpdGlvbmFsPUNTU19SRUdJT05TLCBWOEVuYWJsZWRBdFJ1
bnRpbWU9Y3NzUmVnaW9uc10gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB3ZWJraXRSZWdp
b25PdmVyc2V0OworICAgIFtDb25kaXRpb25hbD1DU1NfUkVHSU9OUywgVjhFbmFibGVkQXRSdW50
aW1lPWNzc1JlZ2lvbnMsIFY4UGVyV29ybGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyB3ZWJraXRSZWdpb25PdmVyc2V0OwogICAgIFtDb25kaXRpb25hbD1DU1NfUkVHSU9O
UywgVjhFbmFibGVkQXRSdW50aW1lPWNzc1JlZ2lvbnNdIHNlcXVlbmNlPFJhbmdlPiB3ZWJraXRH
ZXRSZWdpb25GbG93UmFuZ2VzKCk7CiAKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVf
QykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0
cmlidXRlcwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFi
b3J0OwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmJsdXI7
Ci0gICAgW05vdEVudW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2hhbmdlOwot
ICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsaWNrOwotICAg
IFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNvbnRleHRtZW51Owot
ICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRibGNsaWNrOwot
ICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRyYWc7Ci0gICAg
W05vdEVudW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZHJhZ2VuZDsKLSAgICBb
Tm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kcmFnZW50ZXI7Ci0gICAg
W05vdEVudW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZHJhZ2xlYXZlOwotICAg
IFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRyYWdvdmVyOwotICAg
IFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRyYWdzdGFydDsKLSAg
ICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kcm9wOwotICAgIFtO
b3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOwotICAgIFtOb3RF
bnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmZvY3VzOwotICAgIFtOb3RFbnVt
ZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmlucHV0OwotICAgIFtOb3RFbnVtZXJh
YmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmludmFsaWQ7Ci0gICAgW05vdEVudW1lcmFi
bGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ua2V5ZG93bjsKLSAgICBbTm90RW51bWVyYWJs
ZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25rZXlwcmVzczsKLSAgICBbTm90RW51bWVyYWJs
ZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25rZXl1cDsKLSAgICBbTm90RW51bWVyYWJsZV0g
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25sb2FkOwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1vdXNlZG93bjsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tb3VzZW1vdmU7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubW91c2VvdXQ7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubW91c2VvdmVyOwotICAgIFtOb3RFbnVtZXJhYmxlXSBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1vdXNldXA7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubW91c2V3aGVlbDsKLSAgICBbTm90RW51bWVyYWJsZV0g
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25zY3JvbGw7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uc2VsZWN0OwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnN1Ym1pdDsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJX
b3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFib3J0OworICAgIFtOb3RF
bnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
Ymx1cjsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmNoYW5nZTsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJp
bmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsaWNrOworICAgIFtOb3RFbnVtZXJh
YmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY29udGV4
dG1lbnU7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25kYmxjbGljazsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3Js
ZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRyYWc7CisgICAgW05vdEVudW1l
cmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kcmFn
ZW5kOworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9uZHJhZ2VudGVyOworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxk
QmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZHJhZ2xlYXZlOworICAgIFtOb3RF
bnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
ZHJhZ292ZXI7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25kcmFnc3RhcnQ7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVy
V29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kcm9wOworICAgIFtOb3RF
bnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
ZXJyb3I7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25mb2N1czsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJp
bmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmlucHV0OworICAgIFtOb3RFbnVtZXJh
YmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uaW52YWxp
ZDsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbmtleWRvd247CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5k
aW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25rZXlwcmVzczsKKyAgICBbTm90RW51bWVy
YWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmtleXVw
OworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9ubG9hZDsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdz
XSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1vdXNlZG93bjsKKyAgICBbTm90RW51bWVyYWJs
ZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1vdXNlbW92
ZTsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbm1vdXNlb3V0OworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmlu
ZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubW91c2VvdmVyOworICAgIFtOb3RFbnVt
ZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubW91
c2V1cDsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbm1vdXNld2hlZWw7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29y
bGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25zY3JvbGw7CisgICAgW05vdEVu
dW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25z
ZWxlY3Q7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25zdWJtaXQ7CiAKICAgICAvLyBhdHRyaWJ1dGUgW05vdEVudW1lcmFi
bGVdIEV2ZW50TGlzdGVuZXIgb25jYW5wbGF5OwogICAgIC8vIGF0dHJpYnV0ZSBbTm90RW51bWVy
YWJsZV0gRXZlbnRMaXN0ZW5lciBvbmNhbnBsYXl0aHJvdWdoOwpAQCAtMjE2LDIxICsyMTYsMjEg
QEAKICAgICAvLyBhdHRyaWJ1dGUgW05vdEVudW1lcmFibGVdIEV2ZW50TGlzdGVuZXIgb253YWl0
aW5nOwogCiAgICAgLy8gV2ViS2l0IGV4dGVuc2lvbnMKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25iZWZvcmVjdXQ7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY3V0OwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbmJlZm9yZWNvcHk7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9uY29weTsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25iZWZvcmVwYXN0ZTsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25wYXN0ZTsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25yZXNldDsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25zZWFyY2g7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9uc2VsZWN0c3RhcnQ7Ci0gICAgW05vdEVudW1lcmFibGUsQ29uZGl0aW9uYWw9
VE9VQ0hfRVZFTlRTLFY4RW5hYmxlZEF0UnVudGltZT10b3VjaF0gYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb250b3VjaHN0YXJ0OwotICAgIFtOb3RFbnVtZXJhYmxlLENvbmRpdGlvbmFsPVRPVUNI
X0VWRU5UUyxWOEVuYWJsZWRBdFJ1bnRpbWU9dG91Y2hdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9udG91Y2htb3ZlOwotICAgIFtOb3RFbnVtZXJhYmxlLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5U
UyxWOEVuYWJsZWRBdFJ1bnRpbWU9dG91Y2hdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9udG91
Y2hlbmQ7Ci0gICAgW05vdEVudW1lcmFibGUsQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLFY4RW5h
YmxlZEF0UnVudGltZT10b3VjaF0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb250b3VjaGNhbmNl
bDsKLSAgICBbTm90RW51bWVyYWJsZSwgQ29uZGl0aW9uYWw9RlVMTFNDUkVFTl9BUEldIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZTsKLSAgICBbTm90RW51
bWVyYWJsZSwgQ29uZGl0aW9uYWw9RlVMTFNDUkVFTl9BUEldIGF0dHJpYnV0ZSBFdmVudExpc3Rl
bmVyIG9ud2Via2l0ZnVsbHNjcmVlbmVycm9yOworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldv
cmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYmVmb3JlY3V0OworICAgIFtO
b3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9uY3V0OworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9uYmVmb3JlY29weTsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJX
b3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNvcHk7CisgICAgW05vdEVu
dW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25i
ZWZvcmVwYXN0ZTsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnBhc3RlOworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldv
cmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucmVzZXQ7CisgICAgW05vdEVu
dW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25z
ZWFyY2g7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25zZWxlY3RzdGFydDsKKyAgICBbTm90RW51bWVyYWJsZSxDb25kaXRp
b25hbD1UT1VDSF9FVkVOVFMsVjhFbmFibGVkQXRSdW50aW1lPXRvdWNoLCBWOFBlcldvcmxkQmlu
ZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9udG91Y2hzdGFydDsKKyAgICBbTm90RW51
bWVyYWJsZSxDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsVjhFbmFibGVkQXRSdW50aW1lPXRvdWNo
LCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9udG91Y2htb3Zl
OworICAgIFtOb3RFbnVtZXJhYmxlLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxWOEVuYWJsZWRB
dFJ1bnRpbWU9dG91Y2gsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb250b3VjaGVuZDsKKyAgICBbTm90RW51bWVyYWJsZSxDb25kaXRpb25hbD1UT1VDSF9FVkVO
VFMsVjhFbmFibGVkQXRSdW50aW1lPXRvdWNoLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9udG91Y2hjYW5jZWw7CisgICAgW05vdEVudW1lcmFibGUsIENvbmRp
dGlvbmFsPUZVTExTQ1JFRU5fQVBJLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZTsKKyAgICBbTm90RW51bWVyYWJsZSwg
Q29uZGl0aW9uYWw9RlVMTFNDUkVFTl9BUEksIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb253ZWJraXRmdWxsc2NyZWVuZXJyb3I7CiAjZW5kaWYKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmlkbAppbmRleCA1ZWUzYjA3MjlmM2RjOTdiY2I2YzVjZjdmMDk2YjNhNTIyMDdmZWMz
Li42YjVkNDkzZTdiZDliNTMxN2RiN2RiNTBlNTg3MTI3MTBkM2MwZTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aWRsCkBAIC00OSwyMCArNDksMjAgQEAKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCAgICAgIERP
Q1VNRU5UX0ZSQUdNRU5UX05PREUgICAgICAgICA9IDExOwogICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0ICAgICAgTk9UQVRJT05fTk9ERSAgICAgICAgICAgICAgICAgID0gMTI7CiAKLSAgICByZWFk
b25seSBhdHRyaWJ1dGUgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gRE9NU3RyaW5n
ICAgICAgICBub2RlTmFtZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgW1RyZWF0UmV0dXJuZWRO
dWxsU3RyaW5nQXM9TnVsbCwgVjhQZXJXb3JsZEJpbmRpbmdzXSBET01TdHJpbmcgICAgICAgIG5v
ZGVOYW1lOwogCiAgICAgICAgICAgICAgLy8gRklYTUU6IHRoZSBzcGVjIHNheXMgdGhpcyBjYW4g
YWxzbyByYWlzZSBvbiByZXRyaWV2YWwuCi0gICAgICAgICAgICAgYXR0cmlidXRlIFtUcmVhdFJl
dHVybmVkTnVsbFN0cmluZ0FzPU51bGwsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmddIERPTVN0cmlu
ZyAgICAgICAgbm9kZVZhbHVlCisgICAgICAgICAgICAgYXR0cmlidXRlIFtUcmVhdFJldHVybmVk
TnVsbFN0cmluZ0FzPU51bGwsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFY4UGVyV29ybGRCaW5k
aW5nc10gRE9NU3RyaW5nICAgICAgICBub2RlVmFsdWUKICAgICAgICAgICAgICAgICAgc2V0dGVy
IHJhaXNlcyhET01FeGNlcHRpb24pOwogCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IHNob3J0ICAgbm9kZVR5cGU7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGUgICAgICAgICAg
ICAgcGFyZW50Tm9kZTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZUxpc3QgICAgICAgICBj
aGlsZE5vZGVzOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlICAgICAgICAgICAgIGZpcnN0
Q2hpbGQ7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGUgICAgICAgICAgICAgbGFzdENoaWxk
OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlICAgICAgICAgICAgIHByZXZpb3VzU2libGlu
ZzsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSAgICAgICAgICAgICBuZXh0U2libGluZzsK
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgRG9jdW1lbnQgICAgICAgICBvd25lckRvY3VtZW50Owor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhQZXJXb3JsZEJpbmRpbmdzXSB1bnNpZ25lZCBzaG9y
dCAgIG5vZGVUeXBlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhQZXJXb3JsZEJpbmRpbmdz
XSBOb2RlICAgICAgICAgICAgIHBhcmVudE5vZGU7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtW
OFBlcldvcmxkQmluZGluZ3NdIE5vZGVMaXN0ICAgICAgICAgY2hpbGROb2RlczsKKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgW1Y4UGVyV29ybGRCaW5kaW5nc10gTm9kZSAgICAgICAgICAgICBmaXJz
dENoaWxkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhQZXJXb3JsZEJpbmRpbmdzXSBOb2Rl
ICAgICAgICAgICAgIGxhc3RDaGlsZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4UGVyV29y
bGRCaW5kaW5nc10gTm9kZSAgICAgICAgICAgICBwcmV2aW91c1NpYmxpbmc7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFtWOFBlcldvcmxkQmluZGluZ3NdIE5vZGUgICAgICAgICAgICAgbmV4dFNp
Ymxpbmc7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOFBlcldvcmxkQmluZGluZ3NdIERvY3Vt
ZW50ICAgICAgICAgb3duZXJEb2N1bWVudDsKIAogICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFt
ZXRlcnMsIEN1c3RvbV0gTm9kZSBpbnNlcnRCZWZvcmUoaW4gW0N1c3RvbVJldHVybl0gTm9kZSBu
ZXdDaGlsZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIE5vZGUgcmVmQ2hpbGQpCkBAIC04NCwyMyArODQsMjMgQEAKICAgICBb
T2JqQ0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSBib29sZWFuIGlzU3VwcG9ydGVkKGluIFtPcHRp
b25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBmZWF0dXJlLCAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLE9w
dGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIHZlcnNpb24pOwogCi0gICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGxdIERPTVN0cmlu
ZyAgICAgICAgbmFtZXNwYWNlVVJJOwotICAgICAgICAgICAgIGF0dHJpYnV0ZSBbVHJlYXRSZXR1
cm5lZE51bGxTdHJpbmdBcz1OdWxsLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcg
ICAgICAgIHByZWZpeAorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVHJlYXRSZXR1cm5lZE51bGxT
dHJpbmdBcz1OdWxsLCBWOFBlcldvcmxkQmluZGluZ3NdIERPTVN0cmluZyAgICAgICAgbmFtZXNw
YWNlVVJJOworICAgICAgICAgICAgIGF0dHJpYnV0ZSBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdB
cz1OdWxsLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBWOFBlcldvcmxkQmluZGluZ3NdIERPTVN0
cmluZyAgICAgICAgcHJlZml4CiAgICAgICAgICAgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5n
QXM9TnVsbF0gRE9NU3RyaW5nICAgICAgICBsb2NhbE5hbWU7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGwsIFY4UGVyV29ybGRCaW5kaW5nc10g
RE9NU3RyaW5nICAgICAgICBsb2NhbE5hbWU7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVD
VElWRV9DKQotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOYW1lZE5vZGVNYXAgICAgIGF0dHJpYnV0
ZXM7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOFBlcldvcmxkQmluZGluZ3NdIE5hbWVkTm9k
ZU1hcCAgICAgYXR0cmlidXRlczsKICAgICBib29sZWFuICAgICAgICAgICAgaGFzQXR0cmlidXRl
cygpOwogI2VuZGlmCiAKIAogICAgIC8vIEludHJvZHVjZWQgaW4gRE9NIExldmVsIDM6CiAKLSAg
ICByZWFkb25seSBhdHRyaWJ1dGUgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gRE9N
U3RyaW5nICAgICAgIGJhc2VVUkk7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtUcmVhdFJldHVy
bmVkTnVsbFN0cmluZ0FzPU51bGwsIFY4UGVyV29ybGRCaW5kaW5nc10gRE9NU3RyaW5nICAgICAg
IGJhc2VVUkk7CiAKICAgICAgICAgICAgICAvLyBGSVhNRTogdGhlIHNwZWMgc2F5cyB0aGlzIGNh
biBhbHNvIHJhaXNlIG9uIHJldHJpZXZhbC4KLSAgICAgICAgICAgICBhdHRyaWJ1dGUgW1RyZWF0
UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbCwgVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3Ry
aW5nICAgICAgIHRleHRDb250ZW50CisgICAgICAgICAgICAgYXR0cmlidXRlIFtUcmVhdFJldHVy
bmVkTnVsbFN0cmluZ0FzPU51bGwsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFY4UGVyV29ybGRC
aW5kaW5nc10gRE9NU3RyaW5nICAgICAgIHRleHRDb250ZW50CiAgICAgICAgICAgICAgICAgIHNl
dHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgIGJvb2xlYW4gICAgICAgICAgICBpc1Nh
bWVOb2RlKGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIE5vZGUgb3RoZXIpOwpAQCAt
MTIzLDExICsxMjMsMTEgQEAKICAgICBib29sZWFuIGNvbnRhaW5zKGluIFtPcHRpb25hbD1EZWZh
dWx0SXNVbmRlZmluZWRdIE5vZGUgb3RoZXIpOwogCiAgICAgLy8gSUUgZXh0ZW5zaW9ucwotICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50ICAgICAgICAgIHBhcmVudEVsZW1lbnQ7CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFtWOFBlcldvcmxkQmluZGluZ3NdIEVsZW1lbnQgICAgICAgICAg
cGFyZW50RWxlbWVudDsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICYmIExB
TkdVQUdFX09CSkVDVElWRV9DCiAgICAgLy8gT2JqZWN0aXZlLUMgZXh0ZW5zaW9ucwotICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgIGlzQ29udGVudEVkaXRhYmxlOworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhQZXJXb3JsZEJpbmRpbmdzXSBib29sZWFuICAgICAgICAg
IGlzQ29udGVudEVkaXRhYmxlOwogCiAgICAgdm9pZCBpbnNwZWN0KCk7CiAjZW5kaWYgLyogZGVm
aW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193889</attachid>
            <date>2013-03-19 11:57:43 -0700</date>
            <delta_ts>2013-03-19 13:30:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111417-20130319195333.patch</filename>
            <type>text/plain</type>
            <size>219604</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRkNzJhZmYzYjFjNjM3
NGQxMDg2MWRiOGUwYmI1NDRmYjE4NTM2Yi4uMjRhNGI1ZWM4OWVlN2UxNmQ1YzU3NzgxODg5ODcz
ZmNiMGQ2OTA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAxMy0wMy0xOSAgTWFy
amEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBBZGQgbWFj
aGluZXJ5IGZvciBnZW5lcmF0aW5nIHNwZWNpYWxpemVkIGJpbmRpbmdzIGZvciB0aGUgbWFpbiB3
b3JsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEx
NDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9jaGVuIEVpc2luZ2VyLgorCisgICAgICAgIFRo
ZSBuZXcgc3BlY2lhbGl6ZWQgYmluZGluZ3Mgd2lsbCBiZSBmYXN0ZXIsIGJlY2F1c2UgdGhleSBk
b24ndCBuZWVkIHRvCisgICAgICAgIGRvIHRoZSAibWFpbiB3b3JsZCwgaXNvbGF0ZWQgd29ybGQg
b3IgYSB3b3JrZXIiIGNoZWNrLCBidXQgY2FuIHJpZ2h0CisgICAgICAgIGF3YXkgYXNzdW1lIHRo
YXQgd2UncmUgaW4gdGhlIG1haW4gd29ybGQuCisKKyAgICAgICAgQWRkZWQgYW4gSURMIGF0dHJp
YnV0ZSAoVjhQZXJXb3JsZEJpbmRpbmdzKSB0byBkZWZpbmUgd2hpY2gKKyAgICAgICAgYXR0cmli
dXRlIGdldHRlcnMgLyBzZXR0ZXJzIHRvIHNwZWNpYWxpemUuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBnZW5lcmF0ZXMgbWFpbiB3b3JsZCBiaW5kaW5ncyBmb3IgZ2V0dGVycyBhbmQgc2V0dGVycyBv
ZiBOb2RlCisgICAgICAgIGFuZCBFbGVtZW50LiAoVGhlIHBvc3NpYmlsaXR5IHRvIGdlbmVyYXRl
IGJpbmRpbmdzIGZvciBjYWxsYmFja3Mgd2lsbCBiZQorICAgICAgICBhZGRlZCBsYXRlci4pCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzICh1cGRhdGVkIGV4aXN0aW5nIGJpbmRpbmdzIHRlc3RzKS4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAg
ICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyQ2Fs
bGJhY2spOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyKToKKyAgICAgICAgKEdl
bmVyYXRlTm9ybWFsQXR0clNldHRlckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFs
QXR0clNldHRlcik6CisgICAgICAgIChHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3IpOgorICAgICAg
ICAoR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlKToKKyAgICAgICAgKEdlbmVyYXRlSW1w
bGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uKToK
KyAgICAgICAgKEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKToKKyAgICAgICAgKENyZWF0ZUN1
c3RvbVNpZ25hdHVyZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQ6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZp
Z3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0
QXJyYXk6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RmxvYXQ2NEFycmF5OjpI
YXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2
NEFycmF5Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RB
Y3RpdmVET01PYmplY3RUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RBY3RpdmVE
T01PYmplY3Q6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURP
TU9iamVjdDo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RBY3RpdmVET01PYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZv
ck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXI6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEN1c3Rv
bU5hbWVkR2V0dGVyOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9W
OEZhc3RGb3JNYWluV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6Okhhc0luc3RhbmNlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oOgor
ICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3RFdmVudFRhcmdldDo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0RXZlbnRUYXJnZXQ6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4
RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbmZpZ3VyZVY4VGVzdEV4Y2VwdGlvblRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXhj
ZXB0aW9uOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV4Y2VwdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFpbldv
cmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhU
ZXN0SW50ZXJmYWNlVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50ZXJmYWNl
OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6Okhhc0lu
c3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJm
YWNlLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb25maWd1cmVWOFRlc3ROYW1lZENvbnN0cnVjdG9yVGVtcGxhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZp
Z3VyZVY4VGVzdE5vZGVUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpH
ZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpIYXNJbnN0YW5jZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4VGVzdE9iajo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2Jq
OjpIYXNJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6Omluc3RhbGxQZXJD
b250ZXh0UHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5oOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChXZWJD
b3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6SGFzSW5zdGFuY2Up
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5X
b3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhU
ZXN0VHlwZWRlZnNUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RUeXBlZGVmczo6
R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0VHlwZWRlZnM6Okhhc0luc3Rh
bmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICog
YmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3Rv
cmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoRE9NRGF0YVN0b3JlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmg6CisgICAgICAgIChCYXRj
aGVkQXR0cmlidXRlKToKKyAgICAgICAgKFY4RE9NQ29uZmlndXJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRUYXJnZXRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhNaWNyb0RhdGFJdGVtVmFsdWVDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Ob2RlLmlkbDoKKwogMjAxMy0wMy0xOCAg
VG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbdjhdIFN1cHByZXNz
IGJpbmRpbmcgaW50ZWdyaXR5IGNoZWNrIG9mIEhUTUxDb250ZW50RWxlbWVudC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXgg
ZGUyMTQ1NWFlMDY3NzViNGJiMzNmMWM3MzA4Mzk0NWUyNTUzNmEwMS4uMTc5OTY5NDMyZDBmYjE0
YmRlYWI0NjU0MmUxMzBlODczMGYyZGY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTUzMSwxMiArNTMxLDE5IEBAIEVO
RAogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiBjbGFzcyAke25hdGl2ZVR5
cGV9Owogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoJHtuYXRpdmVUeXBlfSosIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoJHtuYXRpdmVUeXBlfSosIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogCiB0ZW1wbGF0ZTxj
bGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOEZhc3QoJHtuYXRpdmVUeXBlfSogaW1wbCwgY29uc3QgSG9sZGVyQ29u
dGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSopCiB7CiAgICAgcmV0dXJuIHRvVjgoaW1wbCwg
Y29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKIH0KKwordGVtcGxh
dGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKCR7bmF0aXZlVHlwZX0qIGltcGws
IGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqKQoreworICAgIHJl
dHVybiB0b1Y4Rm9yTWFpbldvcmxkKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVy
LkdldElzb2xhdGUoKSk7Cit9CiBFTkQKICAgICB9IGVsc2UgewogCkBAIC01NzQsNiArNTgxLDE3
IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOCgke25hdGl2ZVR5cGV9KiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyCiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4Rm9yTWFpbldvcmxkKCR7bmF0aXZlVHlwZX0qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQo
d29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBs
KSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5X
b3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
JHJldHVybmluZ1dyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBX
cmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KCR7bmF0aXZl
VHlwZX0qIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUq
IHdyYXBwYWJsZSkKIHsKQEAgLTU4NCw2ICs2MDIsMjUgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4RmFzdCgke25hdGl2ZVR5cGV9KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWlu
ZXIKICAgICAgICAgcmV0dXJuICRyZXR1cm5pbmdXcmFwcGVyOwogICAgIHJldHVybiB3cmFwKGlt
cGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7CiB9CisKK3Rl
bXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZCgke25hdGl2ZVR5cGV9KiBp
bXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFi
bGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBN
YWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51
bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAg
IGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAkcmV0dXJuaW5nV3JhcHBl
cjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5H
ZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNz
IFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWlu
V29ybGQoUGFzc1JlZlB0cjwgJHtuYXRpdmVUeXBlfSA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRh
aW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9W
OEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOworfQor
CiBFTkQKICAgICB9CiAKQEAgLTg4Nyw2ICs5MjQsNyBAQCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRy
R2V0dGVyQ2FsbGJhY2sKIHsKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CiAgICAgbXkgJGlu
dGVyZmFjZSA9IHNoaWZ0OworICAgIG15ICRmb3JNYWluV29ybGRTdWZmaXggPSBzaGlmdDsKIAog
ICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKICAgICBteSAkdjhJbnRl
cmZhY2VOYW1lID0gIlY4JGludGVyZmFjZU5hbWUiOwpAQCAtODk2LDEzICs5MzQsMTMgQEAgc3Vi
IEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlckNhbGxiYWNrCiAgICAgbXkgJGNvbmRpdGlvbmFsU3Ry
aW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlKTsKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiNpZiAke2Nv
bmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAKLSAgICBwdXNo
KEBpbXBsQ29udGVudEludGVybmFscywgInN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHth
dHRyTmFtZX1BdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudElu
dGVybmFscywgInN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHthdHRyTmFtZX1BdHRyR2V0
dGVyQ2FsbGJhY2ske2Zvck1haW5Xb3JsZFN1ZmZpeH0odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pXG4iKTsKICAgICBwdXNoKEBpbXBsQ29u
dGVudEludGVybmFscywgIntcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCBH
ZW5lcmF0ZUZlYXR1cmVPYnNlcnZhdGlvbigkYXR0ckV4dC0+eyJWOE1lYXN1cmVBcyJ9KSk7CiAg
ICAgaWYgKEhhc0N1c3RvbUdldHRlcigkYXR0ckV4dCkpIHsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnRJbnRlcm5hbHMsICIgICAgcmV0dXJuICR7djhJbnRlcmZhY2VOYW1lfTo6JHthdHRyTmFt
ZX1BdHRyR2V0dGVyQ3VzdG9tKG5hbWUsIGluZm8pO1xuIik7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgcmV0dXJuICR7aW50ZXJmYWNlTmFt
ZX1WOEludGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7XG4iKTsKKyAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgcmV0dXJuICR7aW50ZXJmYWNl
TmFtZX1WOEludGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIke2Zvck1haW5Xb3JsZFN1ZmZp
eH0obmFtZSwgaW5mbyk7XG4iKTsKICAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5h
bHMsICJ9XG5cbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiI2VuZGlmIC8v
ICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTkx
Miw2ICs5NTAsNyBAQCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyCiB7CiAgICAgbXkgJGF0
dHJpYnV0ZSA9IHNoaWZ0OwogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKyAgICBteSAkZm9y
TWFpbldvcmxkU3VmZml4ID0gc2hpZnQ7CiAKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRl
cmZhY2UtPm5hbWU7CiAgICAgbXkgJHY4SW50ZXJmYWNlTmFtZSA9ICJWOCRpbnRlcmZhY2VOYW1l
IjsKQEAgLTkzMSw3ICs5NzAsNyBAQCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyCiAgICAg
bXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9u
YWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKICAgICBwdXNoKEBpbXBsQ29udGVudElu
dGVybmFscywgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsIDw8RU5EKTsKLXN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHthdHRyTmFtZX1BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiAke2F0dHJOYW1lfUF0dHJHZXR0ZXIke2Zvck1haW5Xb3JsZFN1ZmZp
eH0odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCiB7CiBFTkQKICAgICBpZiAoJHN2Z05hdGl2ZVR5cGUpIHsKQEAgLTExMTEsNyArMTE1MCw3
IEBAIEVORAogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjgkYXR0clR5cGUuaCIpOwogICAg
ICAgICBteSAkc3ZnTmF0aXZlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTVkdUeXBlTmVlZGlu
Z1RlYXJPZmYoJGF0dHJUeXBlKTsKICAgICAgICAgIyBDb252ZXJ0IGZyb20gYWJzdHJhY3QgU1ZH
UHJvcGVydHkgdG8gcmVhbCB0eXBlLCBzbyB0aGUgcmlnaHQgdG9KUygpIG1ldGhvZCBjYW4gYmUg
aW52b2tlZC4KLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgcmV0dXJu
IHRvVjhGYXN0KHN0YXRpY19jYXN0PCRzdmdOYXRpdmVUeXBlKj4oJHJlc3VsdCksIGluZm8sIGlt
cCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgcmV0dXJu
IHRvVjhGYXN0JGZvck1haW5Xb3JsZFN1ZmZpeChzdGF0aWNfY2FzdDwkc3ZnTmF0aXZlVHlwZSo+
KCRyZXN1bHQpLCBpbmZvLCBpbXApO1xuIik7CiAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3It
PklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRhdHRyVHlwZSkgYW5kIG5vdCAkaW50ZXJmYWNlTmFt
ZSA9fiAvTGlzdCQvKSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOCRhdHRyVHlwZS5o
Iik7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTVkdQcm9wZXJ0eVRlYXJPZmYuaCIpOwpA
QCAtMTE0OSw3ICsxMTg4LDcgQEAgRU5ECiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgJHdyYXBwZWRWYWx1ZSA9ICJXVEY6OmdldFB0cigke3RlYXJPZmZUeXBlfTo6Y3JlYXRlKCRy
ZXN1bHQpKSI7CiAgICAgICAgIH0KLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMs
ICIgICAgcmV0dXJuIHRvVjhGYXN0KCR3cmFwcGVkVmFsdWUsIGluZm8sIGltcCk7XG4iKTsKKyAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgcmV0dXJuIHRvVjhGYXN0JGZv
ck1haW5Xb3JsZFN1ZmZpeCgkd3JhcHBlZFZhbHVlLCBpbmZvLCBpbXApO1xuIik7CiAgICAgfSBl
bHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlIGVxICJNZXNzYWdlUG9ydEFycmF5Iikg
ewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiTWVzc2FnZVBvcnQuaCIpOwogICAgICAgICBB
ZGRUb0ltcGxJbmNsdWRlcygiVjhNZXNzYWdlUG9ydC5oIik7CkBAIC0xMTYxLDcgKzEyMDAsNyBA
QCBFTkQKICAgICBNZXNzYWdlUG9ydEFycmF5IHBvcnRzQ29weSgqcG9ydHMpOwogICAgIHY4OjpM
b2NhbDx2ODo6QXJyYXk+IHBvcnRBcnJheSA9IHY4OjpBcnJheTo6TmV3KHBvcnRzQ29weS5zaXpl
KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9ydHNDb3B5LnNpemUoKTsgKytpKQot
ICAgICAgICBwb3J0QXJyYXktPlNldCh2OEludGVnZXIoaSwgaW5mby5HZXRJc29sYXRlKCkpLCB0
b1Y4RmFzdChwb3J0c0NvcHlbaV0uZ2V0KCksIGluZm8sIGltcCkpOworICAgICAgICBwb3J0QXJy
YXktPlNldCh2OEludGVnZXIoaSwgaW5mby5HZXRJc29sYXRlKCkpLCB0b1Y4RmFzdCRmb3JNYWlu
V29ybGRTdWZmaXgocG9ydHNDb3B5W2ldLmdldCgpLCBpbmZvLCBpbXApKTsKICAgICByZXR1cm4g
cG9ydEFycmF5OwogRU5ECiAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBl
IGVxICJTZXJpYWxpemVkU2NyaXB0VmFsdWUiICYmICRhdHRyRXh0LT57IkNhY2hlZEF0dHJpYnV0
ZSJ9KSB7CkBAIC0xMTczLDcgKzEyMTIsNyBAQCBFTkQKICAgICByZXR1cm4gdmFsdWU7CiBFTkQK
ICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICBy
ZXR1cm4gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICRyZXN1bHQs
ICJpbmZvLkhvbGRlcigpIiwgImluZm8uR2V0SXNvbGF0ZSgpIiwgImluZm8iLCAiaW1wIiwgIlJl
dHVyblVuc2FmZUhhbmRsZSIpLiI7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRl
cm5hbHMsICIgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLCAkcmVzdWx0LCAiaW5mby5Ib2xkZXIoKSIsICJpbmZvLkdldElzb2xhdGUoKSIsICJpbmZv
IiwgImltcCIsICJSZXR1cm5VbnNhZmVIYW5kbGUiLCAkZm9yTWFpbldvcmxkU3VmZml4KS4iO1xu
Iik7CiAgICAgfQogCiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICJ9XG5cbiIpOyAg
IyBlbmQgb2YgZ2V0dGVyCkBAIC0xMjIxLDYgKzEyNjAsNyBAQCBzdWIgR2VuZXJhdGVOb3JtYWxB
dHRyU2V0dGVyQ2FsbGJhY2sKIHsKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CiAgICAgbXkg
JGludGVyZmFjZSA9IHNoaWZ0OworICAgIG15ICRmb3JNYWluV29ybGRTdWZmaXggPSBzaGlmdDsK
IAogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKICAgICBteSAkdjhJ
bnRlcmZhY2VOYW1lID0gIlY4JGludGVyZmFjZU5hbWUiOwpAQCAtMTIzMCwxMyArMTI3MCwxMyBA
QCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyQ2FsbGJhY2sKICAgICBteSAkY29uZGl0aW9u
YWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0
cmlidXRlLT5zaWduYXR1cmUpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiI2lm
ICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKIAotICAg
IHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAic3RhdGljIHZvaWQgJHthdHRyTmFtZX1BdHRy
U2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKVxuIik7CisgICAgcHVz
aChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICJzdGF0aWMgdm9pZCAke2F0dHJOYW1lfUF0dHJTZXR0
ZXJDYWxsYmFjayR7Zm9yTWFpbldvcmxkU3VmZml4fSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIntcbiIpOwogICAgIHB1
c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCBHZW5lcmF0ZUZlYXR1cmVPYnNlcnZhdGlvbigkYXR0
ckV4dC0+eyJWOE1lYXN1cmVBcyJ9KSk7CiAgICAgaWYgKEhhc0N1c3RvbVNldHRlcigkYXR0ckV4
dCkpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgJHt2OEludGVy
ZmFjZU5hbWV9Ojoke2F0dHJOYW1lfUF0dHJTZXR0ZXJDdXN0b20obmFtZSwgdmFsdWUsIGluZm8p
O1xuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMs
ICIgICAgJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0clNldHRlcihu
YW1lLCB2YWx1ZSwgaW5mbyk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5h
bHMsICIgICAgJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0clNldHRl
ciR7Zm9yTWFpbldvcmxkU3VmZml4fShuYW1lLCB2YWx1ZSwgaW5mbyk7XG4iKTsKICAgICB9CiAg
ICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICJ9XG5cbiIpOwogICAgIHB1c2goQGltcGxD
b250ZW50SW50ZXJuYWxzLCAiI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTEyNDYsNiArMTI4Niw3IEBAIHN1YiBHZW5lcmF0ZU5v
cm1hbEF0dHJTZXR0ZXIKIHsKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CiAgICAgbXkgJGlu
dGVyZmFjZSA9IHNoaWZ0OworICAgIG15ICRmb3JNYWluV29ybGRTdWZmaXggPSBzaGlmdDsKIAog
ICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKICAgICBteSAkdjhJbnRl
cmZhY2VOYW1lID0gIlY4JGludGVyZmFjZU5hbWUiOwpAQCAtMTI1OSw3ICsxMzAwLDcgQEAgc3Vi
IEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcgogCiAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0g
JGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlKTsKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiNpZiAke2NvbmRpdGlv
bmFsU3RyaW5nfVxuXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgcHVzaChAaW1wbENv
bnRlbnRJbnRlcm5hbHMsICJzdGF0aWMgdm9pZCAke2F0dHJOYW1lfUF0dHJTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKVxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5h
bHMsICJzdGF0aWMgdm9pZCAke2F0dHJOYW1lfUF0dHJTZXR0ZXIke2Zvck1haW5Xb3JsZFN1ZmZp
eH0odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKVxuIik7CiAgICAgcHVzaChAaW1wbENvbnRl
bnRJbnRlcm5hbHMsICJ7XG4iKTsKIAogICAgICMgSWYgdGhlICJTdHJpY3RUeXBlQ2hlY2tpbmci
IGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBwcmVzZW50LCBhbmQgdGhlIGF0dHJpYnV0ZSdzIHR5cGUg
aXMgYW4KQEAgLTIyNzUsNyArMjMxNiw3IEBAIEVORAogCiAgICAgcHVzaChAaW1wbENvbnRlbnQs
IDw8RU5EKTsKIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRl
cmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAg
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjYWNoZWRUZW1w
bGF0ZTsKICAgICBpZiAoIWNhY2hlZFRlbXBsYXRlLklzRW1wdHkoKSkKQEAgLTIyODcsNyArMjMy
OCw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50ZXJmYWNl
TmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUoCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RU
ZW1wbGF0ZT4gaW5zdGFuY2UgPSByZXN1bHQtPkluc3RhbmNlVGVtcGxhdGUoKTsKICAgICBpbnN0
YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KCR7djhJbnRlcmZhY2VOYW1lfTo6aW50ZXJuYWxG
aWVsZENvdW50KTsKICAgICByZXN1bHQtPlNldENsYXNzTmFtZSh2ODo6U3RyaW5nOjpOZXdTeW1i
b2woIiR7aW50ZXJmYWNlTmFtZX0iKSk7Ci0gICAgcmVzdWx0LT5Jbmhlcml0KCR7djhJbnRlcmZh
Y2VOYW1lfTo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSk7CisgICAgcmVzdWx0LT5J
bmhlcml0KCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdv
cmxkVHlwZSkpOwogCiAgICAgY2FjaGVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCByZXN1bHQpOwogICAgIHJldHVybiBjYWNoZWRU
ZW1wbGF0ZTsKQEAgLTIzNTYsNiArMjM5Nyw4IEBAIHN1YiBHZW5lcmF0ZVNpbmdsZUJhdGNoZWRB
dHRyaWJ1dGUKIAogICAgIG15ICRnZXR0ZXI7CiAgICAgbXkgJHNldHRlcjsKKyAgICBteSAkZ2V0
dGVyRm9yTWFpbldvcmxkOworICAgIG15ICRzZXR0ZXJGb3JNYWluV29ybGQ7CiAgICAgbXkgJHBy
b3BBdHRyID0gInY4OjpOb25lIjsKIAogICAgICMgQ2hlY2sgYXR0cmlidXRlcy4KQEAgLTIzODIs
MTkgKzI0MjUsMjUgQEAgc3ViIEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZQogICAgICAg
ICAkZGF0YSA9ICImVjgke2NvbnN0cnVjdG9yVHlwZX06OmluZm8iOwogICAgICAgICAkZ2V0dGVy
ID0gIiR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke2ludGVyZmFjZU5hbWV9Q29uc3RydWN0
b3JHZXR0ZXIiOwogICAgICAgICAkc2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFs
Ojoke2ludGVyZmFjZU5hbWV9UmVwbGFjZWFibGVBdHRyU2V0dGVyQ2FsbGJhY2siOworICAgICAg
ICAkZ2V0dGVyRm9yTWFpbldvcmxkID0gIjAiOworICAgICAgICAkc2V0dGVyRm9yTWFpbldvcmxk
ID0gIjAiOwogICAgIH0gZWxzZSB7CiAgICAgICAgICMgRGVmYXVsdCBHZXR0ZXIgYW5kIFNldHRl
cgogICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke2F0dHJO
YW1lfUF0dHJHZXR0ZXJDYWxsYmFjayI7CiAgICAgICAgICRzZXR0ZXIgPSAiJHtpbnRlcmZhY2VO
YW1lfVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0clNldHRlckNhbGxiYWNrIjsKKyAgICAgICAg
JGdldHRlckZvck1haW5Xb3JsZCA9ICIke2dldHRlcn1Gb3JNYWluV29ybGQiOworICAgICAgICAk
c2V0dGVyRm9yTWFpbldvcmxkID0gIiR7c2V0dGVyfUZvck1haW5Xb3JsZCI7CiAKICAgICAgICAg
aWYgKCFIYXNDdXN0b21TZXR0ZXIoJGF0dHJFeHQpICYmICRhdHRyRXh0LT57IlJlcGxhY2VhYmxl
In0pIHsKICAgICAgICAgICAgICRzZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6
OiR7aW50ZXJmYWNlTmFtZX1SZXBsYWNlYWJsZUF0dHJTZXR0ZXJDYWxsYmFjayI7CisgICAgICAg
ICAgICAkc2V0dGVyRm9yTWFpbldvcmxkID0gIjAiOwogICAgICAgICB9CiAgICAgfQogCiAgICAg
IyBSZWFkIG9ubHkgYXR0cmlidXRlcwogICAgIGlmIChJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7
CiAgICAgICAgICRzZXR0ZXIgPSAiMCI7CisgICAgICAgICRzZXR0ZXJGb3JNYWluV29ybGQgPSAi
MCI7CiAgICAgfQogCiAgICAgIyBBbiBhY2Nlc3NvciBjYW4gYmUgaW5zdGFsbGVkIG9uIHRoZSBw
cm90bwpAQCAtMjQwMiwxMSArMjQ1MSwxNiBAQCBzdWIgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0
cmlidXRlCiAgICAgICAgICRvbl9wcm90byA9ICIxIC8qIG9uIHByb3RvICovIjsKICAgICB9CiAK
KyAgICBpZiAoISRhdHRyRXh0LT57IlY4UGVyV29ybGRCaW5kaW5ncyJ9KSB7CisgICAgICAkZ2V0
dGVyRm9yTWFpbldvcmxkID0gIjAiOworICAgICAgJHNldHRlckZvck1haW5Xb3JsZCA9ICIwIjsK
KyAgICB9CisKICAgICBteSAkY29tbWVudEluZm8gPSAiQXR0cmlidXRlICckYXR0ck5hbWUnIChU
eXBlOiAnIiAuICRhdHRyaWJ1dGUtPnR5cGUgLgogICAgICAgICAgICAgICAgICAgICAgICInIEV4
dEF0dHI6ICciIC4gam9pbignICcsIGtleXMoJXskYXR0ckV4dH0pKSAuICInKSI7CiAKICAgICBw
dXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgXC9cLyAkY29tbWVudEluZm9cbiIpOwot
ICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICB7XCIkYXR0ck5hbWVcIiwgJGdl
dHRlciwgJHNldHRlciwgJGRhdGEsICRhY2Nlc3NDb250cm9sLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KCRwcm9wQXR0ciksICRvbl9wcm90b30iIC4gJGRlbGltaXRlciAuICJc
biIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICB7XCIkYXR0ck5hbWVc
IiwgJGdldHRlciwgJHNldHRlciwgJGdldHRlckZvck1haW5Xb3JsZCwgJHNldHRlckZvck1haW5X
b3JsZCwgJGRhdGEsICRhY2Nlc3NDb250cm9sLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KCRwcm9wQXR0ciksICRvbl9wcm90b30iIC4gJGRlbGltaXRlciAuICJcbiIpOwogfQog
CiBzdWIgSXNTdGFuZGFyZEZ1bmN0aW9uCkBAIC0yNzExLDcgKzI3NjUsNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBteSAkcGFyZW50ID0gJF87CiAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCJWOCR7cGFyZW50fS5oIik7CiAgICAgICAgICRwYXJlbnRDbGFzcyA9ICJW
OCIgLiAkcGFyZW50OwotICAgICAgICAkcGFyZW50Q2xhc3NUZW1wbGF0ZSA9ICRwYXJlbnRDbGFz
cyAuICI6OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSkiOworICAgICAgICAkcGFyZW50
Q2xhc3NUZW1wbGF0ZSA9ICRwYXJlbnRDbGFzcyAuICI6OkdldFRlbXBsYXRlKGlzb2xhdGUsIGN1
cnJlbnRXb3JsZFR5cGUpIjsKICAgICAgICAgbGFzdDsKICAgICB9CiAKQEAgLTI3OTAsMTQgKzI4
NDQsMjEgQEAgRU5ECiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiKTsKICAgICAgICAgfQogCi0gICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0ckdl
dHRlcigkYXR0cmlidXRlLCAkaW50ZXJmYWNlKTsKLSAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRy
R2V0dGVyQ2FsbGJhY2soJGF0dHJpYnV0ZSwgJGludGVyZmFjZSk7Ci0KKyAgICAgICAgR2VuZXJh
dGVOb3JtYWxBdHRyR2V0dGVyKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICIiKTsKKyAgICAgICAg
R2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyQ2FsbGJhY2soJGF0dHJpYnV0ZSwgJGludGVyZmFjZSwg
IiIpOworICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhQZXJXb3JsZEJpbmRpbmdzIn0pIHsKKyAg
ICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcigkYXR0cmlidXRlLCAkaW50ZXJmYWNl
LCAiRm9yTWFpbldvcmxkIik7CisgICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJD
YWxsYmFjaygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiRm9yTWFpbldvcmxkIik7CisgICAgICAg
IH0KICAgICAgICAgaWYgKCFIYXNDdXN0b21TZXR0ZXIoJGF0dHJFeHQpICYmICRhdHRyRXh0LT57
IlJlcGxhY2VhYmxlIn0pIHsKICAgICAgICAgICAgICRoYXNSZXBsYWNlYWJsZSA9IDE7CiAgICAg
ICAgIH0gZWxzaWYgKCFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7Ci0gICAgICAgICAgICBHZW5l
cmF0ZU5vcm1hbEF0dHJTZXR0ZXIoJGF0dHJpYnV0ZSwgJGludGVyZmFjZSk7Ci0gICAgICAgICAg
ICBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkaW50ZXJmYWNl
KTsKKyAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcigkYXR0cmlidXRlLCAkaW50
ZXJmYWNlLCAiIik7CisgICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxsYmFj
aygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiIik7CisgICAgICAgICAgICBpZiAoJGF0dHJFeHQt
PnsiVjhQZXJXb3JsZEJpbmRpbmdzIn0pIHsKKyAgICAgICAgICAgICAgR2VuZXJhdGVOb3JtYWxB
dHRyU2V0dGVyKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICJGb3JNYWluV29ybGQiKTsKKyAgICAg
ICAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyQ2FsbGJhY2soJGF0dHJpYnV0ZSwgJGlu
dGVyZmFjZSwgIkZvck1haW5Xb3JsZCIpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQogCkBAIC0zMDA4LDkgKzMwNjksOSBAQCBFTkQKICAgICAjIGNvbmZpZ3VyYXRpb24gbWV0aG9k
LgogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgPDxFTkQpOwotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RU
ZW1wbGF0ZT4gQ29uZmlndXJlU2hhZG93T2JqZWN0VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdFRlbXBsYXRlPiB0ZW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBDb25maWd1cmVTaGFkb3dPYmplY3RUZW1w
bGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IHRlbXBsLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIFY4
RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHRlbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4oKSwgc2hhZG93QXR0cnMsIFdURl9BUlJBWV9MRU5HVEgo
c2hhZG93QXR0cnMpLCBpc29sYXRlKTsKKyAgICBWOERPTUNvbmZpZ3VyYXRpb246OmJhdGNoQ29u
ZmlndXJlQXR0cmlidXRlcyh0ZW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+KCks
IHNoYWRvd0F0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRvd0F0dHJzKSwgaXNvbGF0ZSwgY3Vy
cmVudFdvcmxkVHlwZSk7CiAKICAgICAvLyBJbnN0YWxsIGEgc2VjdXJpdHkgaGFuZGxlciB3aXRo
IFY4LgogICAgIHRlbXBsLT5TZXRBY2Nlc3NDaGVja0NhbGxiYWNrcyhWOERPTVdpbmRvdzo6bmFt
ZWRTZWN1cml0eUNoZWNrQ3VzdG9tLCBWOERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2tD
dXN0b20sIHY4OjpFeHRlcm5hbDo6TmV3KCZWOERPTVdpbmRvdzo6aW5mbykpOwpAQCAtMzAyNiw3
ICszMDg3LDcgQEAgRU5ECiAKICAgICAjIEdlbmVyYXRlIHRoZSB0ZW1wbGF0ZSBjb25maWd1cmF0
aW9uIG1ldGhvZAogICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwotc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmUke3Y4SW50ZXJmYWNlTmFt
ZX1UZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmUke3Y4SW50ZXJmYWNl
TmFtZX1UZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywg
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkK
IHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCkBAIC0zMDM2LDcgKzMwOTcsNyBA
QCBFTkQKICAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlvbiA9IEdldFJ1bnRpbWVFbmFibGVGdW5j
dGlvbk5hbWUoJGludGVyZmFjZSk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7
CiAgICAgaWYgKCEke2VuYWJsZV9mdW5jdGlvbn0oKSkKLSAgICAgICAgZGVmYXVsdFNpZ25hdHVy
ZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgXCJcIiwgJHBh
cmVudENsYXNzVGVtcGxhdGUsICR7djhJbnRlcmZhY2VOYW1lfTo6aW50ZXJuYWxGaWVsZENvdW50
LCAwLCAwLCAwLCAwLCBpc29sYXRlKTsKKyAgICAgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9N
Q29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgXCJcIiwgJHBhcmVudENsYXNz
VGVtcGxhdGUsICR7djhJbnRlcmZhY2VOYW1lfTo6aW50ZXJuYWxGaWVsZENvdW50LCAwLCAwLCAw
LCAwLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICBlbHNlCiBFTkQKICAgICB9CkBA
IC0zMDU2LDExICszMTE3LDExIEBAIEVORAogCiAgICAgaWYgKCRoYXNfY2FsbGJhY2tzKSB7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgICAgICR7djhJbnRlcmZhY2VO
YW1lfU1ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoJHt2OEludGVyZmFjZU5hbWV9TWV0aG9kcyks
IGlzb2xhdGUpOworICAgICAgICAke3Y4SW50ZXJmYWNlTmFtZX1NZXRob2RzLCBXVEZfQVJSQVlf
TEVOR1RIKCR7djhJbnRlcmZhY2VOYW1lfU1ldGhvZHMpLCBpc29sYXRlLCBjdXJyZW50V29ybGRU
eXBlKTsKIEVORAogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVO
RCk7Ci0gICAgICAgIDAsIDAsIGlzb2xhdGUpOworICAgICAgICAwLCAwLCBpc29sYXRlLCBjdXJy
ZW50V29ybGRUeXBlKTsKIEVORAogICAgIH0KIApAQCAtMzA5Niw3ICszMTU3LDcgQEAgRU5ECiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzdGF0aWMgY29uc3QgVjhET01Db25m
aWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhID1cXFxuIik7CiAgICAgICAgIEdl
bmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlTmFtZSwgJHJ1bnRpbWVfYXR0
ciwgIjsiLCAiICAgICIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAg
ICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJv
dG8sIGF0dHJEYXRhLCBpc29sYXRlKTsKKyAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjpjb25m
aWd1cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSwgaXNvbGF0ZSwgY3VycmVu
dFdvcmxkVHlwZSk7CiAgICAgfQogRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4j
ZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsK
QEAgLTMxNzksMjMgKzMyNDAsMjMgQEAgRU5ECiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX06OkdldFRl
bXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkK
K3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX06
OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJl
bnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5m
byk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgp
KQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBk
YXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAo
cmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAg
ICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVT
Y29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQot
ICAgICAgICBDb25maWd1cmUke3Y4SW50ZXJmYWNlTmFtZX1UZW1wbGF0ZShkYXRhLT5yYXdUZW1w
bGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50
ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1
cmUke3Y4SW50ZXJmYWNlTmFtZX1UZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3Vy
cmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRl
bXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVy
biB0ZW1wbDsKIH0KIAotYm9vbCAke3Y4SW50ZXJmYWNlTmFtZX06Okhhc0luc3RhbmNlKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3Js
ZFR5cGUgd29ybGRUeXBlKQorYm9vbCAke3Y4SW50ZXJmYWNlTmFtZX06Okhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJX
b3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOwor
ICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgm
aW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiBib29sICR7djhJbnRlcmZhY2VO
YW1lfTo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCkBAIC0zMzAwLDE0ICszMzYxLDE0IEBAIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gVjhET01XaW5kb3c6OkdldFNoYWRvd09iamVjdFRlbXBs
YXRlKHY4OjpJc29sCiAgICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVt
cGxhdGU+IFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGVGb3JNYWluV29ybGQ7CiAgICAgICAg
IGlmIChWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlRm9yTWFpbldvcmxkLklzRW1wdHkoKSkg
ewogICAgICAgICAgICAgVjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZUZvck1haW5Xb3JsZCA9
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6T2Jq
ZWN0VGVtcGxhdGU6Ok5ldygpKTsKLSAgICAgICAgICAgIENvbmZpZ3VyZVNoYWRvd09iamVjdFRl
bXBsYXRlKFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGVGb3JNYWluV29ybGQsIGlzb2xhdGUp
OworICAgICAgICAgICAgQ29uZmlndXJlU2hhZG93T2JqZWN0VGVtcGxhdGUoVjhET01XaW5kb3dT
aGFkb3dPYmplY3RDYWNoZUZvck1haW5Xb3JsZCwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGVG
b3JNYWluV29ybGQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3RUZW1wbGF0ZT4gVjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZUZvck5vbk1h
aW5Xb3JsZDsKICAgICAgICAgaWYgKFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGVGb3JOb25N
YWluV29ybGQuSXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBWOERPTVdpbmRvd1NoYWRvd09iamVj
dENhY2hlRm9yTm9uTWFpbldvcmxkID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRl
Pjo6TmV3KGlzb2xhdGUsIHY4OjpPYmplY3RUZW1wbGF0ZTo6TmV3KCkpOwotICAgICAgICAgICAg
Q29uZmlndXJlU2hhZG93T2JqZWN0VGVtcGxhdGUoVjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNo
ZUZvck5vbk1haW5Xb3JsZCwgaXNvbGF0ZSk7CisgICAgICAgICAgICBDb25maWd1cmVTaGFkb3dP
YmplY3RUZW1wbGF0ZShWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlRm9yTm9uTWFpbldvcmxk
LCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
VjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZUZvck5vbk1haW5Xb3JsZDsKICAgICB9CkBAIC0z
NTE3LDcgKzM1NzgsNyBAQCBFTkQKICAgICAgICAgICAgIEBhcmdzID0gKCk7CiAgICAgICAgICAg
ICBmb3JlYWNoIG15ICRwYXJhbSAoQHBhcmFtcykgewogICAgICAgICAgICAgICAgIG15ICRwYXJh
bU5hbWUgPSAkcGFyYW0tPm5hbWU7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7cGFyYW1OYW1lfUhhbmRsZSA9ICIgLiBOYXRp
dmVUb0pTVmFsdWUoJHBhcmFtLCAkcGFyYW1OYW1lLCAidjg6OkhhbmRsZTx2ODo6T2JqZWN0Pigp
IiwgInY4Q29udGV4dC0+R2V0SXNvbGF0ZSgpIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7cGFyYW1OYW1l
fUhhbmRsZSA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJHBhcmFtLCAkcGFyYW1OYW1lLCAidjg6Okhh
bmRsZTx2ODo6T2JqZWN0PigpIiwgInY4Q29udGV4dC0+R2V0SXNvbGF0ZSgpIiwgIiIpIC4gIjtc
biIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgke3BhcmFt
TmFtZX1IYW5kbGUuSXNFbXB0eSgpKSB7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgaWYgKCFpc1NjcmlwdENvbnRyb2xsZXJUZXJtaW5hdGluZygpKVxu
Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICBDUkFT
SCgpO1xuIik7CkBAIC0zODk1LDkgKzM5NTYsOSBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxT
dHJpbmcKICAgICBteSAkbmF0aXZlVmFsdWU7CiAgICAgIyBGSVhNRTogVXBkYXRlIGZvciBhbGwg
U2NyaXB0V3JhcHBhYmxlcy4KICAgICBpZiAoSXNET01Ob2RlVHlwZSgkaW50ZXJmYWNlTmFtZSkp
IHsKLSAgICAgICAgJG5hdGl2ZVZhbHVlID0gTmF0aXZlVG9KU1ZhbHVlKCRmdW5jdGlvbi0+c2ln
bmF0dXJlLCAkcmV0dXJuLCAiYXJncy5Ib2xkZXIoKSIsICJhcmdzLkdldElzb2xhdGUoKSIsICJh
cmdzIiwgImltcCIsICJSZXR1cm5VbnNhZmVIYW5kbGUiKTsKKyAgICAgICAgJG5hdGl2ZVZhbHVl
ID0gTmF0aXZlVG9KU1ZhbHVlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLCAkcmV0dXJuLCAiYXJncy5I
b2xkZXIoKSIsICJhcmdzLkdldElzb2xhdGUoKSIsICJhcmdzIiwgImltcCIsICJSZXR1cm5VbnNh
ZmVIYW5kbGUiLCAiIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgJG5hdGl2ZVZhbHVlID0gTmF0
aXZlVG9KU1ZhbHVlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLCAkcmV0dXJuLCAiYXJncy5Ib2xkZXIo
KSIsICJhcmdzLkdldElzb2xhdGUoKSIsIDAsIDAsICJSZXR1cm5VbnNhZmVIYW5kbGUiKTsKKyAg
ICAgICAgJG5hdGl2ZVZhbHVlID0gTmF0aXZlVG9KU1ZhbHVlKCRmdW5jdGlvbi0+c2lnbmF0dXJl
LCAkcmV0dXJuLCAiYXJncy5Ib2xkZXIoKSIsICJhcmdzLkdldElzb2xhdGUoKSIsIDAsIDAsICJS
ZXR1cm5VbnNhZmVIYW5kbGUiLCAiIik7CiAgICAgfQogCiAgICAgJHJlc3VsdCAuPSAkaW5kZW50
IC4gInJldHVybiAiIC4gJG5hdGl2ZVZhbHVlIC4gIjtcbiI7CkBAIC00MTQxLDcgKzQyMDIsNyBA
QCBzdWIgQ3JlYXRlQ3VzdG9tU2lnbmF0dXJlCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoR2V0VjhIZWFkZXJOYW1lKCR0eXBl
KSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIlY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOCR7dHlwZX06OmluZm8s
IHdvcmxkVHlwZSkiOworICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIlY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOCR7dHlwZX06OmluZm8sIGN1cnJlbnRX
b3JsZFR5cGUpIjsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICRyZXN1bHQgLj0gInY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCkiOwpAQCAtNDI4
Niw2ICs0MzQ3LDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgIG15ICRnZXRTY3JpcHRXcmFw
cGFibGVBcmcgPSAkZ2V0U2NyaXB0V3JhcHBhYmxlID8gIiwgJGdldFNjcmlwdFdyYXBwYWJsZSIg
OiAiIjsKICAgICBteSAkcmV0dXJuSGFuZGxlVHlwZSA9IHNoaWZ0OwogICAgIG15ICRyZXR1cm5I
YW5kbGVUeXBlQXJnID0gJHJldHVybkhhbmRsZVR5cGUgPyAiLCAkcmV0dXJuSGFuZGxlVHlwZSIg
OiAiIjsKKyAgICBteSAkZm9yTWFpbldvcmxkU3VmZml4ID0gc2hpZnQ7CiAKICAgICBteSAkdHlw
ZSA9ICRzaWduYXR1cmUtPnR5cGU7CiAKQEAgLTQzNDMsNyArNDQwNSw3IEBAIHN1YiBOYXRpdmVU
b0pTVmFsdWUKIAogICAgIGlmIChJc0RPTU5vZGVUeXBlKCR0eXBlKSB8fCAkdHlwZSBlcSAiRXZl
bnRUYXJnZXQiKSB7CiAgICAgICBpZiAoJGdldFNjcmlwdFdyYXBwYWJsZSkgewotICAgICAgICAg
IHJldHVybiAidG9WOEZhc3QoJHZhbHVlJGdldEhvbGRlckNvbnRhaW5lckFyZyRnZXRTY3JpcHRX
cmFwcGFibGVBcmcpIjsKKyAgICAgICAgICByZXR1cm4gInRvVjhGYXN0JHtmb3JNYWluV29ybGRT
dWZmaXh9KCR2YWx1ZSRnZXRIb2xkZXJDb250YWluZXJBcmckZ2V0U2NyaXB0V3JhcHBhYmxlQXJn
KSI7CiAgICAgICB9CiAgICAgICByZXR1cm4gInRvVjgoJHZhbHVlLCAkZ2V0Q3JlYXRpb25Db250
ZXh0LCAkZ2V0SXNvbGF0ZSkiOwogICAgIH0KQEAgLTQzNjMsNyArNDQyNSw3IEBAIHN1YiBOYXRp
dmVUb0pTVmFsdWUKICAgICBBZGRUb0ltcGxJbmNsdWRlcygid3RmL0dldFB0ci5oIik7CiAKICAg
ICBpZiAoJGdldFNjcmlwdFdyYXBwYWJsZSkgewotICAgICAgICAgIHJldHVybiAidG9WOEZhc3Qo
JHZhbHVlJGdldEhvbGRlckNvbnRhaW5lckFyZyRnZXRTY3JpcHRXcmFwcGFibGVBcmcpIjsKKyAg
ICAgICAgICByZXR1cm4gInRvVjhGYXN0JGZvck1haW5Xb3JsZFN1ZmZpeCgkdmFsdWUkZ2V0SG9s
ZGVyQ29udGFpbmVyQXJnJGdldFNjcmlwdFdyYXBwYWJsZUFyZykiOwogICAgIH0KICAgICByZXR1
cm4gInRvVjgoJHZhbHVlLCAkZ2V0Q3JlYXRpb25Db250ZXh0LCAkZ2V0SXNvbGF0ZSkiOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQK
aW5kZXggMjhjYmVlM2VkNjQyNzNlYzliYjJjZDBmMzhmNjRlZDFhYTMyOTE5NS4uNjY5MjhlNzky
MTM3MTllYTk3MGM2MzJjZGNlYTM2NWZhNWM2MDRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CkBAIC0xMjgsNiArMTI4LDcgQEAg
VjhFbmFibGVkUGVyQ29udGV4dD0qCiBWOEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbERvY3VtZW50
fEltcGxFbGVtZW50Um9vdHxJbXBsT3duZXJSb290fEltcGxPd25lck5vZGVSb290CiBWOE5vV3Jh
cHBlckNhY2hlCiBWOE1lYXN1cmVBcz0qCitWOFBlcldvcmxkQmluZGluZ3MKIFY4UmVhZE9ubHkK
IFY4U2tpcFZUYWJsZVZhbGlkYXRpb24KIFY4VW5mb3JnZWFibGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3Bw
CmluZGV4IGJlMGZhNTQwNTVhZDI3Zjg3NmRlZDEzZjk3MmQzODczMzM5MmFmNmIuLmFhMDJmOTA2
OTY3ZTJjNmIyMDAwMzc4MTg4MDU0NGNmMzU1YThkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApA
QCAtMTM1LDE0ICsxMzUsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RmxvYXQ2NEFycmF5
Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICByZXR1cm4g
RmxvYXQ2NEFycmF5VjhJbnRlcm5hbDo6Y29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhGbG9hdDY0QXJy
YXlUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOEZsb2F0NjRBcnJh
eVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewog
ICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25h
dHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKLSAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25m
aWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiRmxvYXQ2NEFycmF5IiwgVjhBcnJh
eUJ1ZmZlclZpZXc6OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSksIFY4RmxvYXQ2NEFy
cmF5OjppbnRlcm5hbEZpZWxkQ291bnQsCisgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29u
ZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIkZsb2F0NjRBcnJheSIsIFY4QXJy
YXlCdWZmZXJWaWV3OjpHZXRUZW1wbGF0ZShpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSwgVjhG
bG9hdDY0QXJyYXk6OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgMCwgMCwKLSAgICAgICAg
VjhGbG9hdDY0QXJyYXlNZXRob2RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4RmxvYXQ2NEFycmF5TWV0
aG9kcyksIGlzb2xhdGUpOworICAgICAgICBWOEZsb2F0NjRBcnJheU1ldGhvZHMsIFdURl9BUlJB
WV9MRU5HVEgoVjhGbG9hdDY0QXJyYXlNZXRob2RzKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlw
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2Vz
LCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4RmxvYXQ2
NEFycmF5Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRl
bXBsYXRlPiBpbnN0YW5jZSA9IGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKTsKQEAgLTE1Myw3ICsx
NTMsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZp
Z3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6OgogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVy
ZSAnZm9vJwogICAgIGNvbnN0IGludCBmb29BcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBmb29Bcmd2W2Zvb0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhGbG9hdDMyQXJyYXk6OmluZm8sIHdvcmxkVHlw
ZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBmb29Bcmd2W2Zvb0Fy
Z2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhG
bG9hdDMyQXJyYXk6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2
ODo6U2lnbmF0dXJlPiBmb29TaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZm9v
QXJnYywgZm9vQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImZv
byIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KEZsb2F0NjRBcnJheVY4SW50ZXJuYWw6OmZv
b01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBmb29TaWduYXR1cmUpKTsKIApAQCAtMTYy
LDIzICsxNjIsMjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKHY4OjoKICAgICByZXR1cm4gZGVzYzsK
IH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RmxvYXQ2NEFycmF5
OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3Js
ZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhGbG9hdDY0QXJy
YXk6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1
cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVN
YXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgm
aW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVu
ZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQg
PSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBp
ZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQog
ICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5k
bGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwg
PQotICAgICAgICBDb25maWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBs
YXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3Vy
ZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRX
b3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0
ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVt
cGw7CiB9CiAKLWJvb2wgVjhGbG9hdDY0QXJyYXk6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29y
bGRUeXBlKQorYm9vbCBWOEZsb2F0NjRBcnJheTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJy
ZW50V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwg
Y3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhGbG9hdDY0QXJyYXk6Okhhc0luc3RhbmNl
SW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4RmxvYXQ2NEFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhGbG9hdDY0QXJyYXkuaAppbmRleCBkYzU0ZjAwZTBiNWQwNDg1Mzg3NWQzNGJlYjZmOTNh
ZGVmYjk4ZTJiLi4zODk5NWY2Mzg1NDgyNzdjZDJkMDRiZTg4NjFhYmNkYjZlM2FjNjJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0
QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhG
bG9hdDY0QXJyYXkuaApAQCAtNzIsNiArNzIsMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4KEZsb2F0NjRBcnJheSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmUK
ICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoRmxvYXQ2NEFycmF5
KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29y
bGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRo
Q2hlY2soaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01E
YXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVy
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1w
bCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVy
Q29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjhGYXN0KEZsb2F0NjRBcnJheSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250
YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtODQsNiArOTUsMjUgQEAgaW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChGbG9hdDY0QXJyYXkqIGltcGwsIGNvbnN0
IEhvbGRlckNvbnRhaW5lciYKIH0KIAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBj
bGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9y
TWFpbldvcmxkKEZsb2F0NjRBcnJheSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250
YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29u
dGFpbmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWlt
cGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBl
ckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVy
KCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJD
b250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgRmxvYXQ2NEFycmF5ID4gaW1wbCwgY29u
c3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQorewor
ICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdy
YXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBX
cmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQ
dHI8IEZsb2F0NjRBcnJheSA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVy
LCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKICAgICByZXR1cm4gdG9WOEZhc3QoaW1wbC5nZXQo
KSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cAppbmRleCAyNDJiYjdlZmMyYmViNGQxNGE4MTYxOTM0ZWUwMmY0Y2Q5OWI4NzY4Li42YWI2NjFk
ODEzMmI2M2UyZmNiOGU3YjkzNzczN2UxZTBiNTQxZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZl
RE9NT2JqZWN0LmNwcApAQCAtMTc1LDE3ICsxNzUsMTcgQEAgc3RhdGljIHZvaWQgVGVzdEFjdGl2
ZURPTU9iamVjdERvbWFpblNhZmVGdW5jdGlvblNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmEKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBW
OFRlc3RBY3RpdmVET01PYmplY3RBdHRyc1tdID0gewogICAgIC8vIEF0dHJpYnV0ZSAnZXhjaXRp
bmdBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJl
eGNpdGluZ0F0dHIiLCBUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhjaXRpbmdBdHRy
QXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImV4Y2l0aW5nQXR0
ciIsIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpleGNpdGluZ0F0dHJBdHRyR2V0dGVy
Q2FsbGJhY2ssIDAsIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsKIAotc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmpl
Y3RUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RBY3RpdmVE
T01PYmplY3RUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVz
Yywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlw
ZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4
OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4
RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RBY3RpdmVET01P
YmplY3QiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0QWN0
aXZlRE9NT2JqZWN0OjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIFY4VGVzdEFjdGl2ZURP
TU9iamVjdEF0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdEFjdGl2ZURPTU9iamVjdEF0dHJz
KSwKLSAgICAgICAgMCwgMCwgaXNvbGF0ZSk7CisgICAgICAgIDAsIDAsIGlzb2xhdGUsIGN1cnJl
bnRXb3JsZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4g
c29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICB2ODo6TG9jYWw8djg6Ok9iamVj
dFRlbXBsYXRlPiBpbnN0YW5jZSA9IGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKTsKICAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90byA9IGRlc2MtPlByb3RvdHlwZVRlbXBsYXRl
KCk7CkBAIC0xOTUsNyArMTk1LDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGEKIAogICAgIC8v
IEN1c3RvbSBTaWduYXR1cmUgJ2V4Y2l0aW5nRnVuY3Rpb24nCiAgICAgY29uc3QgaW50IGV4Y2l0
aW5nRnVuY3Rpb25BcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBleGNpdGluZ0Z1bmN0aW9uQXJndltleGNpdGluZ0Z1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOE5vZGU6OmluZm8sIHdvcmxk
VHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBleGNpdGluZ0Z1
bmN0aW9uQXJndltleGNpdGluZ0Z1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOE5vZGU6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUp
IH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBleGNpdGluZ0Z1bmN0aW9uU2lnbmF0
dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGV4Y2l0aW5nRnVuY3Rpb25BcmdjLCBleGNp
dGluZ0Z1bmN0aW9uQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2wo
ImV4Y2l0aW5nRnVuY3Rpb24iKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0QWN0aXZl
RE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhjaXRpbmdGdW5jdGlvbk1ldGhvZENhbGxiYWNrLCB2OFVu
ZGVmaW5lZCgpLCBleGNpdGluZ0Z1bmN0aW9uU2lnbmF0dXJlKSk7CiAKQEAgLTIwNywyMyArMjA3
LDIzIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmln
dXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0VGVtcGxhCiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RBY3RpdmVET01PYmplY3Q6
OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxk
VHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RBY3RpdmVE
T01PYmplY3Q6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRU
eXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVt
cGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSku
ZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5
cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciBy
ZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsK
KyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVu
ZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
dGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGF0ZShk
YXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsK
LSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAg
ICAgICBDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGF0ZShkYXRhLT5yYXdUZW1w
bGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUp
OworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVt
cGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RBY3RpdmVET01PYmplY3Q6
Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RBY3RpdmVET01P
YmplY3Q6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICBy
ZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8s
IHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQog
CiBib29sIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9N
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
QWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggNmJhZDk5MDIxYjJjOWFhZDI4NmFlYjk4ZGM3MzUwNTY1
Zjg2ZTE2Mi4uNDkxYTNhYTk5MTM4YTFmNWYzYmI3YTY3N2I5MmZhYTdlYWZiY2NjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2
ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RBY3RpdmVET01PYmplY3QuaApAQCAtNzUsNiArNzUsMTcgQEAgaW5saW5lIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RBY3RpdmVET01PYmplY3QqIGltcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamUKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQo
VGVzdEFjdGl2ZURPTU9iamVjdCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUo
aXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAg
ICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwp
OworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOwor
ICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHRl
bXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXBsLCBj
b25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7
CkBAIC04Nyw2ICs5OCwyNSBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0
KFRlc3RBY3RpdmVET01PYmplY3QqIGltcGwsIGNvbnN0IEhvbGRlckNvbgogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVzdEFjdGl2ZURPTU9iamVjdCog
aW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBh
YmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVyLkdldElzb2xhdGUoKSkgPT0g
TWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhO
dWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAg
ICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICBy
ZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRl
KCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJs
ZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFz
c1JlZlB0cjwgVGVzdEFjdGl2ZURPTU9iamVjdCA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5l
ciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZh
c3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOworfQorCisK
K3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0QWN0aXZlRE9N
T2JqZWN0ID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJs
ZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWlu
ZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRl
eCBiYWQ4NTJkZjhkZjYxOWY1NTY2NTM0NGQ0NjE5ODhjYzY4YjY4MDNiLi40NDdkZmFmYTg4NTVk
YjQ2NzU4OWVkMTA4YjBiMDQ0ZTZjMWQxM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1l
ZEdldHRlci5jcHAKQEAgLTkxLDE0ICs5MSwxNCBAQCBzdGF0aWMgY29uc3QgVjhET01Db25maWd1
cmF0aW9uOjpCYXRjaGVkTWV0aG9kIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyTWV0aG9kc1tdCiAg
ICAgeyJhbm90aGVyRnVuY3Rpb24iLCBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJWOEludGVybmFsOjph
bm90aGVyRnVuY3Rpb25NZXRob2RDYWxsYmFja30sCiB9OwogCi1zdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5hbWVkR2V0dGVy
VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXJUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVz
Yywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlw
ZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4
OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4
RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RDdXN0b21OYW1l
ZEdldHRlciIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RD
dXN0b21OYW1lZEdldHRlcjo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICAwLCAwLAotICAg
ICAgICBWOFRlc3RDdXN0b21OYW1lZEdldHRlck1ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoVjhU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJNZXRob2RzKSwgaXNvbGF0ZSk7CisgICAgICAgIFY4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyTWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RDdXN0b21OYW1l
ZEdldHRlck1ldGhvZHMpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICBVTlVTRURf
UEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJl
IHVzZWQuCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBkZXNj
LT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4g
cHJvdG8gPSBkZXNjLT5Qcm90b3R5cGVUZW1wbGF0ZSgpOwpAQCAtMTEyLDIzICsxMTIsMjMgQEAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRl
c3RDdXN0b21OYW1lZEdldHRlclRlbXAKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUp
Cit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXI6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxh
dGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmlu
ZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUp
LmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1
bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAg
ICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgp
KQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBo
YW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVt
cGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRlbXBsYXRlKGRh
dGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwot
ICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAg
ICAgIENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyVGVtcGxhdGUoZGF0YS0+cmF3VGVt
cGxhdGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBl
KTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8sIHRl
bXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXI6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RDdXN0b21O
YW1lZEdldHRlcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewot
ICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgm
aW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7
CiB9CiAKIGJvb2wgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Okhhc0luc3RhbmNlSW5BbnlXb3Js
ZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAppbmRleCBmNzE3YTBmYjZmM2FiMTVmOTQ4Mjky
NjkyZWIzZWQwM2M1YWVjMGE5Li5iMGViMjkxM2JhZWFmOGQ2NjQ2MzhmNmQxZmE3MTNlN2NhMGNh
YTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaApAQCAtNzYsNiArNzYsMTcg
QEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RDdXN0b21OYW1lZEdldHRl
ciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2IKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjhGb3JNYWluV29ybGQoVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXBsLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAg
QVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VM
WSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CisgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJG
b3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFw
cGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RDdXN0b21O
YW1lZEdldHRlciogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBw
YWJsZSogd3JhcHBhYmxlKQogewpAQCAtODgsNiArOTksMjUgQEAgaW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGltcGwsIGNvbnN0IEhv
bGRlckMKIH0KIAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFi
bGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRl
c3RDdXN0b21OYW1lZEdldHRlciogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWlu
ZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFp
bmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwp
KQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZv
ck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCks
IGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250
YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdEN1c3RvbU5hbWVkR2V0dGVyID4gaW1w
bCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxl
KQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWlu
ZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBj
bGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBh
c3NSZWZQdHI8IFRlc3RDdXN0b21OYW1lZEdldHRlciA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRh
aW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKICAgICByZXR1cm4gdG9W
OEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGI0YWU0NGM1OWU0NDcxNjM0NWIxM2E5YTkyZWNkZTIw
MDMzODlkMjcuLmNjYzNlNTNjODA3MDQ3ZDY0OTdkYWJkOWIzYzAxNWUzOTAzNzdmZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTExNSw5ICsxMTUsOSBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1
dGUgVjhUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHJzW10gPSB7CiAgICAgLy8gQXR0cmlidXRlICdh
dHRyMScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiYXR0
cjEiLCBUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWw6OmF0dHIxQXR0ckdldHRlckNhbGxi
YWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImF0dHIxIiwgVGVzdEV2ZW50Q29uc3RydWN0
b3JWOEludGVybmFsOjphdHRyMUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdhdHRyMicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1
dGUnIEV4dEF0dHI6ICdJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3RvcicpCi0gICAgeyJhdHRy
MiIsIFRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjJBdHRyR2V0dGVyQ2FsbGJh
Y2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiYXR0cjIiLCBUZXN0RXZlbnRDb25zdHJ1Y3Rv
clY4SW50ZXJuYWw6OmF0dHIyQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwLCAwLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKIH07CiAKIGJvb2wgZmlsbFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdChUZXN0RXZlbnRD
b25zdHJ1Y3RvckluaXQmIGV2ZW50SW5pdCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucykKQEAg
LTEzNywxNCArMTM3LDE0IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RFdmVudENvbnN0
cnVjdG9yOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1CiAgICAgcmV0dXJuIFRl
c3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6Y29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0
RXZlbnRDb25zdHJ1Y3RvclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5
cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3Vy
ZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUg
Y3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAg
ICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVs
dFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywg
IlRlc3RFdmVudENvbnN0cnVjdG9yIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+KCksIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmludGVybmFsRmllbGRDb3VudCwKICAgICAg
ICAgVjhUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdEV2
ZW50Q29uc3RydWN0b3JBdHRycyksCi0gICAgICAgIDAsIDAsIGlzb2xhdGUpOworICAgICAgICAw
LCAwLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVs
dFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAgICAg
ZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0b3JD
YWxsYmFjayk7CiAgICAgCkBAIC0xNTQsMjMgKzE1NCwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JU
ZW1wbAogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7
CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJl
c3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNv
bGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1h
cChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEt
PnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVz
dWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1
cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8s
IHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0RXZl
bnRDb25zdHJ1Y3RvclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29y
bGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVN
YXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBs
OwogfQogCi1ib29sIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6Okhhc0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5
cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsK
KyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2Uo
JmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogYm9vbCBWOFRlc3RFdmVudENv
bnN0cnVjdG9yOjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5o
CmluZGV4IGZjNGEwMTMzNGE5ZTJmNjgyNjA3OThjZmEzNTBiZmFjYzdhZGYxNzIuLjQ1OTIyZmU4
ZDcwZDM5NDY3NDgwNzU1ODI3MTk4YjJlOGVlMDg0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29u
c3RydWN0b3IuaApAQCAtNzcsNiArNzcsMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4KFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmoKICAg
ICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoVGVzdEV2ZW50Q29uc3Ry
dWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1h
aW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVs
bFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9
IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdy
YXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3Jh
cChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBI
b2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOEZhc3QoVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcGwsIGNvbnN0IEhvbGRlckNv
bnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTg5LDYgKzEw
MCwyNSBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RFdmVudENv
bnN0cnVjdG9yKiBpbXBsLCBjb25zdCBIb2xkZXJDbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xk
ZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcGwsIGNvbnN0
IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAg
ICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpID09IE1haW5Xb3JsZCk7
CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWlu
ZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBE
T01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFw
cGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAo
aW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IFRl
c3RFdmVudENvbnN0cnVjdG9yID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWlu
ZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5X
b3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8
Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RFdmVudENvbnN0cnVjdG9yID4g
aW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBh
YmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBw
YWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCBlNTI1ODFhMzBmNmVmYTkzYTFh
NzFjMGIyMmU5MjRkY2U4YmVhMWY4Li4wYzhlYTFhZThmZWM1NWY0MmQ1OWFmOTkzMDE0MjRlYzhk
ZjdmYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKQEAgLTE1OSwxNCArMTU5LDE0IEBA
IHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRNZXRob2QgVjhUZXN0RXZl
bnRUYXJnZXRNZXRob2RzW10gPSB7CiAgICAgeyJyZW1vdmVFdmVudExpc3RlbmVyIiwgVGVzdEV2
ZW50VGFyZ2V0VjhJbnRlcm5hbDo6cmVtb3ZlRXZlbnRMaXN0ZW5lck1ldGhvZENhbGxiYWNrfSwK
IH07CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmln
dXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29y
bGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25m
aWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBj
dXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAg
ICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBkZWZhdWx0
U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAi
VGVzdEV2ZW50VGFyZ2V0Iiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCks
IFY4VGVzdEV2ZW50VGFyZ2V0OjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIDAsIDAsCi0g
ICAgICAgIFY4VGVzdEV2ZW50VGFyZ2V0TWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RF
dmVudFRhcmdldE1ldGhvZHMpLCBpc29sYXRlKTsKKyAgICAgICAgVjhUZXN0RXZlbnRUYXJnZXRN
ZXRob2RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdEV2ZW50VGFyZ2V0TWV0aG9kcyksIGlzb2xh
dGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJl
KTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICB2ODo6TG9jYWw8
djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKTsK
ICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90byA9IGRlc2MtPlByb3RvdHlw
ZVRlbXBsYXRlKCk7CkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKHYK
IAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2Rpc3BhdGNoRXZlbnQnCiAgICAgY29uc3QgaW50
IGRpc3BhdGNoRXZlbnRBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBkaXNwYXRjaEV2ZW50QXJndltkaXNwYXRjaEV2ZW50QXJnY10gPSB7IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOEV2ZW50OjppbmZvLCB3b3JsZFR5
cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGlzcGF0Y2hFdmVu
dEFyZ3ZbZGlzcGF0Y2hFdmVudEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5yYXdUZW1wbGF0ZSgmVjhFdmVudDo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAg
ICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGRpc3BhdGNoRXZlbnRTaWduYXR1cmUgPSB2ODo6
U2lnbmF0dXJlOjpOZXcoZGVzYywgZGlzcGF0Y2hFdmVudEFyZ2MsIGRpc3BhdGNoRXZlbnRBcmd2
KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZGlzcGF0Y2hFdmVudCIp
LCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RFdmVudFRhcmdldFY4SW50ZXJuYWw6OmRp
c3BhdGNoRXZlbnRNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZGlzcGF0Y2hFdmVudFNp
Z25hdHVyZSkpOwogCkBAIC0xODgsMjMgKzE4OCwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUo
dgogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gVjhUZXN0RXZlbnRUYXJnZXQ6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBWOFRlc3RFdmVudFRhcmdldDo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklz
b2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVt
cGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEt
PnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVt
cGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3Js
ZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAo
Y3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwog
CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEV2ZW50
VGFyZ2V0VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xh
dGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmlu
Zm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZShk
YXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJl
bnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFk
ZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RFdmVu
dFRhcmdldDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdEV2
ZW50VGFyZ2V0OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0g
ICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZp
bmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsK
IH0KIAogYm9vbCBWOFRlc3RFdmVudFRhcmdldDo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dFRhcmdldC5oCmluZGV4IGZlMDA4NTEzNGY3OTMwN2FkNjQ5ZjU5Y2E4ZDQ0Zjc3YzQxMmIzYTUu
Ljg3NTU2MjQ3NzAwYjBmNmNkYjI5YzM4YTBkZWY4ZDYyNTAyOGUxZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dFRhcmdldC5oCkBAIC03OSw2ICs3OSwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjgoVGVzdEV2ZW50VGFyZ2V0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+CiAgICAg
cmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9yTWFpbldvcmxkKFRlc3RFdmVudFRhcmdldCog
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxk
KTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENo
ZWNrKGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0
YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5J
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGws
IGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNv
bnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4RmFzdChUZXN0RXZlbnRUYXJnZXQqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29u
dGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTkxLDYgKzEwMiwyNSBAQCBpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RFdmVudFRhcmdldCogaW1wbCwg
Y29uc3QgSG9sZGVyQ29udGFpbgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIs
IGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RG
b3JNYWluV29ybGQoVGVzdEV2ZW50VGFyZ2V0KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlw
ZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VM
WSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7
CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRX
cmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5I
b2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhv
bGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0RXZlbnRUYXJnZXQgPiBp
bXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFi
bGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRh
aW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIs
IGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3Qo
UGFzc1JlZlB0cjwgVGVzdEV2ZW50VGFyZ2V0ID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVy
JiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFz
dChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3Bw
CmluZGV4IGU2YzUxYjI5MzJkOGNkZjFiZDM3YTdkNjJiN2EyZmU5OTI2YmU0N2UuLjZjZTdiNTk1
ZThhOWIxMDc1NGNiMWI1YzhhNzc2MTZlODhjYTg3ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3Bw
CkBAIC04NCwxNyArODQsMTcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuYW1lQXR0
ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogCiBzdGF0aWMgY29u
c3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdEV4Y2VwdGlvbkF0
dHJzW10gPSB7CiAgICAgLy8gQXR0cmlidXRlICduYW1lJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJp
YnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJuYW1lIiwgVGVzdEV4Y2VwdGlvblY4SW50ZXJuYWw6
Om5hbWVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsibmFtZSIs
IFRlc3RFeGNlcHRpb25WOEludGVybmFsOjpuYW1lQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwLCAw
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKIH07CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXhjZXB0aW9uVGVtcGxhdGUodjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFw
cGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXhjZXB0aW9uVGVtcGxhdGUodjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFw
cGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90
b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJl
OwogICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRl
bXBsYXRlKGRlc2MsICJUZXN0RXhjZXB0aW9uIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+KCksIFY4VGVzdEV4Y2VwdGlvbjo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAg
ICBWOFRlc3RFeGNlcHRpb25BdHRycywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RFeGNlcHRpb25B
dHRycyksCi0gICAgICAgIDAsIDAsIGlzb2xhdGUpOworICAgICAgICAwLCAwLCBpc29sYXRlLCBj
dXJyZW50V29ybGRUeXBlKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8v
IEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAgICAgCiAKQEAgLTEwMywyMyAr
MTAzLDIzIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29u
ZmlndXJlVjhUZXN0RXhjZXB0aW9uVGVtcGxhdGUodjg6CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAK
LXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFeGNlcHRpb246Okdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlw
ZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFeGNlcHRpb246
OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJl
bnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5m
byk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgp
KQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBk
YXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAo
cmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAg
ICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVT
Y29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQot
ICAgICAgICBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0
ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1w
bGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVW
OFRlc3RFeGNlcHRpb25UZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdv
cmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRl
TWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1w
bDsKIH0KIAotYm9vbCBWOFRlc3RFeGNlcHRpb246Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29y
bGRUeXBlKQorYm9vbCBWOFRlc3RFeGNlcHRpb246Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3Vy
cmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUs
IGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiBib29sIFY4VGVzdEV4Y2VwdGlvbjo6SGFzSW5zdGFu
Y2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKaW5kZXggYmFlMjJlY2EyODg1MTc1NjA0MTc4NTNhOGI5
ZDQ3Yzk5MTMxODIyOS4uMDcyYWJjZjJlMjY3MWRlYzQyZmEyM2RlMDBhZWFiMmM5NTNhNjE4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RFeGNlcHRpb24uaApAQCAtNzUsNiArNzUsMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4KFRlc3RFeGNlcHRpb24qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gY3IKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwog
fQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoVGVzdEV4
Y2VwdGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0g
TWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhO
dWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVy
ID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICgh
d3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3
cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNz
IEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4RmFzdChUZXN0RXhjZXB0aW9uKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWlu
ZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CkBAIC04Nyw2ICs5OCwyNSBA
QCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RFeGNlcHRpb24qIGlt
cGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lcgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250
YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OEZhc3RGb3JNYWluV29ybGQoVGVzdEV4Y2VwdGlvbiogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFp
bmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3Js
ZFR5cGUoY29udGFpbmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5M
SUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRl
KCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6
Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWlu
ZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdEV4Y2VwdGlvbiA+
IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBw
YWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29u
dGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5l
ciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFz
dChQYXNzUmVmUHRyPCBUZXN0RXhjZXB0aW9uID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVy
JiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFz
dChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3Bw
CmluZGV4IDljYzBjZDgyZDVlYzRkZDM1ODRmNzMyZWI2ZjQyMWM5YTcwZTI0ZWYuLjdkYWU1OGE3
MTY5ZjFjNDEwYjNiZjgzNmIzODJhYTcxZmQ5MjY1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3Bw
CkBAIC0zNTcsMjcgKzM1NywyNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0
cnVjdG9yKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiBzdGF0aWMgY29uc3QgVjhET01Db25m
aWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdEludGVyZmFjZUF0dHJzW10gPSB7CiAj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgLy8gQXR0
cmlidXRlICdzdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHInIChUeXBlOiAncmVhZG9ubHkg
YXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCi0gICAgeyJz
dXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHIiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6
c3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKKyAgICB7InN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0ciIsIFRlc3RJ
bnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHJBdHRyR2V0
dGVyQ2FsbGJhY2ssIDAsIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogI2VuZGlmIC8vIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogI2lmIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIC8vIEF0dHJpYnV0ZSAnc3VwcGxlbWVudGFs
U3RhdGljQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDb25kaXRpb25hbCBJbXBs
ZW1lbnRlZEJ5JykKLSAgICB7InN1cHBsZW1lbnRhbFN0YXRpY0F0dHIiLCBUZXN0SW50ZXJmYWNl
VjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVz
dEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRyU2V0dGVyQ2Fs
bGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3VwcGxlbWVudGFsU3RhdGljQXR0ciIsIFRl
c3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljQXR0ckF0
dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAjZW5kaWYgLy8gRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgLy8gQXR0cmlidXRlICdzdXBwbGVtZW50
YWxTdHIxJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFs
IEltcGxlbWVudGVkQnknKQotICAgIHsic3VwcGxlbWVudGFsU3RyMSIsIFRlc3RJbnRlcmZhY2VW
OEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIxQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKKyAgICB7InN1cHBsZW1lbnRhbFN0cjEiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5h
bDo6c3VwcGxlbWVudGFsU3RyMUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAg
Ly8gQXR0cmlidXRlICdzdXBwbGVtZW50YWxTdHIyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0
cjogJ0NvbmRpdGlvbmFsIEltcGxlbWVudGVkQnknKQotICAgIHsic3VwcGxlbWVudGFsU3RyMiIs
IFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIyQXR0ckdldHRlckNhbGxi
YWNrLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyMkF0dHJTZXR0ZXJD
YWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJzdXBwbGVtZW50YWxTdHIyIiwgVGVzdElu
dGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRl
c3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIyQXR0clNldHRlckNhbGxiYWNr
LCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8
IEVOQUJMRShDb25kaXRpb24xMikKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKICAgICAvLyBBdHRyaWJ1dGUgJ3N1cHBsZW1lbnRhbFN0cjMnIChUeXBlOiAn
YXR0cmlidXRlJyBFeHRBdHRyOiAnQ3VzdG9tU2V0dGVyIEN1c3RvbUdldHRlciBDb25kaXRpb25h
bCBJbXBsZW1lbnRlZEJ5JykKLSAgICB7InN1cHBsZW1lbnRhbFN0cjMiLCBUZXN0SW50ZXJmYWNl
VjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyM0F0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdEludGVy
ZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjNBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIHsic3VwcGxlbWVudGFsU3RyMyIsIFRlc3RJbnRlcmZhY2VWOEludGVy
bmFsOjpzdXBwbGVtZW50YWxTdHIzQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0SW50ZXJmYWNlVjhJ
bnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyM0F0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTIpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAg
ICAgLy8gQXR0cmlidXRlICdzdXBwbGVtZW50YWxOb2RlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0
QXR0cjogJ0NvbmRpdGlvbmFsIEltcGxlbWVudGVkQnknKQotICAgIHsic3VwcGxlbWVudGFsTm9k
ZSIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTm9kZUF0dHJTZXR0
ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJzdXBwbGVtZW50YWxOb2RlIiwgVGVz
dEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0clNldHRlckNhbGxi
YWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKIH07CiAKQEAgLTQxOCwxNCArNDE4LDE0IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFRlc3RJbnRlcmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYKICAgICByZXR1cm4gVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OmNv
bnN0cnVjdG9yKGFyZ3MpOwogfQogCi1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBl
cldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBl
cldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90
eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsK
ICAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1w
bGF0ZShkZXNjLCAiVGVzdEludGVyZmFjZSIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPigpLCBWOFRlc3RJbnRlcmZhY2U6OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAg
VjhUZXN0SW50ZXJmYWNlQXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0SW50ZXJmYWNlQXR0
cnMpLAotICAgICAgICBWOFRlc3RJbnRlcmZhY2VNZXRob2RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4
VGVzdEludGVyZmFjZU1ldGhvZHMpLCBpc29sYXRlKTsKKyAgICAgICAgVjhUZXN0SW50ZXJmYWNl
TWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RJbnRlcmZhY2VNZXRob2RzKSwgaXNvbGF0
ZSwgY3VycmVudFdvcmxkVHlwZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUp
OyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogI2lmIEVOQUJMRShURVNU
X0lOVEVSRkFDRSkKICAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOFRlc3RJbnRlcmZhY2U6OmNv
bnN0cnVjdG9yQ2FsbGJhY2spOwpAQCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxh
dGUodjg6CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdzdXBwbGVtZW50YWxNZXRob2QyJwog
ICAgIGNvbnN0IGludCBzdXBwbGVtZW50YWxNZXRob2QyQXJnYyA9IDI7Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3VwcGxlbWVudGFsTWV0aG9kMkFyZ3Zbc3VwcGxlbWVu
dGFsTWV0aG9kMkFyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjpp
bmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
c3VwcGxlbWVudGFsTWV0aG9kMkFyZ3Zbc3VwcGxlbWVudGFsTWV0aG9kMkFyZ2NdID0geyB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9
OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc3VwcGxlbWVudGFsTWV0aG9kMlNpZ25h
dHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBzdXBwbGVtZW50YWxNZXRob2QyQXJnYywg
c3VwcGxlbWVudGFsTWV0aG9kMkFyZ3YpOwogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJz
dXBwbGVtZW50YWxNZXRob2QyIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEludGVy
ZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE1ldGhvZDJNZXRob2RDYWxsYmFjaywgdjhVbmRl
ZmluZWQoKSwgc3VwcGxlbWVudGFsTWV0aG9kMlNpZ25hdHVyZSkpOwpAQCAtNDUzLDIzICs0NTMs
MjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1
cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6R2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQor
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6R2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdv
cmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsK
LSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisg
ICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEt
PnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1
bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAg
IHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAg
ICAgIENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZp
bmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVz
dEludGVyZmFjZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRU
eXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAo
Y3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwog
fQogCi1ib29sIFY4VGVzdEludGVyZmFjZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5
cGUpCitib29sIFY4VGVzdEludGVyZmFjZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50
V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3Vy
cmVudFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhUZXN0SW50ZXJmYWNlOjpIYXNJbnN0YW5jZUlu
QW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RJbnRlcmZhY2UuaAppbmRleCBhZWExOWM5ODQ1YjFhYWJhMGNlMDJhYTdlNmI3OTU4
Nzk1N2IxYTc3Li44ZDUxMDhhNzgyYzAxOWVlZDIzZmFiNmM1YTEwMmE1ZTQ4YTg2NmU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEludGVyZmFjZS5oCkBAIC03OSw2ICs3OSwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoVGVzdEludGVyZmFjZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cgogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAK
K2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0SW50ZXJm
YWNlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWlu
V29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxX
aXRoQ2hlY2soaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBE
T01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFw
cGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAo
aW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9s
ZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjhGYXN0KFRlc3RJbnRlcmZhY2UqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYg
Y29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTkxLDYgKzEwMiwyNSBAQCBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RJbnRlcmZhY2UqIGltcGws
IGNvbnN0IEhvbGRlckNvbnRhaW5lcgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWlu
ZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZh
c3RGb3JNYWluV29ybGQoVGVzdEludGVyZmFjZSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVy
JiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5
cGUoY29udGFpbmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtF
TFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkp
OworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0
V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIu
SG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBI
b2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdEludGVyZmFjZSA+IGlt
cGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJs
ZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFp
bmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwg
Y2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQ
YXNzUmVmUHRyPCBUZXN0SW50ZXJmYWNlID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBj
b250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChp
bXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggODVmY2M1Y2MxMTU0ZDdmNWViYjc1ZDBlZjZj
YWRlMzFkMmFhZTViZC4uYjFmZjIzY2M0OGUwYjRhMzk5MjI4Y2IwMTBmNGQ2YWM5ZWE4OTg1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtOTIs
MTQgKzkyLDE0IEBAIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRNZXRo
b2QgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lck1ldGhvCiAgICAgeyJtZXRob2QiLCBUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclY4SW50ZXJuYWw6Om1ldGhvZE1ldGhvZENhbGxiYWNrfSwK
IH07CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmln
dXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldv
cmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUZW1wbGF0ZSh2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xh
dGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBkZXNjLT5SZWFk
T25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRT
aWduYXR1cmU7CiAgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29u
ZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgMCwgMCwKLSAgICAgICAgVjhUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lck1ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lck1ldGhvZHMpLCBpc29sYXRlKTsKKyAgICAgICAgVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lck1ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lck1ldGhvZHMpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAg
ICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdp
bGwgbm90IGJlIHVzZWQuCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFu
Y2UgPSBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RU
ZW1wbGF0ZT4gcHJvdG8gPSBkZXNjLT5Qcm90b3R5cGVUZW1wbGF0ZSgpOwpAQCAtMTEyLDIzICsx
MTIsMjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25m
aWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmUKICAgICByZXR1cm4gZGVzYzsKIH0KIAot
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXI6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRU
eXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0
ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVy
SXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0
ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVt
cGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlw
ZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJy
ZW50V29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAg
ICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUp
LCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSku
YWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlw
ZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1
cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0K
IAotYm9vbCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRU
eXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6SGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxk
VHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0lu
c3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAppbmRleCAxMDcxN2ZmYjk4NzBmZWRmMWVkMjgwOTli
N2U1Zjg4YmM4NWYxOWJlLi5kYTRlOGY4MWIwZmFjYzhkZGE4NzIxOTA2NDU4OWIwZjJlZTBmOTdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTc1LDYg
Kzc1LDE3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lciogaW1wbCwgdjg6OkhhbmRsZTx2CiAgICAgcmV0dXJuIHdyYXAoaW1wbCwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4Rm9yTWFpbldvcmxkKFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBpbXBsLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOworICAg
IGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNv
bGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6
OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVy
LCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0
KFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CkBAIC04Nyw2ICs5OCwyNSBAQCBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyKiBpbXBsLCBjb25zdCBIbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWlu
ZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZh
c3RGb3JNYWluV29ybGQoVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIGNvbnN0IEhv
bGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBB
U1NFUlQod29ybGRUeXBlKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpID09IE1haW5Xb3JsZCk7Cisg
ICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIu
R2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01E
YXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVy
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1w
bCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwordGVt
cGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250
YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1h
aW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxh
dGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJs
ZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWlu
ZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
OGQwNTRkY2NmMjBiNmRjOTI1MjM1YjkxYzZmNmU1ZTU1MzVjYjQ1NS4uNDE5NWYzMDA2OGMxMzcw
YjVmOWRkMjc5Y2JhNTM2ODgxMDY5NmY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVj
dG9yLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6CiAgICAg
cmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCi12ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhU
ZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY2FjaGVkVGVtcGxhdGU7CiAg
ICAgaWYgKCFjYWNoZWRUZW1wbGF0ZS5Jc0VtcHR5KCkpCkBAIC0xMjEsMjAgKzEyMSwyMCBAQCB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TmFtZWRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yOjpHZXRUZW1wbAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+
IGluc3RhbmNlID0gcmVzdWx0LT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgICAgaW5zdGFuY2UtPlNl
dEludGVybmFsRmllbGRDb3VudChWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjppbnRlcm5hbEZpZWxk
Q291bnQpOwogICAgIHJlc3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgi
VGVzdE5hbWVkQ29uc3RydWN0b3IiKSk7Ci0gICAgcmVzdWx0LT5Jbmhlcml0KFY4VGVzdE5hbWVk
Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKGlzb2xhdGUsIHdvcmxkVHlwZSkpOworICAgIHJlc3Vs
dC0+SW5oZXJpdChWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZShpc29sYXRlLCBj
dXJyZW50V29ybGRUeXBlKSk7CiAKICAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHJlc3VsdCk7CiAgICAgcmV0dXJu
IGNhY2hlZFRlbXBsYXRlOwogfQogCi1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbGF0ZSh2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUs
IFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3ROYW1lZENvbnN0cnVjdG9yVGVtcGxhdGUo
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+
UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZh
dWx0U2lnbmF0dXJlOwogICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246
OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIsIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpp
bnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIDAsIDAsCi0gICAgICAgIDAsIDAsIGlzb2xhdGUp
OworICAgICAgICAwLCAwLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICBVTlVTRURf
UEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJl
IHVzZWQuCiAgICAgCiAKQEAgLTE0MywyMyArMTQzLDIzIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRl
bXBsCiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsK
ICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0
ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVz
dWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29s
YXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFw
KGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+
dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1
bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3Vy
ZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywg
d29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3ROYW1l
ZENvbnN0cnVjdG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3Js
ZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1h
cChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7
CiB9CiAKLWJvb2wgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6Okhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJX
b3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOwor
ICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgm
aW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiBib29sIFY4VGVzdE5hbWVkQ29u
c3RydWN0b3I6Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgK
aW5kZXggMzBhNzU2YjY0OWI2OWJhNWQ5NDNkMWU3OGRlOGM4MzNjZTU1MjM1NC4uODVlYzVmZGJk
MGU1YjA1MWNkMmY0ZGNjNzM1NDRiYjZhNzAyNWVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5oCkBAIC04Miw2ICs4MiwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjgoVGVzdE5hbWVkQ29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iagogICAg
IHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0TmFtZWRDb25zdHJ1
Y3RvciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFp
bldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxs
V2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0g
RE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3Jh
cHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFw
KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhv
bGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4RmFzdChUZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1wbCwgY29uc3QgSG9sZGVyQ29u
dGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtOTQsNiArMTA1
LDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE5hbWVkQ29u
c3RydWN0b3IqIGltcGwsIGNvbnN0IEhvbGRlckNvCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRl
ckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1wbCwgY29uc3Qg
SG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAg
IEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsK
KyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5l
ci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERP
TURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBw
ZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChp
bXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0
ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVz
dE5hbWVkQ29uc3RydWN0b3IgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5l
ciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldv
cmxkKGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxj
bGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdE5hbWVkQ29uc3RydWN0b3IgPiBp
bXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFi
bGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBh
YmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROb2RlLmNwcAppbmRleCAyNTk4ODUzMGYwYjg3YjIyZjhmMDJjZTY5OGQwMTk4NDBm
MTllMDAzLi42ZGExZGU0MjZjZjE3ODQzNGZkOWQ2YjY3MzllNWZiZjA1NWI5YmQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5v
ZGUuY3BwCkBAIC05MywxNCArOTMsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE5v
ZGU6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBy
ZXR1cm4gVGVzdE5vZGVWOEludGVybmFsOjpjb25zdHJ1Y3RvcihhcmdzKTsKIH0KIAotc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3ROb2Rl
VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0Tm9kZVRlbXBs
YXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRl
c2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4g
ZGVmYXVsdFNpZ25hdHVyZTsKLSAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0
aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdE5vZGUiLCBWOE5vZGU6OkdldFRlbXBs
YXRlKGlzb2xhdGUsIHdvcmxkVHlwZSksIFY4VGVzdE5vZGU6OmludGVybmFsRmllbGRDb3VudCwK
KyAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1w
bGF0ZShkZXNjLCAiVGVzdE5vZGUiLCBWOE5vZGU6OkdldFRlbXBsYXRlKGlzb2xhdGUsIGN1cnJl
bnRXb3JsZFR5cGUpLCBWOFRlc3ROb2RlOjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIDAs
IDAsCi0gICAgICAgIDAsIDAsIGlzb2xhdGUpOworICAgICAgICAwLCAwLCBpc29sYXRlLCBjdXJy
ZW50V29ybGRUeXBlKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIElu
IHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAgICAgZGVzYy0+U2V0Q2FsbEhhbmRs
ZXIoVjhUZXN0Tm9kZTo6Y29uc3RydWN0b3JDYWxsYmFjayk7CiAgICAgCkBAIC0xMTAsMjMgKzEx
MCwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZp
Z3VyZVY4VGVzdE5vZGVUZW1wbGF0ZSh2ODo6UGVycwogICAgIHJldHVybiBkZXNjOwogfQogCi12
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Tm9kZTo6R2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5vZGU6OkdldFRlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUp
CiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJl
c3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYg
KHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVy
SXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0
ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRh
dGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4g
cmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25m
aWd1cmVWOFRlc3ROb2RlVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlw
ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBl
KS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0Tm9kZVRlbXBsYXRl
KGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3Vy
cmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSku
YWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdE5v
ZGU6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3ROb2RlOjpI
YXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwg
d29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogYm9vbCBW
OFRlc3ROb2RlOjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCmluZGV4IDk0NGIyYTg5YjhkYzhkOWY1
ZTJiYjllNDBlYzFlNWY4YzM4ZTI4ZGIuLmFjZmUxNTU0Y2VlMmI2ZjgwODM4YmIwYWQ5M2QwZGNl
ZjhjZTUwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE5vZGUuaApAQCAtNzcsNiArNzcsMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4KFRlc3ROb2RlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW8KICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwog
fQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoVGVzdE5v
ZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5X
b3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdp
dGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERP
TURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBw
ZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChp
bXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xk
ZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZhc3QoVGVzdE5vZGUqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFp
bmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTg5LDYgKzEwMCwyNSBAQCBpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3ROb2RlKiBpbXBsLCBjb25zdCBIb2xk
ZXJDb250YWluZXImIGNvbgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNs
YXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JN
YWluV29ybGQoVGVzdE5vZGUqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVy
LCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5l
ci5HZXRJc29sYXRlKCkpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkK
KyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JN
YWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBj
b250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFp
bmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhG
YXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8IFRlc3ROb2RlID4gaW1wbCwgY29uc3QgSG9sZGVy
Q29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVy
biB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7
Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+
CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RO
b2RlID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSog
d3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIs
IHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDcyMDVhZTEzNjAyMTUyOGI5MzllZTFjMWZmN2Ji
Yjg2Mjg0NzhiZDMuLmZjYWNiMGNiODFhZjVmMzEyNzE0MDU0YzIyM2I2YjhhZDZkN2NjYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPYmouY3BwCkBAIC0zMDgwLDE1NSArMzA4MCwxNTUgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjb25zdHJ1Y3Rvcihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiBzdGF0aWMg
Y29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdE9iakF0dHJz
W10gPSB7CiAgICAgLy8gQXR0cmlidXRlICdyZWFkT25seUxvbmdBdHRyJyAoVHlwZTogJ3JlYWRv
bmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJyZWFkT25seUxvbmdBdHRyIiwgVGVz
dE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAorICAgIHsicmVhZE9ubHlMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFs
OjpyZWFkT25seUxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwLCAwLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlYWRPbmx5U3RyaW5nQXR0cicgKFR5cGU6ICdyZWFk
b25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsicmVhZE9ubHlTdHJpbmdBdHRyIiwg
VGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5U3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywg
MCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZWFkT25seVN0cmluZ0F0dHIiLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6cmVhZE9ubHlTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwLCAwLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlYWRPbmx5VGVzdE9iakF0dHInIChU
eXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InJlYWRPbmx5VGVz
dE9iakF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0
ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZWFkT25seVRlc3RPYmpBdHRy
IiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5VGVzdE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJh
Y2ssIDAsIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnc3RhdGljUmVh
ZE9ubHlMb25nQXR0cicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQot
ICAgIHsic3RhdGljUmVhZE9ubHlMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNS
ZWFkT25seUxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAg
ICB7InN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljUmVh
ZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CiAgICAgLy8gQXR0cmlidXRlICdzdGF0aWNTdHJpbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScg
RXh0QXR0cjogJycpCi0gICAgeyJzdGF0aWNTdHJpbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6
OnN0YXRpY1N0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpz
dGF0aWNTdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7
InN0YXRpY1N0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljU3RyaW5nQXR0ckF0
dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0cmluZ0F0dHJBdHRy
U2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAn
VGVzdFN1Yk9iaicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAg
IHsiVGVzdFN1Yk9iaiIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqQ29uc3RydWN0b3JHZXR0
ZXIsIDAsICZWOFRlc3RTdWJPYmo6OmluZm8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7IlRlc3RTdWJPYmoiLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6VGVzdE9iakNvbnN0cnVjdG9yR2V0dGVyLCAwLCAwLCAwLCAmVjhUZXN0U3ViT2Jq
OjppbmZvLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdlbnVtQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4
dEF0dHI6ICcnKQotICAgIHsiZW51bUF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW51bUF0dHJB
dHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbnVtQXR0ckF0dHJTZXR0ZXJD
YWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJlbnVtQXR0ciIsIFRlc3RPYmpWOEludGVy
bmFsOjplbnVtQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVudW1B
dHRyQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRy
aWJ1dGUgJ3Nob3J0QXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsi
c2hvcnRBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnNob3J0QXR0ckF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OnNob3J0QXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCisgICAgeyJzaG9ydEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c2hvcnRBdHRy
QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c2hvcnRBdHRyQXR0clNldHRl
ckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3Vuc2ln
bmVkU2hvcnRBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJ1bnNp
Z25lZFNob3J0QXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZFNob3J0QXR0ckF0dHJH
ZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkU2hvcnRBdHRyQXR0clNl
dHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InVuc2lnbmVkU2hvcnRBdHRyIiwg
VGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkU2hvcnRBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRTaG9ydEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAs
IDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnbG9uZ0F0dHInIChUeXBlOiAn
YXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7ImxvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJu
YWw6OmxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0
dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsibG9uZ0F0dHIiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOElu
dGVybmFsOjpsb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CiAgICAgLy8gQXR0cmlidXRlICdsb25nTG9uZ0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRB
dHRyOiAnJykKLSAgICB7ImxvbmdMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpsb25nTG9u
Z0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpsb25nTG9uZ0F0dHJB
dHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsibG9uZ0xvbmdBdHRyIiwg
VGVzdE9ialY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICd1bnNpZ25lZExvbmdMb25nQXR0cicgKFR5cGU6
ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsidW5zaWduZWRMb25nTG9uZ0F0dHIiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFj
aywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJ1bnNpZ25lZExvbmdMb25nQXR0ciIsIFRlc3RPYmpW
OEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwLCAw
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0cmluZ0F0dHInIChUeXBlOiAn
YXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InN0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRl
cm5hbDo6c3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnN0
cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3RyaW5n
QXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICd0ZXN0T2JqQXR0cicgKFR5cGU6ICdhdHRy
aWJ1dGUnIEV4dEF0dHI6ICdWOE1lYXN1cmVBcycpCi0gICAgeyJ0ZXN0T2JqQXR0ciIsIFRlc3RP
YmpWOEludGVybmFsOjp0ZXN0T2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OnRlc3RPYmpBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAg
ICB7InRlc3RPYmpBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnRlc3RPYmpBdHRyQXR0ckdldHRl
ckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9iakF0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnWE1MT2JqQXR0cicg
KFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiWE1MT2JqQXR0ciIsIFRlc3RP
YmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRl
cm5hbDo6WE1MT2JqQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAg
eyJYTUxPYmpBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OlhNTE9iakF0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0clNldHRlckNhbGxiYWNrLCAw
LCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2NyZWF0ZScgKFR5cGU6ICdh
dHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiY3JlYXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6
OmNyZWF0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmNyZWF0ZUF0dHJT
ZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJjcmVhdGUiLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6Y3JlYXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3Jl
YXRlQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRy
aWJ1dGUgJ3JlZmxlY3RlZFN0cmluZ0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAn
UmVmbGVjdCcpCi0gICAgeyJyZWZsZWN0ZWRTdHJpbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6
OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFs
OjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
KyAgICB7InJlZmxlY3RlZFN0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVk
U3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZFN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAg
IC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkSW50ZWdyYWxBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScg
RXh0QXR0cjogJ1JlZmxlY3QnKQotICAgIHsicmVmbGVjdGVkSW50ZWdyYWxBdHRyIiwgVGVzdE9i
alY4SW50ZXJuYWw6OnJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVz
dE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCisgICAgeyJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6cmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6cmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwLCAw
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlZmxlY3RlZFVuc2lnbmVkSW50
ZWdyYWxBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1JlZmxlY3QnKQotICAgIHsi
cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVj
dGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVy
bmFsOjpyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCisgICAgeyJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIsIFRlc3RP
YmpWOEludGVybmFsOjpyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJHZXR0ZXJDYWxs
YmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0
clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUg
J3JlZmxlY3RlZEJvb2xlYW5BdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1JlZmxl
Y3QnKQotICAgIHsicmVmbGVjdGVkQm9vbGVhbkF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVm
bGVjdGVkQm9vbGVhbkF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisg
ICAgeyJyZWZsZWN0ZWRCb29sZWFuQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRC
b29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZEJvb2xlYW5BdHRyQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAg
ICAvLyBBdHRyaWJ1dGUgJ3JlZmxlY3RlZFVSTEF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRB
dHRyOiAnVVJMIFJlZmxlY3QnKQotICAgIHsicmVmbGVjdGVkVVJMQXR0ciIsIFRlc3RPYmpWOElu
dGVybmFsOjpyZWZsZWN0ZWRVUkxBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRl
cm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CisgICAgeyJyZWZsZWN0ZWRVUkxBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVS
TEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRVUkxB
dHRyQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRy
aWJ1dGUgJ3JlZmxlY3RlZFN0cmluZ0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAn
UmVmbGVjdCcpCi0gICAgeyJyZWZsZWN0ZWRTdHJpbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6
OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFs
OjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
KyAgICB7InJlZmxlY3RlZFN0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVk
U3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZFN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAg
IC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyJyAoVHlwZTogJ2F0dHJp
YnV0ZScgRXh0QXR0cjogJ1JlZmxlY3QnKQotICAgIHsicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxB
dHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUludGVncmFs
QXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZWZsZWN0ZWRD
dXN0b21JbnRlZ3JhbEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tSW50
ZWdyYWxBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVk
Q3VzdG9tSW50ZWdyYWxBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyJyAoVHlwZTog
J2F0dHJpYnV0ZScgRXh0QXR0cjogJ1JlZmxlY3QnKQotICAgIHsicmVmbGVjdGVkQ3VzdG9tQm9v
bGVhbkF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJB
dHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21Cb29s
ZWFuQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZWZsZWN0
ZWRDdXN0b21Cb29sZWFuQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21C
b29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlZmxlY3RlZEN1c3RvbVVSTEF0dHInIChUeXBlOiAnYXR0
cmlidXRlJyBFeHRBdHRyOiAnVVJMIFJlZmxlY3QnKQotICAgIHsicmVmbGVjdGVkQ3VzdG9tVVJM
QXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0ckdldHRl
ckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJT
ZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZWZsZWN0ZWRDdXN0b21VUkxB
dHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0dGVy
Q2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNl
dHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3R5
cGVkQXJyYXlBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJ0eXBl
ZEFycmF5QXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5QXR0ckF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJyYXlBdHRyQXR0clNldHRlckNhbGxi
YWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InR5cGVkQXJyYXlBdHRyIiwgVGVzdE9ialY4SW50
ZXJuYWw6OnR5cGVkQXJyYXlBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6dHlwZWRBcnJheUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAogICAgIC8vIEF0dHJpYnV0ZSAnYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24nIChUeXBlOiAnYXR0
cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7ImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwgVGVz
dE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2Fs
bGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJh
Y2ssIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJD
YWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdhdHRyV2l0
aFNldHRlckV4Y2VwdGlvbicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsi
YXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0
ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0
aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAg
eyJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uJyAoVHlw
ZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJzdHJpbmdBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlv
bkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InN0
cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAs
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnc3RyaW5nQXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24nIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InN0cmluZ0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3Ry
aW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAorICAgIHsic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCBUZXN0T2JqVjhJbnRl
cm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRl
c3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJD
YWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdjdXN0b21B
dHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0N1c3RvbScpCi0gICAgeyJjdXN0b21B
dHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmN1c3RvbUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRl
c3RPYmpWOEludGVybmFsOjpjdXN0b21BdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKKyAgICB7ImN1c3RvbUF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3VzdG9tQXR0ckF0
dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmN1c3RvbUF0dHJBdHRyU2V0dGVy
Q2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnd2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRo
JykKLSAgICB7IndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjp3
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAorICAgIHsid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJu
YWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4
SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCwg
MCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcp
Ci0gICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIsIFRlc3RPYmpWOElu
dGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxs
YmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7IndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRl
cm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJh
Y2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnd2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRo
JykKLSAgICB7IndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIsIFRlc3RPYmpWOEludGVy
bmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyQ2FsbGJhY2ssIFRl
c3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVy
Q2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
c0F0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAg
ICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNl
cycgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcpCi0gICAgeyJ3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIsIFRlc3RPYmpWOEludGVybmFsOjp3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7IndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIiwgVGVzdE9ialY4SW50ZXJuYWw6Ondp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVS
YWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0
dHJpYnV0ZSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcpCi0gICAgeyJ3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50
ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVB
dHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKKyAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJu
YWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRy
U2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAn
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcycg
KFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcpCi0gICAgeyJ3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgVGVzdE9ialY4
SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXNBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckNh
bGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0
ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBF
eHRBdHRyOiAnQ2FsbFdpdGgnKQotICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRy
R2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjaywg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCisgICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJHZXR0
ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrLCAwLCAw
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRBcmd1bWVudHNB
bmRDYWxsU3RhY2tBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdp
dGgnKQotICAgIHsid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIsIFRl
c3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50
c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CisgICAgeyJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIiwgVGVzdE9i
alY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRy
R2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0QXJndW1lbnRzQW5k
Q2FsbFN0YWNrQXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKICAgICAvLyBBdHRyaWJ1dGUgJ2VuZm9yY2VkUmFuZ2VMb25nQXR0cicgKFR5cGU6ICdhdHRy
aWJ1dGUnIEV4dEF0dHI6ICdFbmZvcmNlUmFuZ2UnKQotICAgIHsiZW5mb3JjZWRSYW5nZUxvbmdB
dHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nQXR0ckF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nQXR0ckF0dHJTZXR0
ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJlbmZvcmNlZFJhbmdlTG9uZ0F0dHIi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZUxvbmdBdHRyQXR0ckdldHRlckNhbGxi
YWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZUxvbmdBdHRyQXR0clNldHRlckNh
bGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2VuZm9yY2Vk
UmFuZ2VVbnNpZ25lZExvbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0VuZm9y
Y2VSYW5nZScpCi0gICAgeyJlbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0ciIsIFRlc3RPYmpW
OEludGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdBdHRyQXR0clNl
dHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImVuZm9yY2VkUmFuZ2VVbnNpZ25l
ZExvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdB
dHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZVVu
c2lnbmVkTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAog
ICAgIC8vIEF0dHJpYnV0ZSAnZW5mb3JjZWRSYW5nZUxvbmdMb25nQXR0cicgKFR5cGU6ICdhdHRy
aWJ1dGUnIEV4dEF0dHI6ICdFbmZvcmNlUmFuZ2UnKQotICAgIHsiZW5mb3JjZWRSYW5nZUxvbmdM
b25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRyQXR0
ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZUxvbmdMb25n
QXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJlbmZvcmNlZFJh
bmdlTG9uZ0xvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nTG9u
Z0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdl
TG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAg
ICAvLyBBdHRyaWJ1dGUgJ2VuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdMb25nQXR0cicgKFR5cGU6
ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdFbmZvcmNlUmFuZ2UnKQotICAgIHsiZW5mb3JjZWRSYW5n
ZVVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VV
bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6
OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCisgICAgeyJlbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nTG9uZ0F0dHIiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9u
Z0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMSkKICAgICAvLyBBdHRyaWJ1dGUgJ2NvbmRpdGlvbmFsQXR0cjEnIChU
eXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwnKQotICAgIHsiY29uZGl0aW9u
YWxBdHRyMSIsIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIxQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMUF0dHJTZXR0ZXJDYWxs
YmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJjb25kaXRpb25hbEF0dHIxIiwgVGVzdE9ialY4
SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOElu
dGVybmFsOjpjb25kaXRpb25hbEF0dHIxQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiAgICAgLy8gQXR0cmlidXRlICdjb25kaXRpb25h
bEF0dHIyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFsJykKLSAgICB7
ImNvbmRpdGlvbmFsQXR0cjIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMkF0
dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRy
U2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiY29uZGl0aW9uYWxBdHRyMiIs
IFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIyQXR0ckdldHRlckNhbGxiYWNrLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMkF0dHJTZXR0ZXJDYWxsYmFjaywgMCwg
MCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJM
RShDb25kaXRpb24yKQogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MikKICAgICAvLyBBdHRyaWJ1dGUgJ2NvbmRpdGlvbmFsQXR0cjMnIChUeXBlOiAnYXR0cmlidXRl
JyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwnKQotICAgIHsiY29uZGl0aW9uYWxBdHRyMyIsIFRlc3RP
YmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIzQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyM0F0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgeyJjb25kaXRpb25hbEF0dHIzIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRp
dGlvbmFsQXR0cjNBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRp
b25hbEF0dHIzQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNlbmRp
ZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjEpCiAgICAgLy8gQXR0cmlidXRlICdjb25kaXRpb25hbEF0dHI0JyAoVHlwZTog
J2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFsJykKLSAgICB7ImNvbmRpdGlvbmFsQXR0
cjQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9iakNvbnN0cnVjdG9yR2V0dGVyLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6VGVzdE9ialJlcGxhY2VhYmxlQXR0clNldHRlckNhbGxiYWNrLCAmVjhUZXN0
T2JqZWN0QTo6aW5mbywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAorICAgIHsiY29uZGl0aW9uYWxBdHRyNCIsIFRlc3RPYmpWOEludGVybmFs
OjpUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqUmVw
bGFjZWFibGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsICZWOFRlc3RPYmplY3RBOjppbmZvLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAj
ZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVO
QUJMRShDb25kaXRpb24yKQogICAgIC8vIEF0dHJpYnV0ZSAnY29uZGl0aW9uYWxBdHRyNScgKFR5
cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDb25kaXRpb25hbCcpCi0gICAgeyJjb25kaXRpb25h
bEF0dHI1IiwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpDb25zdHJ1Y3RvckdldHRlciwgVGVz
dE9ialY4SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJTZXR0ZXJDYWxsYmFjaywgJlY4
VGVzdE9iamVjdEI6OmluZm8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKKyAgICB7ImNvbmRpdGlvbmFsQXR0cjUiLCBUZXN0T2JqVjhJbnRl
cm5hbDo6VGVzdE9iakNvbnN0cnVjdG9yR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9i
alJlcGxhY2VhYmxlQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAmVjhUZXN0T2JqZWN0Qjo6aW5m
bywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAgICAgLy8gQXR0cmli
dXRlICdjb25kaXRpb25hbEF0dHI2JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRp
dGlvbmFsJykKLSAgICB7ImNvbmRpdGlvbmFsQXR0cjYiLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVz
dE9iakNvbnN0cnVjdG9yR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9ialJlcGxhY2Vh
YmxlQXR0clNldHRlckNhbGxiYWNrLCAmVjhUZXN0T2JqZWN0Qzo6aW5mbywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiY29uZGl0
aW9uYWxBdHRyNiIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIs
IFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqUmVwbGFjZWFibGVBdHRyU2V0dGVyQ2FsbGJhY2ss
IDAsIDAsICZWOFRlc3RPYmplY3RDOjppbmZvLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEp
IHx8IEVOQUJMRShDb25kaXRpb24yKQogICAgIC8vIEF0dHJpYnV0ZSAnY2FjaGVkQXR0cmlidXRl
MScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWNoZWRBdHRyaWJ1dGUn
KQotICAgIHsiY2FjaGVkQXR0cmlidXRlMSIsIFRlc3RPYmpWOEludGVybmFsOjpjYWNoZWRBdHRy
aWJ1dGUxQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImNhY2hl
ZEF0dHJpYnV0ZTEiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y2FjaGVkQXR0cmlidXRlMUF0dHJHZXR0
ZXJDYWxsYmFjaywgMCwgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdj
YWNoZWRBdHRyaWJ1dGUyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ0Nh
Y2hlZEF0dHJpYnV0ZScpCi0gICAgeyJjYWNoZWRBdHRyaWJ1dGUyIiwgVGVzdE9ialY4SW50ZXJu
YWw6OmNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAorICAgIHsiY2FjaGVkQXR0cmlidXRlMiIsIFRlc3RPYmpWOEludGVybmFsOjpjYWNoZWRBdHRy
aWJ1dGUyQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAv
LyBBdHRyaWJ1dGUgJ2FueUF0dHJpYnV0ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcn
KQotICAgIHsiYW55QXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OmFueUF0dHJpYnV0ZUF0
dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmFueUF0dHJpYnV0ZUF0dHJTZXR0
ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJhbnlBdHRyaWJ1dGUiLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6YW55QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRl
cm5hbDo6YW55QXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKICAgICAvLyBBdHRyaWJ1dGUgJ2Zsb2F0QXJyYXknIChUeXBlOiAnYXR0cmlidXRlJyBFeHRB
dHRyOiAnJykKLSAgICB7ImZsb2F0QXJyYXkiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZmxvYXRBcnJh
eUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyU2V0
dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiZmxvYXRBcnJheSIsIFRlc3RPYmpW
OEludGVybmFsOjpmbG9hdEFycmF5QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6ZmxvYXRBcnJheUF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAg
ICAgLy8gQXR0cmlidXRlICdkb3VibGVBcnJheScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6
ICcnKQotICAgIHsiZG91YmxlQXJyYXkiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZG91YmxlQXJyYXlB
dHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0dHJTZXR0
ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJkb3VibGVBcnJheSIsIFRlc3RPYmpW
OEludGVybmFsOjpkb3VibGVBcnJheUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJu
YWw6OmRvdWJsZUFycmF5QXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
ICAgICAvLyBBdHRyaWJ1dGUgJ2NvbnRlbnREb2N1bWVudCcgKFR5cGU6ICdyZWFkb25seSBhdHRy
aWJ1dGUnIEV4dEF0dHI6ICdDaGVja1NlY3VyaXR5Rm9yTm9kZScpCi0gICAgeyJjb250ZW50RG9j
dW1lbnQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29udGVudERvY3VtZW50QXR0ckdldHRlckNhbGxi
YWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImNvbnRlbnREb2N1bWVudCIsIFRlc3RPYmpW
OEludGVybmFsOjpjb250ZW50RG9jdW1lbnRBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnbXV0YWJsZVBvaW50JyAoVHlwZTogJ2F0
dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJtdXRhYmxlUG9pbnQiLCBUZXN0T2JqVjhJbnRl
cm5hbDo6bXV0YWJsZVBvaW50QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6
bXV0YWJsZVBvaW50QXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7Im11
dGFibGVQb2ludCIsIFRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRBdHRyR2V0dGVyQ2Fs
bGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRBdHRyU2V0dGVyQ2FsbGJhY2ss
IDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnaW1tdXRhYmxlUG9pbnQn
IChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnSW1tdXRhYmxlJykKLSAgICB7ImltbXV0YWJs
ZVBvaW50IiwgVGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50QXR0ckdldHRlckNhbGxi
YWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRyU2V0dGVyQ2FsbGJhY2ss
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAorICAgIHsiaW1tdXRhYmxlUG9pbnQiLCBUZXN0T2JqVjhJbnRlcm5h
bDo6aW1tdXRhYmxlUG9pbnRBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpp
bW11dGFibGVQb2ludEF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAg
ICAgLy8gQXR0cmlidXRlICdzdHJhd2JlcnJ5JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjog
J0ltcGxlbWVudGVkQXMnKQotICAgIHsic3RyYXdiZXJyeSIsIFRlc3RPYmpWOEludGVybmFsOjpz
dHJhd2JlcnJ5QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJy
eUF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJzdHJhd2JlcnJ5Iiwg
VGVzdE9ialY4SW50ZXJuYWw6OnN0cmF3YmVycnlBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpW
OEludGVybmFsOjpzdHJhd2JlcnJ5QXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0cmljdEZsb2F0JyAoVHlwZTogJ2F0dHJpYnV0ZScg
RXh0QXR0cjogJ1N0cmljdFR5cGVDaGVja2luZycpCi0gICAgeyJzdHJpY3RGbG9hdCIsIFRlc3RP
YmpWOEludGVybmFsOjpzdHJpY3RGbG9hdEF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OnN0cmljdEZsb2F0QXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAg
ICB7InN0cmljdEZsb2F0IiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZsb2F0QXR0ckdldHRl
ckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRyU2V0dGVyQ2FsbGJh
Y2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnZGVzY3JpcHRpb24n
IChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7ImRlc2NyaXB0
aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6OmRlc2NyaXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCAw
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKKyAgICB7ImRlc2NyaXB0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6
OmRlc2NyaXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
ICAgICAvLyBBdHRyaWJ1dGUgJ2lkJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0g
ICAgeyJpZCIsIFRlc3RPYmpWOEludGVybmFsOjppZEF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OmlkQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7
ImlkIiwgVGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6aWRBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAg
IC8vIEF0dHJpYnV0ZSAnaGFzaCcgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6
ICcnKQotICAgIHsiaGFzaCIsIFRlc3RPYmpWOEludGVybmFsOjpoYXNoQXR0ckdldHRlckNhbGxi
YWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7Imhhc2giLCBUZXN0T2JqVjhJbnRlcm5hbDo6
aGFzaEF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8g
QXR0cmlidXRlICdyZXBsYWNlYWJsZUF0dHJpYnV0ZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1
dGUnIEV4dEF0dHI6ICdSZXBsYWNlYWJsZScpCi0gICAgeyJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIs
IFRlc3RPYmpWOEludGVybmFsOjpyZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJTZXR0ZXJDYWxsYmFj
aywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIsIFRlc3RPYmpW
OEludGVybmFsOjpyZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdudWxsYWJsZURvdWJsZUF0dHJpYnV0
ZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsibnVsbGFi
bGVEb3VibGVBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVEb3VibGVBdHRy
aWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsibnVsbGFi
bGVEb3VibGVBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVEb3VibGVBdHRy
aWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8v
IEF0dHJpYnV0ZSAnbnVsbGFibGVMb25nQXR0cmlidXRlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJp
YnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJudWxsYWJsZUxvbmdBdHRyaWJ1dGUiLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6bnVsbGFibGVMb25nQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCAwLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyAgICB7Im51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIsIFRlc3RPYmpWOElu
dGVybmFsOjpudWxsYWJsZUxvbmdBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAs
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnbnVsbGFibGVCb29sZWFuQXR0cmli
dXRlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJudWxs
YWJsZUJvb2xlYW5BdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVCb29sZWFu
QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7Im51
bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUJvb2xl
YW5BdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAog
ICAgIC8vIEF0dHJpYnV0ZSAnbnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUnIChUeXBlOiAncmVhZG9u
bHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7Im51bGxhYmxlU3RyaW5nQXR0cmlidXRl
IiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRlckNh
bGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7Im51bGxhYmxlU3RyaW5nQXR0cmlidXRl
IiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nQXR0cmlidXRlQXR0ckdldHRlckNh
bGxiYWNrLCAwLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ251bGxh
YmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycp
Ci0gICAgeyJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFs
OjpudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0clNldHRlckNhbGxi
YWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7Im51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRl
IiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRy
aWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0
dHJpYnV0ZSAnbnVsbGFibGVTdHJpbmdWYWx1ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6
ICcnKQotICAgIHsibnVsbGFibGVTdHJpbmdWYWx1ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxs
YWJsZVN0cmluZ1ZhbHVlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVs
bGFibGVTdHJpbmdWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAg
eyJudWxsYWJsZVN0cmluZ1ZhbHVlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5n
VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmlu
Z1ZhbHVlQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKIH07CiAKIHN0
YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRNZXRob2QgVjhUZXN0T2JqTWV0
aG9kc1tdID0gewpAQCAtMzMzMSwxNCArMzMzMSwxNCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhUZXN0T2JqOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpjb25zdHJ1Y3RvcihhcmdzKTsKIH0KIAot
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRl
c3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywg
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpU
ZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAg
ICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1
cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmln
dXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RPYmplY3QiLCB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0T2JqOjppbnRlcm5hbEZpZWxkQ291
bnQsCiAgICAgICAgIFY4VGVzdE9iakF0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdE9iakF0
dHJzKSwKLSAgICAgICAgVjhUZXN0T2JqTWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RP
YmpNZXRob2RzKSwgaXNvbGF0ZSk7CisgICAgICAgIFY4VGVzdE9iak1ldGhvZHMsIFdURl9BUlJB
WV9MRU5HVEgoVjhUZXN0T2JqTWV0aG9kcyksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwog
ICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQg
d2lsbCBub3QgYmUgdXNlZC4KICAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOFRlc3RPYmo6OmNv
bnN0cnVjdG9yQ2FsbGJhY2spOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGlu
c3RhbmNlID0gZGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgpOwpAQCAtMzM0OSw0MyArMzM0OSw0MyBA
QCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4
VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjplbmFibGVkQXRSdW50aW1lQXR0cjFFbmFibGVkKCkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0
IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XAogICAgICAg
ICAvLyBBdHRyaWJ1dGUgJ2VuYWJsZWRBdFJ1bnRpbWVBdHRyMScgKFR5cGU6ICdhdHRyaWJ1dGUn
IEV4dEF0dHI6ICdWOEVuYWJsZWRBdFJ1bnRpbWUnKQotICAgICAgICB7ImVuYWJsZWRBdFJ1bnRp
bWVBdHRyMSIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyR2V0
dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRy
U2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99OwotICAgICAgICBWOERPTUNvbmZpZ3VyYXRp
b246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhLCBpc29sYXRl
KTsKKyAgICAgICAgeyJlbmFibGVkQXRSdW50aW1lQXR0cjEiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfTsKKyAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVBdHRyaWJ1dGUo
aW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CiAg
ICAgfQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmZWF0dXJlTmFtZUVuYWJsZWQo
KSkgewogICAgICAgICBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0
cmlidXRlIGF0dHJEYXRhID1cCiAgICAgICAgIC8vIEF0dHJpYnV0ZSAnZW5hYmxlZEF0UnVudGlt
ZUF0dHIyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1Y4RW5hYmxlZEF0UnVudGltZScp
Ci0gICAgICAgIHsiZW5hYmxlZEF0UnVudGltZUF0dHIyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVu
YWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6
OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL307
Ci0gICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNl
LCBwcm90bywgYXR0ckRhdGEsIGlzb2xhdGUpOworICAgICAgICB7ImVuYWJsZWRBdFJ1bnRpbWVB
dHRyMiIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0dGVy
Q2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyU2V0
dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99OworICAgICAgICBWOERPTUNvbmZpZ3Vy
YXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhLCBpc29s
YXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICB9CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJl
ICd2b2lkTWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50IHZvaWRNZXRob2RXaXRoQXJnc0Fy
Z2MgPSAzOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHZvaWRNZXRob2RX
aXRoQXJnc0FyZ3Zbdm9pZE1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6Omlu
Zm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2
b2lkTWV0aG9kV2l0aEFyZ3NBcmd2W3ZvaWRNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhU
ZXN0T2JqOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNp
Z25hdHVyZT4gdm9pZE1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3
KGRlc2MsIHZvaWRNZXRob2RXaXRoQXJnc0FyZ2MsIHZvaWRNZXRob2RXaXRoQXJnc0FyZ3YpOwog
ICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ2b2lkTWV0aG9kV2l0aEFyZ3Mi
KSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6dm9pZE1ldGhv
ZFdpdGhBcmdzTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHZvaWRNZXRob2RXaXRoQXJn
c1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbG9uZ01ldGhvZFdpdGhB
cmdzJwogICAgIGNvbnN0IGludCBsb25nTWV0aG9kV2l0aEFyZ3NBcmdjID0gMzsKLSAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBsb25nTWV0aG9kV2l0aEFyZ3NBcmd2W2xvbmdN
ZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigp
LCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5cGUpIH07
CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbG9uZ01ldGhvZFdpdGhBcmdz
QXJndltsb25nTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbywgY3Vy
cmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGxvbmdNZXRo
b2RXaXRoQXJnc1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBsb25nTWV0aG9k
V2l0aEFyZ3NBcmdjLCBsb25nTWV0aG9kV2l0aEFyZ3NBcmd2KTsKICAgICBwcm90by0+U2V0KHY4
OjpTdHJpbmc6Ok5ld1N5bWJvbCgibG9uZ01ldGhvZFdpdGhBcmdzIiksIHY4OjpGdW5jdGlvblRl
bXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdNZXRob2RXaXRoQXJnc01ldGhvZENh
bGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBsb25nTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUpKTsKIAog
ICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ29iak1ldGhvZFdpdGhBcmdzJwogICAgIGNvbnN0IGlu
dCBvYmpNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IG9iak1ldGhvZFdpdGhBcmdzQXJndltvYmpNZXRob2RXaXRoQXJnc0FyZ2NdID0g
eyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1w
bGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gb2JqTWV0aG9kV2l0aEFyZ3NBcmd2W29iak1ldGhvZFdpdGhBcmdz
QXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSkt
PnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAg
djg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBvYmpNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSA9IHY4
OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBvYmpNZXRob2RXaXRoQXJnc0FyZ2MsIG9iak1ldGhvZFdp
dGhBcmdzQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm9iak1l
dGhvZFdpdGhBcmdzIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJu
YWw6Om9iak1ldGhvZFdpdGhBcmdzTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIG9iak1l
dGhvZFdpdGhBcmdzU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdtZXRo
b2RXaXRoU2VxdWVuY2VBcmcnCiAgICAgY29uc3QgaW50IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0Fy
Z2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFdpdGhT
ZXF1ZW5jZUFyZ0FyZ3ZbbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnY10gPSB7IFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOHNlcXVlbmNlPFNjcmlwdFByb2Zp
bGU+OjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdj
XSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4c2Vx
dWVuY2U8U2NyaXB0UHJvZmlsZT46OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6
OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWduYXR1cmUgPSB2
ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnYywgbWV0aG9k
V2l0aFNlcXVlbmNlQXJnQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1i
b2woIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRl
c3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoU2VxdWVuY2VBcmdNZXRob2RDYWxsYmFjaywgdjhV
bmRlZmluZWQoKSwgbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0dXJlKSk7CiAKICAgICAvLyBD
dXN0b20gU2lnbmF0dXJlICdtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzJwogICAg
IGNvbnN0IGludCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJnYyA9IDI7Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxs
QXJnc0FuZFRocm93c0FyZ3ZbbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ2Nd
ID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5cGUp
IH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kVGhhdFJlcXVp
cmVzQWxsQXJnc0FuZFRocm93c0FyZ3ZbbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93
c0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCBjdXJy
ZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbWV0aG9kVGhh
dFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhk
ZXNjLCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJnYywgbWV0aG9kVGhhdFJl
cXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzIiksIHY4OjpGdW5j
dGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFRoYXRSZXF1aXJlc0Fs
bEFyZ3NBbmRUaHJvd3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbWV0aG9kVGhhdFJl
cXVpcmVzQWxsQXJnc0FuZFRocm93c1NpZ25hdHVyZSkpOwogICAgIGRlc2MtPlNldCh2ODo6U3Ry
aW5nOjpOZXdTeW1ib2woInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIiks
IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY01ldGhv
ZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCks
IHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpKSk7CkBAIC0zNDAzLDQzICszNDAzLDQzIEBAIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0
T2JqVGVtcGxhdGUodjg6OlBlcnNpCiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdzdHJpbmdB
cnJheUZ1bmN0aW9uJwogICAgIGNvbnN0IGludCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJnYyA9IDE7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlv
bkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgd29ybGRUeXBlKSB9
OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rp
b25Bcmd2W3N0cmluZ0FycmF5RnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8sIGN1cnJlbnRXb3Js
ZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBzdHJpbmdBcnJheUZ1bmN0
aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHN0cmluZ0FycmF5RnVuY3Rp
b25BcmdjLCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3Ry
aW5nOjpOZXdTeW1ib2woInN0cmluZ0FycmF5RnVuY3Rpb24iKSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXJyYXlGdW5jdGlvbk1ldGhvZENhbGxi
YWNrLCB2OFVuZGVmaW5lZCgpLCBzdHJpbmdBcnJheUZ1bmN0aW9uU2lnbmF0dXJlKSk7CiAKICAg
ICAvLyBDdXN0b20gU2lnbmF0dXJlICdkb21TdHJpbmdMaXN0RnVuY3Rpb24nCiAgICAgY29uc3Qg
aW50IGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ3ZbZG9tU3RyaW5nTGlzdEZ1
bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBs
YXRlKCZWOERPTVN0cmluZ0xpc3Q6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkb21TdHJpbmdMaXN0RnVuY3Rpb25Bcmd2W2RvbVN0cmlu
Z0xpc3RGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5y
YXdUZW1wbGF0ZSgmVjhET01TdHJpbmdMaXN0OjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9Owog
ICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gZG9tU3RyaW5nTGlzdEZ1bmN0aW9uU2lnbmF0
dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ2Ms
IGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6ZG9tU3RyaW5nTGlzdEZ1bmN0aW9uTWV0aG9kQ2FsbGJh
Y2ssIHY4VW5kZWZpbmVkKCksIGRvbVN0cmluZ0xpc3RGdW5jdGlvblNpZ25hdHVyZSkpOwogCiAg
ICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnY29udmVydDEnCiAgICAgY29uc3QgaW50IGNvbnZlcnQx
QXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDFB
cmd2W2NvbnZlcnQxQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJh
d1RlbXBsYXRlKCZWOGE6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0MUFyZ3ZbY29udmVydDFBcmdjXSA9IHsgVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4YTo6aW5mbywgY3VycmVudFdv
cmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZlcnQxU2lnbmF0
dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGNvbnZlcnQxQXJnYywgY29udmVydDFBcmd2
KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVydDEiKSwgdjg6
OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDFNZXRob2RD
YWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVydDFTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1
c3RvbSBTaWduYXR1cmUgJ2NvbnZlcnQyJwogICAgIGNvbnN0IGludCBjb252ZXJ0MkFyZ2MgPSAx
OwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQyQXJndltjb252
ZXJ0MkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0
ZSgmVjhiOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gY29udmVydDJBcmd2W2NvbnZlcnQyQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGI6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUp
IH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBjb252ZXJ0MlNpZ25hdHVyZSA9IHY4
OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBjb252ZXJ0MkFyZ2MsIGNvbnZlcnQyQXJndik7CiAgICAg
cHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNvbnZlcnQyIiksIHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQyTWV0aG9kQ2FsbGJhY2ss
IHY4VW5kZWZpbmVkKCksIGNvbnZlcnQyU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2ln
bmF0dXJlICdjb252ZXJ0NCcKICAgICBjb25zdCBpbnQgY29udmVydDRBcmdjID0gMTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NEFyZ3ZbY29udmVydDRBcmdj
XSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4ZDo6
aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IGNvbnZlcnQ0QXJndltjb252ZXJ0NEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhkOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAg
IHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDRTaWduYXR1cmUgPSB2ODo6U2lnbmF0
dXJlOjpOZXcoZGVzYywgY29udmVydDRBcmdjLCBjb252ZXJ0NEFyZ3YpOwogICAgIHByb3RvLT5T
ZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0NCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0NE1ldGhvZENhbGxiYWNrLCB2OFVuZGVm
aW5lZCgpLCBjb252ZXJ0NFNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAn
Y29udmVydDUnCiAgICAgY29uc3QgaW50IGNvbnZlcnQ1QXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDVBcmd2W2NvbnZlcnQ1QXJnY10gPSB7IFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGU6OmluZm8sIHdv
cmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0
NUFyZ3ZbY29udmVydDVBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
cmF3VGVtcGxhdGUoJlY4ZTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZlcnQ1U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3
KGRlc2MsIGNvbnZlcnQ1QXJnYywgY29udmVydDVBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgiY29udmVydDUiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhU
ZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDVNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwg
Y29udmVydDVTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3ZhcmlhZGlj
Tm9kZU1ldGhvZCcKICAgICBjb25zdCBpbnQgdmFyaWFkaWNOb2RlTWV0aG9kQXJnYyA9IDI7Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdmFyaWFkaWNOb2RlTWV0aG9kQXJn
dlt2YXJpYWRpY05vZGVNZXRob2RBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbywgd29ybGRUeXBlKSwgVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbywgd29ybGRUeXBl
KSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHZhcmlhZGljTm9kZU1l
dGhvZEFyZ3ZbdmFyaWFkaWNOb2RlTWV0aG9kQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOE5vZGU6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUp
LCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjpp
bmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4g
dmFyaWFkaWNOb2RlTWV0aG9kU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHZh
cmlhZGljTm9kZU1ldGhvZEFyZ2MsIHZhcmlhZGljTm9kZU1ldGhvZEFyZ3YpOwogICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ2YXJpYWRpY05vZGVNZXRob2QiKSwgdjg6OkZ1
bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6dmFyaWFkaWNOb2RlTWV0aG9k
TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHZhcmlhZGljTm9kZU1ldGhvZFNpZ25hdHVy
ZSkpOwogICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVz
YywgcHJvdG8sIFY4VGVzdE9iakNvbnN0cywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RPYmpDb25z
dHMpLCBpc29sYXRlKTsKQEAgLTM0NDksMjMgKzM0NDksMjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6
UGVyc2kKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IFY4VGVzdE9iajo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdE9iajo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBk
YXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVE
YXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29y
bGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFw
KHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQo
JmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxk
VHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6Okhh
bmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKGRhdGEt
PnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAg
IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAg
IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJy
ZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVt
cGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJu
IHRlbXBsOwogfQogCi1ib29sIFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3Js
ZFR5cGUpCitib29sIFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29y
bGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5o
YXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVu
dFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZUluQW55V29ybGQo
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKQEAgLTM0
ODMsMTMgKzM0ODMsMTMgQEAgdm9pZCBWOFRlc3RPYmo6Omluc3RhbGxQZXJDb250ZXh0UHJvcGVy
dGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGluc3RhbmNlLCBUZXMKICAgICBpZiAoQ29udGV4
dEZlYXR1cmVzOjplbmFibGVkUGVyQ29udGV4dEF0dHIxRW5hYmxlZChpbXBsLT5kb2N1bWVudCgp
KSkgewogICAgICAgICBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0
cmlidXRlIGF0dHJEYXRhID1cCiAgICAgICAgIC8vIEF0dHJpYnV0ZSAnZW5hYmxlZFBlckNvbnRl
eHRBdHRyMScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdWOEVuYWJsZWRQZXJDb250ZXh0
JykKLSAgICAgICAgeyJlbmFibGVkUGVyQ29udGV4dEF0dHIxIiwgVGVzdE9ialY4SW50ZXJuYWw6
OmVuYWJsZWRQZXJDb250ZXh0QXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVy
bmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfTsKKyAgICAgICAgeyJlbmFibGVkUGVyQ29udGV4dEF0dHIxIiwgVGVzdE9ialY4SW50ZXJu
YWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOElu
dGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfTsKICAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVBdHRy
aWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSwgaXNvbGF0ZSk7CiAgICAgfQogICAgIGlm
IChDb250ZXh0RmVhdHVyZXM6OmZlYXR1cmVOYW1lRW5hYmxlZChpbXBsLT5kb2N1bWVudCgpKSkg
ewogICAgICAgICBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmli
dXRlIGF0dHJEYXRhID1cCiAgICAgICAgIC8vIEF0dHJpYnV0ZSAnZW5hYmxlZFBlckNvbnRleHRB
dHRyMicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdWOEVuYWJsZWRQZXJDb250ZXh0JykK
LSAgICAgICAgeyJlbmFibGVkUGVyQ29udGV4dEF0dHIyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVu
YWJsZWRQZXJDb250ZXh0QXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFs
OjplbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fTsKKyAgICAgICAgeyJlbmFibGVkUGVyQ29udGV4dEF0dHIyIiwgVGVzdE9ialY4SW50ZXJuYWw6
OmVuYWJsZWRQZXJDb250ZXh0QXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVy
bmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfTsKICAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVBdHRyaWJ1
dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSwgaXNvbGF0ZSk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCmlu
ZGV4IDFmMjNlNjQ1MDliYTRiYTUxMTg0ZjA2NTBmOTAzNjQ1ODYyNTUxOTUuLmRmYzQ0ZTVhMTYx
YWQ3YWM0NTdlNzc0MGNiNjFjY2VmZTdhOWVhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKQEAgLTgxLDYgKzgxLDE3IEBA
IGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0T2JqKiBpbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uCiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
Rm9yTWFpbldvcmxkKFRlc3RPYmoqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBl
KGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAg
ICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBs
KTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsK
KyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0
ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE9iaiogaW1wbCwgY29uc3QgSG9sZGVy
Q29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtOTMsNiAr
MTA0LDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE9iaiog
aW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhv
bGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0T2JqKiBpbXBsLCBjb25zdCBIb2xkZXJDb250
YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdv
cmxkVHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChV
TkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xh
dGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3Jl
OjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRh
aW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNs
YXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0T2JqID4gaW1w
bCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxl
KQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWlu
ZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBj
bGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBh
c3NSZWZQdHI8IFRlc3RPYmogPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5l
ciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0
KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcAppbmRleCA2ZWFhMzdjMTEzN2ZiMmE4NjI1Y2Q5MTY4OWU0ODRmMzVm
OThlYjM0Li5kMDM1MDFhNGNkNzQwOTRjMjkwZjJiMGM0NWVjMDYxMmE5ZjRlMGE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0xNDcsMTQgKzE0
NywxNCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2OAogICAgIHJldHVybiBUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWw6OmNvbnN0cnVjdG9yKGFyZ3MpOwogfQogCi1zdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRU
eXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1
cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUo
KTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwogICAg
IGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRl
KGRlc2MsICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIsIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjppbnRlcm5h
bEZpZWxkQ291bnQsCiAgICAgICAgIDAsIDAsCi0gICAgICAgIDAsIDAsIGlzb2xhdGUpOworICAg
ICAgICAwLCAwLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICBVTlVTRURfUEFSQU0o
ZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQu
CiAgICAgZGVzYy0+U2V0Q2FsbEhhbmRsZXIoVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
Y29uc3RydWN0b3JDYWxsYmFjayk7CiAgICAgCkBAIC0xNjQsMjMgKzE2NCwyMyBAQCBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcgogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6R2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQor
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRU
eXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVt
cGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSku
ZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5
cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciBy
ZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsK
KyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVu
ZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
dGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGVt
cGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxk
VHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBs
KTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RlbXBsYXRl
KGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3Vy
cmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSku
YWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQor
Ym9vbCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1
cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZh
bHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogYm9vbCBWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVl
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5oCmluZGV4IDE0YWFiYzRiOGEzMDg5NWJhZDZhM2UwMDZhYzhlYWQyNTZhYjVhZTgu
LmQwZTVhOWEyMmI2NmZlMDhjNGFlOWQ5MWI4YzRiNGRlZmQwYmYxZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtNzYsNiArNzYsMTcgQEAgaW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBp
bXBsLCB2ODo6SGFuZGxlPHYKICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWlu
V29ybGQoVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NF
UlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFp
bXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1h
aW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJs
ZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFw
cGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTg4LDYgKzk5LDI1IEBAIGlubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGltcGwsIGNv
bnN0IEhvCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBh
YmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBj
b250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUo
Y29udGFpbmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFko
IWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOwor
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3Jh
cHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9s
ZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xk
ZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxl
KiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0
KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJD
b250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPiBpbXBsLCBj
b25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7
CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHAKaW5kZXggZDU4YWEzZTBmNGMyMGU0M2EzN2IzODhhNzVhNzgwMTUyMTY3MWZiOC4uMDNk
MDA4MTA5MDY2MDMzMTYxMjNiMDQzOGMyMzEzOGFkYjJhMjBmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTI4MSwx
NSArMjgxLDE1IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IoY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlv
bjo6QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VB
dHRyc1tdID0gewogICAgIC8vIEF0dHJpYnV0ZSAndmFsdWUnIChUeXBlOiAnYXR0cmlidXRlJyBF
eHRBdHRyOiAnJykKLSAgICB7InZhbHVlIiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6dmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAorICAgIHsidmFsdWUiLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlVjhJbnRlcm5hbDo6dmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjp2YWx1ZUF0dHJTZXR0ZXJDYWxsYmFjaywg
MCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdyZWFkb25seVZhbHVlJyAo
VHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJyZWFkb25seVZh
bHVlIiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnJlYWRv
bmx5VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsicmVh
ZG9ubHlWYWx1ZSIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFs
OjpyZWFkb25seVZhbHVlQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwLCAwLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKICAgICAvLyBBdHRyaWJ1dGUgJ2NhY2hlZFZhbHVlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0
QXR0cjogJ0NhY2hlZEF0dHJpYnV0ZScpCi0gICAgeyJjYWNoZWRWYWx1ZSIsIFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRWYWx1ZUF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNh
Y2hlZFZhbHVlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImNhY2hl
ZFZhbHVlIiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNh
Y2hlZFZhbHVlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkVmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncG9ydHMnIChUeXBlOiAncmVhZG9ubHkg
YXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InBvcnRzIiwgVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnBvcnRzQXR0ckdldHRlckNhbGxiYWNrLCAwLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyAgICB7InBvcnRzIiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVY4SW50ZXJuYWw6OnBvcnRzQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwLCAwLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2NhY2hlZFJlYWRvbmx5VmFsdWUnIChUeXBl
OiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FjaGVkQXR0cmlidXRlJykKLSAgICB7
ImNhY2hlZFJlYWRvbmx5VmFsdWUiLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
VjhJbnRlcm5hbDo6Y2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCisgICAgeyJjYWNoZWRSZWFkb25seVZhbHVlIiwgVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0
dGVyQ2FsbGJhY2ssIDAsIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsKIAogc3RhdGljIGNvbnN0
IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZE1ldGhvZCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VNZXRob2RzW10gPSB7CkBAIC0zMDgsMTQgKzMwOCwxNCBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjb25z
dHJ1Y3RvckNhbGxiYWNrKAogICAgIHJldHVybiBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlVjhJbnRlcm5hbDo6Y29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxk
VHlwZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmln
dXJlVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVGVtcGxhdGUodjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQ
cm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0
dXJlOwogICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3Vy
ZVRlbXBsYXRlKGRlc2MsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZTo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICBWOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VBdHRycywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VBdHRycyksCi0gICAgICAgIFY4VGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZU1ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlTWV0aG9kcyksIGlzb2xhdGUpOworICAgICAg
ICBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VNZXRob2RzLCBXVEZfQVJSQVlf
TEVOR1RIKFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZU1ldGhvZHMpLCBpc29s
YXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVy
ZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAgICAgZGVzYy0+U2V0
Q2FsbEhhbmRsZXIoVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjb25zdHJ1
Y3RvckNhbGxiYWNrKTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5j
ZSA9IGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKTsKQEAgLTMyOSwyMyArMzI5LDIzIEBAIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlCiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2U6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdv
cmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29s
YXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQ
ZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBs
YXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50
ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBs
YXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRU
eXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKGN1
cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAog
ICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywg
d29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5m
bywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRh
dGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAg
IHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2U6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVu
dFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1
cnJlbnRXb3JsZFR5cGUpOwogfQogCiBib29sIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZTo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKaW5kZXggY2E5MmNjODBiYmM5MzdmOWQ4M2QyYWU0
MDdkMTNlOTA3NzlhN2UzOC4uYTg5OWE4YjNmMDZkNTU4MDQ0ZmJmYjUzYTYwZmI1OWU3Y2Y1MWE1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuaApAQCAtNzcsNiArNzcsMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4KFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcGwsIHY4OjoKICAgICBy
ZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNv
bGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICBy
ZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOwor
ICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAg
IHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHRlbXBs
YXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3
cmFwcGFibGUpCiB7CkBAIC04OSw2ICsxMDAsMjUgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4RmFzdChUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXBsLAog
fQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lu
bGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBj
b250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUo
Y29udGFpbmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFko
IWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOwor
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3Jh
cHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9s
ZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xk
ZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBX
cmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29ybGQo
aW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNsYXNz
IEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJs
ZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWlu
ZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcAppbmRleCAxZGZmYWM4ZThjMjg3N2Ni
ZjViNmZkNTc4Y2FhMTIwNWVhZTg2OTg3Li41ZjY1MGI4MGRhNDBhZjI1NmE5ZmY5NWRmYTY0ZTQ3
YTVjMzNjZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAKQEAgLTQ5OCwxOSArNDk4LDE5IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IoY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJp
YnV0ZSBWOFRlc3RUeXBlZGVmc0F0dHJzW10gPSB7CiAgICAgLy8gQXR0cmlidXRlICd1bnNpZ25l
ZExvbmdMb25nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsidW5z
aWduZWRMb25nTG9uZ0F0dHIiLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExvbmdM
b25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6dW5zaWdu
ZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsi
dW5zaWduZWRMb25nTG9uZ0F0dHIiLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjp1bnNpZ25lZExv
bmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6dW5z
aWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAogICAgIC8vIEF0dHJpYnV0ZSAnaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlJyAoVHlw
ZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0ltbXV0YWJsZScpCi0gICAgeyJpbW11dGFibGVTZXJp
YWxpemVkU2NyaXB0VmFsdWUiLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjppbW11dGFibGVTZXJp
YWxpemVkU2NyaXB0VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4SW50ZXJu
YWw6OmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCisgICAgeyJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiLCBUZXN0
VHlwZWRlZnNWOEludGVybmFsOjppbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyR2V0
dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmltbXV0YWJsZVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAg
Ly8gQXR0cmlidXRlICdUZXN0U3ViT2JqJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0
QXR0cjogJycpCi0gICAgeyJUZXN0U3ViT2JqIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6VGVz
dFR5cGVkZWZzQ29uc3RydWN0b3JHZXR0ZXIsIDAsICZWOFRlc3RTdWJPYmo6OmluZm8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7
IlRlc3RTdWJPYmoiLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpUZXN0VHlwZWRlZnNDb25zdHJ1
Y3RvckdldHRlciwgMCwgMCwgMCwgJlY4VGVzdFN1Yk9iajo6aW5mbywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0
ZSAnYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24nIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAn
JykKLSAgICB7ImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5h
bDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVm
c1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyAgICB7ImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwgVGVzdFR5cGVk
ZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRl
ckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAg
eyJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVy
bmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgeyJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50
ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0VHlw
ZWRlZnNWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFj
aywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsi
c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpz
dHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVk
ZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2Fs
bGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24iLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlv
bkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldp
dGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAogICAgIC8vIEF0dHJpYnV0ZSAnc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24nIChUeXBl
OiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InN0cmluZ0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
KyAgICB7InN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRl
cm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRl
c3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNl
dHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKIH07CiAKIHN0YXRpYyBjb25zdCBW
OERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRNZXRob2QgVjhUZXN0VHlwZWRlZnNNZXRob2RzW10g
PSB7CkBAIC01MzMsMTQgKzUzMywxNCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0VHlw
ZWRlZnM6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQogICAgIHJl
dHVybiBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpjb25zdHJ1Y3RvcihhcmdzKTsKIH0KIAotc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RU
eXBlZGVmc1RlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNj
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFR5
cGVkZWZzVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2Ms
IHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUp
CiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6
U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwogICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERP
TUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0VHlwZWRlZnMiLCB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0VHlwZWRlZnM6Omlu
dGVybmFsRmllbGRDb3VudCwKICAgICAgICAgVjhUZXN0VHlwZWRlZnNBdHRycywgV1RGX0FSUkFZ
X0xFTkdUSChWOFRlc3RUeXBlZGVmc0F0dHJzKSwKLSAgICAgICAgVjhUZXN0VHlwZWRlZnNNZXRo
b2RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdFR5cGVkZWZzTWV0aG9kcyksIGlzb2xhdGUpOwor
ICAgICAgICBWOFRlc3RUeXBlZGVmc01ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0VHlw
ZWRlZnNNZXRob2RzKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CiAgICAgVU5VU0VEX1BB
UkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1
c2VkLgogICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4VGVzdFR5cGVkZWZzOjpjb25zdHJ1Y3Rv
ckNhbGxiYWNrKTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9
IGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKTsKQEAgLTU1MSwyNSArNTUxLDI1IEBAIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0VHlwZWRl
ZnNUZW1wbGF0ZSh2ODo6CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdtZXRob2RXaXRoU2Vx
dWVuY2VBcmcnCiAgICAgY29uc3QgaW50IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2MgPSAxOwot
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFy
Z0FyZ3ZbbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOHNlcXVlbmNlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT46OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2Nd
ID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhzZXF1
ZW5jZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+OjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9Owog
ICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0
dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2Ms
IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJtZXRob2RXaXRoU2VxdWVuY2VBcmciKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjptZXRob2RXaXRoU2VxdWVuY2VBcmdNZXRob2RD
YWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0dXJlKSk7
CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdudWxsYWJsZUFycmF5QXJnJwogICAgIGNvbnN0
IGludCBudWxsYWJsZUFycmF5QXJnQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gbnVsbGFibGVBcnJheUFyZ0FyZ3ZbbnVsbGFibGVBcnJheUFyZ0FyZ2NdID0g
eyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJp
bmdbXTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IG51bGxhYmxlQXJyYXlBcmdBcmd2W251bGxhYmxlQXJyYXlBcmdBcmdjXSA9IHsgVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106
OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJl
PiBudWxsYWJsZUFycmF5QXJnU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG51
bGxhYmxlQXJyYXlBcmdBcmdjLCBudWxsYWJsZUFycmF5QXJnQXJndik7CiAgICAgcHJvdG8tPlNl
dCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm51bGxhYmxlQXJyYXlBcmciKSwgdjg6OkZ1bmN0aW9u
VGVtcGxhdGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjpudWxsYWJsZUFycmF5QXJnTWV0
aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIG51bGxhYmxlQXJyYXlBcmdTaWduYXR1cmUpKTsK
IAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmluZ0FycmF5RnVuY3Rpb24nCiAgICAgY29u
c3QgaW50IHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0
aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRl
KCZWOERPTVN0cmluZ1tdOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3RyaW5nQXJyYXlGdW5j
dGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0
ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpTaWduYXR1cmU+IHN0cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6U2ln
bmF0dXJlOjpOZXcoZGVzYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MsIHN0cmluZ0FycmF5RnVu
Y3Rpb25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3RyaW5n
QXJyYXlGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OnN0cmluZ0FycmF5RnVuY3Rpb25NZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQo
KSwgc3RyaW5nQXJyYXlGdW5jdGlvblNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25h
dHVyZSAnc3RyaW5nQXJyYXlGdW5jdGlvbjInCiAgICAgY29uc3QgaW50IHN0cmluZ0FycmF5RnVu
Y3Rpb24yQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3Ry
aW5nQXJyYXlGdW5jdGlvbjJBcmd2W3N0cmluZ0FycmF5RnVuY3Rpb24yQXJnY10gPSB7IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjpp
bmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
c3RyaW5nQXJyYXlGdW5jdGlvbjJBcmd2W3N0cmluZ0FycmF5RnVuY3Rpb24yQXJnY10gPSB7IFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1td
OjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVy
ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbjJTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVz
Yywgc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmdjLCBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ3YpOwog
ICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdHJpbmdBcnJheUZ1bmN0aW9u
MiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0
cmluZ0FycmF5RnVuY3Rpb24yTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHN0cmluZ0Fy
cmF5RnVuY3Rpb24yU2lnbmF0dXJlKSk7CiAKQEAgLTU3OCwyMyArNTc4LDIzIEBAIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0VHlwZWRl
ZnNUZW1wbGF0ZSh2ODo6CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RUeXBlZGVmczo6R2V0VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFR5cGVkZWZzOjpHZXRUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAg
IFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
OwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBk
YXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQg
IT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVE
YXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3Vy
cmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1w
bGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+
dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhU
ZXN0VHlwZWRlZnNUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwg
aXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFk
ZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRl
KGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3Vy
cmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSku
YWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdFR5
cGVkZWZzOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29s
YXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0VHlw
ZWRlZnM6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICBy
ZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8s
IHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQog
CiBib29sIFY4VGVzdFR5cGVkZWZzOjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgKaW5k
ZXggZWIzODA0NGRiNDlhZDAxZTU4OGM5Y2VmZGE1NjFmMGY2ZWZhN2UwNC4uMjViN2E1YTNmMTA0
MzcxZjBjNmVmY2RlMTI3NDA3NjljODE1YTQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmgKQEAgLTc2LDYg
Kzc2LDE3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0VHlwZWRlZnMq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlCiAgICAgcmV0dXJuIHdyYXAoaW1wbCwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4Rm9yTWFpbldvcmxkKFRlc3RUeXBlZGVmcyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFT
U0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFko
IWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9y
TWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBh
YmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0VHlwZWRlZnMq
IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBw
YWJsZSkKIHsKQEAgLTg4LDYgKzk5LDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOEZhc3QoVGVzdFR5cGVkZWZzKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImCiB9CiAK
IHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0VHlwZWRlZnMq
IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBw
YWJsZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpID09
IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4
TnVsbChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7Cisg
ICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAg
cmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0
ZSgpKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFi
bGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFBh
c3NSZWZQdHI8IFRlc3RUeXBlZGVmcyA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29u
dGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JN
YWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBs
YXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0VHlwZWRlZnMgPiBpbXBs
LCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUp
CiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKaW5kZXggYzA1MDMz
ZjBiNmNhNWMzNjk4YWE3NjQ1ODM5NmZhYTNjMTJmMGVhNi4uNDQxNWQ4NTM1NTNjNmNhMjI4ZWEz
Y2FhMjIyMDdlMDIyYzZhZTMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRE9NRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0
YVN0b3JlLmgKQEAgLTg0LDYgKzg0LDE0IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldFdyYXBw
ZXJGb3JNYWluV29ybGQoVCogb2JqZWN0KQorICAgIHsKKyAgICAgICAgaWYgKG1haW5Xb3JsZFdy
YXBwZXJJc1N0b3JlZEluT2JqZWN0KG9iamVjdCkgJiYgaXNNYWluV29ybGRPYmplY3Qob2JqZWN0
KSkKKyAgICAgICAgICAgIHJldHVybiBnZXRXcmFwcGVyRnJvbU9iamVjdChvYmplY3QpOworICAg
ICAgICByZXR1cm4gbWFpbldvcmxkU3RvcmUoKS0+Z2V0KG9iamVjdCk7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVyKFQqIG9iamVj
dCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
Y29uc3QgV3JhcHBlckNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAg
ICBpZiAobWFpbldvcmxkV3JhcHBlcklzU3RvcmVkSW5PYmplY3Qob2JqZWN0KSAmJiBpc01haW5X
b3JsZE9iamVjdChvYmplY3QpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01Db25maWd1cmF0aW9uLmNwcAppbmRleCA1ZmU3YmNmYWNkZGU1NjU3MmI1ZTIwYjBlYjM2
N2U1NjBkZWNhZTlkLi41NjFjYWJkODJiNGNiMzQ2MzRlMTIwMWM1OGRhZTUwZWRmZTQ5YTQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5j
cHAKQEAgLTMzLDEwICszMywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgVjhE
T01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXModjg6OkhhbmRsZTx2ODo6
T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4g
cHJvdG90eXBlLCBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiBhdHRyaWJ1dGVzLCBzaXplX3QgYXR0
cmlidXRlQ291bnQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordm9pZCBWOERPTUNvbmZpZ3VyYXRp
b246OmJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0
ZT4gaW5zdGFuY2UsIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90b3R5cGUsIGNv
bnN0IEJhdGNoZWRBdHRyaWJ1dGUqIGF0dHJpYnV0ZXMsIHNpemVfdCBhdHRyaWJ1dGVDb3VudCwg
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkK
IHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dHJpYnV0ZUNvdW50OyArK2kpCi0gICAg
ICAgIGNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG90eXBlLCBhdHRyaWJ1dGVzW2ld
LCBpc29sYXRlKTsKKyAgICAgICAgY29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90b3R5
cGUsIGF0dHJpYnV0ZXNbaV0sIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiB2b2lk
IFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVDb25zdGFudHModjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25EZXNjcmlwdG9yLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3RUZW1wbGF0ZT4gcHJvdG90eXBlLCBjb25zdCBCYXRjaGVkQ29uc3RhbnQqIGNvbnN0YW50
cywgc2l6ZV90IGNvbnN0YW50Q291bnQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpAQCAtNTUsNyAr
NTUsNyBAQCB2b2lkIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVDYWxsYmFja3Mo
djg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+CiB9CiAKIHY4OjpMb2NhbDx2ODo6U2lnbmF0
dXJlPiBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBmdW5jdGlvbkRlc2NyaXB0b3IsIGNvbnN0IGNoYXIqIGlu
dGVyZmFjZU5hbWUsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwYXJlbnRD
bGFzcywKLSAgICBzaXplX3QgZmllbGRDb3VudCwgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSogYXR0
cmlidXRlcywgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LCBjb25zdCBCYXRjaGVkTWV0aG9kKiBjYWxs
YmFja3MsIHNpemVfdCBjYWxsYmFja0NvdW50LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKyAgICBz
aXplX3QgZmllbGRDb3VudCwgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSogYXR0cmlidXRlcywgc2l6
ZV90IGF0dHJpYnV0ZUNvdW50LCBjb25zdCBCYXRjaGVkTWV0aG9kKiBjYWxsYmFja3MsIHNpemVf
dCBjYWxsYmFja0NvdW50LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBj
dXJyZW50V29ybGRUeXBlKQogewogICAgIGZ1bmN0aW9uRGVzY3JpcHRvci0+U2V0Q2xhc3NOYW1l
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbChpbnRlcmZhY2VOYW1lKSk7CiAgICAgdjg6OkxvY2FsPHY4
OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBmdW5jdGlvbkRlc2NyaXB0b3ItPkluc3RhbmNl
VGVtcGxhdGUoKTsKQEAgLTcwLDcgKzcwLDcgQEAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IFY4
RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djgKICAg
ICB9CiAKICAgICBpZiAoYXR0cmlidXRlQ291bnQpCi0gICAgICAgIGJhdGNoQ29uZmlndXJlQXR0
cmlidXRlcyhpbnN0YW5jZSwgZnVuY3Rpb25EZXNjcmlwdG9yLT5Qcm90b3R5cGVUZW1wbGF0ZSgp
LCBhdHRyaWJ1dGVzLCBhdHRyaWJ1dGVDb3VudCwgaXNvbGF0ZSk7CisgICAgICAgIGJhdGNoQ29u
ZmlndXJlQXR0cmlidXRlcyhpbnN0YW5jZSwgZnVuY3Rpb25EZXNjcmlwdG9yLT5Qcm90b3R5cGVU
ZW1wbGF0ZSgpLCBhdHRyaWJ1dGVzLCBhdHRyaWJ1dGVDb3VudCwgaXNvbGF0ZSwgY3VycmVudFdv
cmxkVHlwZSk7CiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmUg
PSB2ODo6U2lnbmF0dXJlOjpOZXcoZnVuY3Rpb25EZXNjcmlwdG9yKTsKICAgICBpZiAoY2FsbGJh
Y2tDb3VudCkKICAgICAgICAgYmF0Y2hDb25maWd1cmVDYWxsYmFja3MoZnVuY3Rpb25EZXNjcmlw
dG9yLT5Qcm90b3R5cGVUZW1wbGF0ZSgpLCBkZWZhdWx0U2lnbmF0dXJlLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlKSwgY2FsbGJhY2tzLCBjYWxsYmFj
a0NvdW50LCBpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01D
b25maWd1cmF0aW9uLmgKaW5kZXggOGY5YzkxYTBhYTMwZjk4NDQwODViODcwYjhlYzlhNWRjZTJh
MWNmZi4uZTk1YjE1ODZjNDY1M2YzNzI4YjUyYzA4YmYyMWU5NWM1ZDc2NWZhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmgKQEAgLTQ3LDEz
ICs0NywxNSBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWU7CiAgICAg
ICAgIHY4OjpBY2Nlc3NvckdldHRlciBnZXR0ZXI7CiAgICAgICAgIHY4OjpBY2Nlc3NvclNldHRl
ciBzZXR0ZXI7CisgICAgICAgIHY4OjpBY2Nlc3NvckdldHRlciBnZXR0ZXJGb3JNYWluV29ybGQ7
CisgICAgICAgIHY4OjpBY2Nlc3NvclNldHRlciBzZXR0ZXJGb3JNYWluV29ybGQ7CiAgICAgICAg
IFdyYXBwZXJUeXBlSW5mbyogZGF0YTsKICAgICAgICAgdjg6OkFjY2Vzc0NvbnRyb2wgc2V0dGlu
Z3M7CiAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRyaWJ1dGU7CiAgICAgICAgIGJv
b2wgb25Qcm90b3R5cGU7CiAgICAgfTsKIAotICAgIHN0YXRpYyB2b2lkIGJhdGNoQ29uZmlndXJl
QXR0cmlidXRlcyh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4sIHY4OjpIYW5kbGU8djg6
Ok9iamVjdFRlbXBsYXRlPiwgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSosIHNpemVfdCBhdHRyaWJ1
dGVDb3VudCwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdm9pZCBiYXRjaENvbmZpZ3VyZUF0
dHJpYnV0ZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+LCB2ODo6SGFuZGxlPHY4OjpP
YmplY3RUZW1wbGF0ZT4sIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUqLCBzaXplX3QgYXR0cmlidXRl
Q291bnQsIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKTsK
IAogICAgIHRlbXBsYXRlPGNsYXNzIE9iamVjdE9yVGVtcGxhdGU+CiAgICAgc3RhdGljIGlubGlu
ZSB2b2lkIGNvbmZpZ3VyZUF0dHJpYnV0ZSh2ODo6SGFuZGxlPE9iamVjdE9yVGVtcGxhdGU+IGlu
c3RhbmNlLCB2ODo6SGFuZGxlPE9iamVjdE9yVGVtcGxhdGU+IHByb3RvdHlwZSwgY29uc3QgQmF0
Y2hlZEF0dHJpYnV0ZSYgYXR0cmlidXRlLCB2ODo6SXNvbGF0ZSopCkBAIC02Niw2ICs2OCwyNSBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZS5hdHRyaWJ1dGUpOwogICAgIH0KIAorICAg
IHRlbXBsYXRlPGNsYXNzIE9iamVjdE9yVGVtcGxhdGU+CisgICAgc3RhdGljIGlubGluZSB2b2lk
IGNvbmZpZ3VyZUF0dHJpYnV0ZSh2ODo6SGFuZGxlPE9iamVjdE9yVGVtcGxhdGU+IGluc3RhbmNl
LCB2ODo6SGFuZGxlPE9iamVjdE9yVGVtcGxhdGU+IHByb3RvdHlwZSwgY29uc3QgQmF0Y2hlZEF0
dHJpYnV0ZSYgYXR0cmlidXRlLCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVu
dFdvcmxkVHlwZSkKKyAgICB7CisgICAgICAgIHY4OjpBY2Nlc3NvckdldHRlciBnZXR0ZXIgPSBh
dHRyaWJ1dGUuZ2V0dGVyOworICAgICAgICB2ODo6QWNjZXNzb3JTZXR0ZXIgc2V0dGVyID0gYXR0
cmlidXRlLnNldHRlcjsKKyAgICAgICAgaWYgKGN1cnJlbnRXb3JsZFR5cGUgPT0gTWFpbldvcmxk
KSB7CisgICAgICAgICAgICBpZiAoYXR0cmlidXRlLmdldHRlckZvck1haW5Xb3JsZCkKKyAgICAg
ICAgICAgICAgICBnZXR0ZXIgPSBhdHRyaWJ1dGUuZ2V0dGVyRm9yTWFpbldvcmxkOworICAgICAg
ICAgICAgaWYgKGF0dHJpYnV0ZS5zZXR0ZXJGb3JNYWluV29ybGQpCisgICAgICAgICAgICAgICAg
c2V0dGVyID0gYXR0cmlidXRlLnNldHRlckZvck1haW5Xb3JsZDsKKyAgICAgICAgfQorICAgICAg
ICAoYXR0cmlidXRlLm9uUHJvdG90eXBlID8gcHJvdG90eXBlIDogaW5zdGFuY2UpLT5TZXRBY2Nl
c3Nvcih2ODo6U3RyaW5nOjpOZXdTeW1ib2woYXR0cmlidXRlLm5hbWUpLAorICAgICAgICAgICAg
Z2V0dGVyLAorICAgICAgICAgICAgc2V0dGVyLAorICAgICAgICAgICAgdjg6OkV4dGVybmFsOjpO
ZXcoYXR0cmlidXRlLmRhdGEpLAorICAgICAgICAgICAgYXR0cmlidXRlLnNldHRpbmdzLAorICAg
ICAgICAgICAgYXR0cmlidXRlLmF0dHJpYnV0ZSk7CisgICAgfQorCiAgICAgLy8gQmF0Y2hlZENv
bnN0YW50IHRyYW5zbGF0ZXMgaW50byBjYWxscyB0byBTZXQoKSBmb3Igc2V0dGluZyB1cCBhbiBv
YmplY3QncwogICAgIC8vIGNvbnN0YW50cy4gSXQgc2V0cyB0aGUgY29uc3RhbnQgb24gYm90aCB0
aGUgRnVuY3Rpb25UZW1wbGF0ZSBhbmQgdGhlCiAgICAgLy8gT2JqZWN0VGVtcGxhdGUuIFByb3Bl
cnR5QXR0cmlidXRlcyBpcyBhbHdheXMgUmVhZE9ubHkuCkBAIC04NCw3ICsxMDUsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgdm9pZCBiYXRjaENvbmZpZ3VyZUNhbGxiYWNrcyh2ODo6SGFuZGxl
PHY4OjpPYmplY3RUZW1wbGF0ZT4sIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4sIHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZSwgY29uc3QgQmF0Y2hlZE1ldGhvZCosIHNpemVfdCBjYWxsYmFja0NvdW50
LCB2ODo6SXNvbGF0ZSopOwogCi0gICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBj
b25maWd1cmVUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4sIGNv
bnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBwYXJlbnRDbGFzcywgc2l6ZV90IGZpZWxkQ291bnQsIGNvbnN0IEJhdGNoZWRBdHRyaWJ1
dGUqLCBzaXplX3QgYXR0cmlidXRlQ291bnQsIGNvbnN0IEJhdGNoZWRNZXRob2QqLCBzaXplX3Qg
Y2FsbGJhY2tDb3VudCwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpT
aWduYXR1cmU+IGNvbmZpZ3VyZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHBhcmVudENsYXNzLCBzaXplX3QgZmllbGRDb3VudCwgY29uc3QgQmF0
Y2hlZEF0dHJpYnV0ZSosIHNpemVfdCBhdHRyaWJ1dGVDb3VudCwgY29uc3QgQmF0Y2hlZE1ldGhv
ZCosIHNpemVfdCBjYWxsYmFja0NvdW50LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUp
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggNTk1YmRm
ODk5ZmRmY2Y2M2EzMWU5MDIwZDBlMDhlYTAxMmNiNzZlNS4uNzU1NzIyYjRmYjYxNTZiNThjODA0
Y2NlODUyMDM5NmI1MzI3YjhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBAIC02MTEsNCArNjExLDkgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRE9NV2luZG93KiB3aW5kb3csIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db24KICAgICByZXR1cm4gZ2xvYmFsOwogfQogCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChET01XaW5kb3cqIHdpbmRvdywgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQor
eworICAgIHJldHVybiB0b1Y4KHdpbmRvdywgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRUYXJnZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRUYXJnZXRDdXN0b20uY3BwCmluZGV4IGU3ODk2Y2Mx
MTE5NTFmYjg4MzkwNjFmYzlmNWNlNDY3YjlkODg5OTcuLjNmNzljYTdkMGJiOGJkMDY0YjlhOGI2
YTQyNzJhNzdlM2M5MjMzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEV2ZW50VGFyZ2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhFdmVudFRhcmdldEN1c3RvbS5jcHAKQEAgLTUzLDYgKzUzLDExIEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEV2ZW50VGFyZ2V0KiBpbXBsLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29uCiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9yTWFpbldvcmxkKEV2ZW50VGFyZ2V0KiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCit7CisgICAgcmV0dXJuIHRvVjgoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKK30KKwogI3VuZGVmIFRSWV9UT19XUkFQX1dJVEhfSU5URVJGQUNFCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOElEQkFueUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhJREJBbnlDdXN0b20uY3BwCmluZGV4IGUxMTllZTViZjAxN2NiYjU0NWZhMjQzOGUxMTUyYmNj
NWNmNjZiMmUuLjQ2N2UxYTZiZmFiNjNlZjI5MmIzNTllMzI3NjFmMDI2NWFhOGE2NDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9t
LmNwcApAQCAtMTAxLDYgKzEwMSwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChJREJB
bnkqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LAogICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9y
TWFpbldvcmxkKElEQkFueSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIHJldHVybiB0b1Y4KGltcGwsIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWljcm9EYXRhSXRlbVZhbHVlQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1pY3JvRGF0YUl0ZW1WYWx1ZUN1
c3RvbS5jcHAKaW5kZXggOTUzYmJlYzE1MDdiZDI0NmNiZjdjNzNkOWQ0MWIxNGNkZDc5ZTJkMi4u
MjYwYWU3ODlhYWUwOWE5YWU4MmQ2ZTlmZjUzOTA3MzM2MTY3M2I5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWljcm9EYXRhSXRlbVZhbHVlQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNaWNyb0RhdGFJ
dGVtVmFsdWVDdXN0b20uY3BwCkBAIC00OCw2ICs0OCwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOChNaWNyb0RhdGFJdGVtVmFsdWUqIGl0ZW1WYWx1ZSwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PgogICAgIHJldHVybiB2OFN0cmluZyhpdGVtVmFsdWUtPmdldFN0cmluZygpLCBpc29sYXRl
KTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoTWljcm9EYXRh
SXRlbVZhbHVlKiBpdGVtVmFsdWUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICByZXR1cm4gdG9WOChpdGVtVmFsdWUs
IGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShN
SUNST0RBVEEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IDkwNmExNGQzYWI3NGFjMDdjY2Qw
NzMyZmMwYTczMDkxNDgyZWI5ZGMuLjcyZjZlM2Q0YzA5MDM0MGU1MGRhN2FkODVkZThjODFkMTZi
NzNmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdv
cmtlckNvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC0xNDAsNiArMTQwLDExIEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4KFdvcmtlckNvbnRleHQqIGltcGwsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRpb25DCiAgICAgcmV0dXJuIGdsb2JhbDsKIH0KIAordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoV29ya2VyQ29udGV4dCogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorewor
ICAgIHJldHVybiB0b1Y4KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCmluZGV4IDVkODNhZGVlYzEyYTg0MGFlZDA0NDBmMWJjYTVkNzA1Y2E2MzQw
M2EuLjc4Yjk0OTc4YTM2MDNjNzU5NzkyNDI4Mzc3NmM5YTdmNzA1MDEyYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwKQEAgLTI3LDcgKzI3LDcgQEAKIAogICAgIC8vIERPTSBMZXZlbCAxIENvcmUK
IAotICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGxdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgdGFnTmFtZTsKKyAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxs
LCBWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdGFnTmFt
ZTsKIAogICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGxdIERPTVN0cmluZyBnZXRB
dHRyaWJ1dGUoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5nIG5hbWUp
OwogICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnNdIHZvaWQgc2V0QXR0cmlidXRlKGlu
IFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBuYW1lLApAQCAtNDMsNyAr
NDMsNyBAQAogCiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpCiAgICAgLy8gRm9y
IE9iakMgdGhpcyBpcyBkZWZpbmVkIG9uIE5vZGUgZm9yIGxlZ2FjeSBzdXBwb3J0LgotICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBOYW1lZE5vZGVNYXAgICAgIGF0dHJpYnV0ZXM7CisgICAgW1Y4UGVy
V29ybGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIE5hbWVkTm9kZU1hcCAgICAgYXR0cmli
dXRlczsKICAgICBib29sZWFuICAgICAgICAgICAgaGFzQXR0cmlidXRlcygpOwogI2VuZGlmCiAK
QEAgLTY3LDIzICs2NywyMyBAQAogICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnNdIGJv
b2xlYW4gaGFzQXR0cmlidXRlTlMoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsT3B0aW9uYWw9
RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVm
aW5lZF0gRE9NU3RyaW5nIGxvY2FsTmFtZSk7CiAKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgQ1NT
U3R5bGVEZWNsYXJhdGlvbiBzdHlsZTsKKyAgICBbVjhQZXJXb3JsZEJpbmRpbmdzXSByZWFkb25s
eSBhdHRyaWJ1dGUgQ1NTU3R5bGVEZWNsYXJhdGlvbiBzdHlsZTsKIAogICAgIC8vIENvbW1vbiBl
eHRlbnNpb25zCiAKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBvZmZzZXRMZWZ0OwotICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG9mZnNldFRvcDsKLSAgICByZWFkb25seSBhdHRyaWJ1
dGUgbG9uZyBvZmZzZXRXaWR0aDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBvZmZzZXRI
ZWlnaHQ7Ci0gICAgW0ltcGxlbWVudGVkQXM9YmluZGluZ3NPZmZzZXRQYXJlbnRdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBFbGVtZW50IG9mZnNldFBhcmVudDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUg
bG9uZyBjbGllbnRMZWZ0OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGNsaWVudFRvcDsK
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBjbGllbnRXaWR0aDsKLSAgICByZWFkb25seSBh
dHRyaWJ1dGUgbG9uZyBjbGllbnRIZWlnaHQ7Ci0gICAgICAgICAgICAgYXR0cmlidXRlIGxvbmcg
c2Nyb2xsTGVmdDsKLSAgICAgICAgICAgICBhdHRyaWJ1dGUgbG9uZyBzY3JvbGxUb3A7Ci0gICAg
cmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgc2Nyb2xsV2lkdGg7Ci0gICAgcmVhZG9ubHkgYXR0cmli
dXRlIGxvbmcgc2Nyb2xsSGVpZ2h0OworICAgIFtWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBsb25nIG9mZnNldExlZnQ7CisgICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gcmVh
ZG9ubHkgYXR0cmlidXRlIGxvbmcgb2Zmc2V0VG9wOworICAgIFtWOFBlcldvcmxkQmluZGluZ3Nd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG9mZnNldFdpZHRoOworICAgIFtWOFBlcldvcmxkQmlu
ZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG9mZnNldEhlaWdodDsKKyAgICBbSW1wbGVt
ZW50ZWRBcz1iaW5kaW5nc09mZnNldFBhcmVudCwgVjhQZXJXb3JsZEJpbmRpbmdzXSByZWFkb25s
eSBhdHRyaWJ1dGUgRWxlbWVudCBvZmZzZXRQYXJlbnQ7CisgICAgW1Y4UGVyV29ybGRCaW5kaW5n
c10gcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgY2xpZW50TGVmdDsKKyAgICBbVjhQZXJXb3JsZEJp
bmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBjbGllbnRUb3A7CisgICAgW1Y4UGVyV29y
bGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgY2xpZW50V2lkdGg7CisgICAgW1Y4
UGVyV29ybGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgIFtWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBsb25nIHNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIGxvbmcgc2Ny
b2xsVG9wOworICAgIFtWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25n
IHNjcm9sbFdpZHRoOworICAgIFtWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBsb25nIHNjcm9sbEhlaWdodDsKIAogICAgIHZvaWQgZm9jdXMoKTsKICAgICB2b2lkIGJsdXIo
KTsKQEAgLTk4LDExICs5OCwxMSBAQAogICAgIC8vIEhUTUwgNQogICAgIE5vZGVMaXN0IGdldEVs
ZW1lbnRzQnlDbGFzc05hbWUoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3Ry
aW5nIG5hbWUpOwogCi0gICAgW1JlZmxlY3Q9Y2xhc3NdIGF0dHJpYnV0ZSBET01TdHJpbmcgY2xh
c3NOYW1lOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01Ub2tlbkxpc3QgY2xhc3NMaXN0Owor
ICAgIFtSZWZsZWN0PWNsYXNzLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBET01TdHJp
bmcgY2xhc3NOYW1lOworICAgIFtWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01Ub2tlbkxpc3QgY2xhc3NMaXN0OwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NS
SVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZ01hcCBkYXRhc2V0OworICAgIFtWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmdNYXAgZGF0YXNldDsKICNlbmRpZgogCiAgICAgLy8gTm9kZVNlbGVjdG9y
IC0gU2VsZWN0b3IgQVBJCkBAIC0xMTYsMTcgKzExNiwxNyBAQAogICAgICAgICByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKIAogICAgIC8vIEVsZW1lbnRUcmF2ZXJzYWwgQVBJCi0gICAgcmVhZG9ubHkg
YXR0cmlidXRlIEVsZW1lbnQgZmlyc3RFbGVtZW50Q2hpbGQ7Ci0gICAgcmVhZG9ubHkgYXR0cmli
dXRlIEVsZW1lbnQgbGFzdEVsZW1lbnRDaGlsZDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxl
bWVudCBwcmV2aW91c0VsZW1lbnRTaWJsaW5nOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVt
ZW50IG5leHRFbGVtZW50U2libGluZzsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQg
bG9uZyBjaGlsZEVsZW1lbnRDb3VudDsKKyAgICBbVjhQZXJXb3JsZEJpbmRpbmdzXSByZWFkb25s
eSBhdHRyaWJ1dGUgRWxlbWVudCBmaXJzdEVsZW1lbnRDaGlsZDsKKyAgICBbVjhQZXJXb3JsZEJp
bmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCBsYXN0RWxlbWVudENoaWxkOworICAg
IFtWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IHByZXZpb3Vz
RWxlbWVudFNpYmxpbmc7CisgICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmli
dXRlIEVsZW1lbnQgbmV4dEVsZW1lbnRTaWJsaW5nOworICAgIFtWOFBlcldvcmxkQmluZGluZ3Nd
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGNoaWxkRWxlbWVudENvdW50OwogCiAg
ICAgLy8gU2hhZG93QXdhcmUgQVBJCiAjaWYgZGVmaW5lZChFTkFCTEVfU0hBRE9XX0RPTSkgJiYg
RU5BQkxFX1NIQURPV19ET00gJiYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5H
VUFHRV9KQVZBU0NSSVBUCi0gICAgW1JlZmxlY3Q9cHNldWRvLCBWOEVuYWJsZWRBdFJ1bnRpbWU9
c2hhZG93RE9NLCBJbXBsZW1lbnRlZEFzPXBzZXVkb10gYXR0cmlidXRlIERPTVN0cmluZyB3ZWJr
aXRQc2V1ZG87CisgICAgW1JlZmxlY3Q9cHNldWRvLCBWOEVuYWJsZWRBdFJ1bnRpbWU9c2hhZG93
RE9NLCBJbXBsZW1lbnRlZEFzPXBzZXVkbywgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIHdlYmtpdFBzZXVkbzsKICAgICBbVjhFbmFibGVkQXRSdW50aW1lPXNoYWRvd0RP
TSwgSW1wbGVtZW50ZWRBcz1jcmVhdGVTaGFkb3dSb290XSBTaGFkb3dSb290IHdlYmtpdENyZWF0
ZVNoYWRvd1Jvb3QoKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICBbVjhFbmFibGVkQXRSdW50
aW1lPXNoYWRvd0RPTSwgSW1wbGVtZW50ZWRBcz1zaGFkb3dSb290XSByZWFkb25seSBhdHRyaWJ1
dGUgU2hhZG93Um9vdCB3ZWJraXRTaGFkb3dSb290OworICAgIFtWOEVuYWJsZWRBdFJ1bnRpbWU9
c2hhZG93RE9NLCBJbXBsZW1lbnRlZEFzPXNoYWRvd1Jvb3QsIFY4UGVyV29ybGRCaW5kaW5nc10g
cmVhZG9ubHkgYXR0cmlidXRlIFNoYWRvd1Jvb3Qgd2Via2l0U2hhZG93Um9vdDsKICNlbmRpZgog
CiAgICAgLy8gRE9NIDQKQEAgLTE0MSw3ICsxNDEsNyBAQAogCiAjaWYgZGVmaW5lZChMQU5HVUFH
RV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAvLyBPYmplY3RpdmUt
QyBleHRlbnNpb25zCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpbm5lclRleHQ7
CisgICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBp
bm5lclRleHQ7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAm
JiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKQEAgLTE1Niw0MSArMTU2LDQxIEBACiAgICAgW0NvbmRp
dGlvbmFsPVBPSU5URVJfTE9DS10gdm9pZCB3ZWJraXRSZXF1ZXN0UG9pbnRlckxvY2soKTsKIAog
ICAgIC8vIENTUyBSZWdpb25zIEFQSQotICAgIFtDb25kaXRpb25hbD1DU1NfUkVHSU9OUywgVjhF
bmFibGVkQXRSdW50aW1lPWNzc1JlZ2lvbnNdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
d2Via2l0UmVnaW9uT3ZlcnNldDsKKyAgICBbQ29uZGl0aW9uYWw9Q1NTX1JFR0lPTlMsIFY4RW5h
YmxlZEF0UnVudGltZT1jc3NSZWdpb25zLCBWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgd2Via2l0UmVnaW9uT3ZlcnNldDsKICAgICBbQ29uZGl0aW9uYWw9
Q1NTX1JFR0lPTlMsIFY4RW5hYmxlZEF0UnVudGltZT1jc3NSZWdpb25zXSBzZXF1ZW5jZTxSYW5n
ZT4gd2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwogCiAjaWYgIWRlZmluZWQoTEFOR1VBR0Vf
T0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgIC8vIEV2ZW50IGhhbmRs
ZXIgRE9NIGF0dHJpYnV0ZXMKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25hYm9ydDsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25ibHVyOwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBv
bmNoYW5nZTsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25j
bGljazsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jb250
ZXh0bWVudTsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25k
YmxjbGljazsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25k
cmFnOwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRyYWdl
bmQ7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZHJhZ2Vu
dGVyOwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRyYWds
ZWF2ZTsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kcmFn
b3ZlcjsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kcmFn
c3RhcnQ7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZHJv
cDsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsK
LSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25mb2N1czsKLSAg
ICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25pbnB1dDsKLSAgICBb
Tm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25pbnZhbGlkOwotICAgIFtO
b3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmtleWRvd247Ci0gICAgW05v
dEVudW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ua2V5cHJlc3M7Ci0gICAgW05v
dEVudW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ua2V5dXA7Ci0gICAgW05vdEVu
dW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubG9hZDsKLSAgICBbTm90RW51bWVy
YWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tb3VzZWRvd247Ci0gICAgW05vdEVudW1l
cmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubW91c2Vtb3ZlOwotICAgIFtOb3RFbnVt
ZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1vdXNlb3V0OwotICAgIFtOb3RFbnVt
ZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1vdXNlb3ZlcjsKLSAgICBbTm90RW51
bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tb3VzZXVwOwotICAgIFtOb3RFbnVt
ZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1vdXNld2hlZWw7Ci0gICAgW05vdEVu
dW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uc2Nyb2xsOwotICAgIFtOb3RFbnVt
ZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnNlbGVjdDsKLSAgICBbTm90RW51bWVy
YWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25zdWJtaXQ7CisgICAgW05vdEVudW1lcmFi
bGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsK
KyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRM
aXN0ZW5lciBvbmJsdXI7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10g
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jaGFuZ2U7CisgICAgW05vdEVudW1lcmFibGUsIFY4
UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jbGljazsKKyAgICBb
Tm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbmNvbnRleHRtZW51OworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3Nd
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZGJsY2xpY2s7CisgICAgW05vdEVudW1lcmFibGUs
IFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kcmFnOworICAg
IFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3Rl
bmVyIG9uZHJhZ2VuZDsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRyYWdlbnRlcjsKKyAgICBbTm90RW51bWVyYWJsZSwg
VjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRyYWdsZWF2ZTsK
KyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRM
aXN0ZW5lciBvbmRyYWdvdmVyOworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGlu
Z3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZHJhZ3N0YXJ0OworICAgIFtOb3RFbnVtZXJh
YmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZHJvcDsK
KyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRM
aXN0ZW5lciBvbmVycm9yOworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3Nd
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZm9jdXM7CisgICAgW05vdEVudW1lcmFibGUsIFY4
UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25pbnB1dDsKKyAgICBb
Tm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbmludmFsaWQ7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25rZXlkb3duOworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBl
cldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ua2V5cHJlc3M7CisgICAg
W05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25rZXl1cDsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmxvYWQ7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29y
bGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tb3VzZWRvd247CisgICAgW05v
dEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b25tb3VzZW1vdmU7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tb3VzZW91dDsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQ
ZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1vdXNlb3ZlcjsKKyAg
ICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbm1vdXNldXA7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10g
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tb3VzZXdoZWVsOworICAgIFtOb3RFbnVtZXJhYmxl
LCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uc2Nyb2xsOwor
ICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9uc2VsZWN0OworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3Nd
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uc3VibWl0OwogCiAgICAgLy8gYXR0cmlidXRlIFtO
b3RFbnVtZXJhYmxlXSBFdmVudExpc3RlbmVyIG9uY2FucGxheTsKICAgICAvLyBhdHRyaWJ1dGUg
W05vdEVudW1lcmFibGVdIEV2ZW50TGlzdGVuZXIgb25jYW5wbGF5dGhyb3VnaDsKQEAgLTIxNiwy
MSArMjE2LDIxIEBACiAgICAgLy8gYXR0cmlidXRlIFtOb3RFbnVtZXJhYmxlXSBFdmVudExpc3Rl
bmVyIG9ud2FpdGluZzsKIAogICAgIC8vIFdlYktpdCBleHRlbnNpb25zCi0gICAgW05vdEVudW1l
cmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYmVmb3JlY3V0OwotICAgIFtOb3RFbnVt
ZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmN1dDsKLSAgICBbTm90RW51bWVyYWJs
ZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25iZWZvcmVjb3B5OwotICAgIFtOb3RFbnVtZXJh
YmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNvcHk7Ci0gICAgW05vdEVudW1lcmFibGVd
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYmVmb3JlcGFzdGU7Ci0gICAgW05vdEVudW1lcmFi
bGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucGFzdGU7Ci0gICAgW05vdEVudW1lcmFibGVd
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucmVzZXQ7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uc2VhcmNoOwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnNlbGVjdHN0YXJ0OwotICAgIFtOb3RFbnVtZXJhYmxlLENv
bmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxWOEVuYWJsZWRBdFJ1bnRpbWU9dG91Y2hdIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9udG91Y2hzdGFydDsKLSAgICBbTm90RW51bWVyYWJsZSxDb25kaXRp
b25hbD1UT1VDSF9FVkVOVFMsVjhFbmFibGVkQXRSdW50aW1lPXRvdWNoXSBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbnRvdWNobW92ZTsKLSAgICBbTm90RW51bWVyYWJsZSxDb25kaXRpb25hbD1U
T1VDSF9FVkVOVFMsVjhFbmFibGVkQXRSdW50aW1lPXRvdWNoXSBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbnRvdWNoZW5kOwotICAgIFtOb3RFbnVtZXJhYmxlLENvbmRpdGlvbmFsPVRPVUNIX0VW
RU5UUyxWOEVuYWJsZWRBdFJ1bnRpbWU9dG91Y2hdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
dG91Y2hjYW5jZWw7Ci0gICAgW05vdEVudW1lcmFibGUsIENvbmRpdGlvbmFsPUZVTExTQ1JFRU5f
QVBJXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2U7Ci0g
ICAgW05vdEVudW1lcmFibGUsIENvbmRpdGlvbmFsPUZVTExTQ1JFRU5fQVBJXSBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbndlYmtpdGZ1bGxzY3JlZW5lcnJvcjsKKyAgICBbTm90RW51bWVyYWJs
ZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmJlZm9yZWN1
dDsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbmN1dDsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdz
XSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmJlZm9yZWNvcHk7CisgICAgW05vdEVudW1lcmFi
bGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jb3B5Owor
ICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9uYmVmb3JlcGFzdGU7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5k
aW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25wYXN0ZTsKKyAgICBbTm90RW51bWVyYWJs
ZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlc2V0Owor
ICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9uc2VhcmNoOworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3Nd
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uc2VsZWN0c3RhcnQ7CisgICAgW05vdEVudW1lcmFi
bGUsQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLFY4RW5hYmxlZEF0UnVudGltZT10b3VjaCwgVjhQ
ZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnRvdWNoc3RhcnQ7Cisg
ICAgW05vdEVudW1lcmFibGUsQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLFY4RW5hYmxlZEF0UnVu
dGltZT10b3VjaCwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBv
bnRvdWNobW92ZTsKKyAgICBbTm90RW51bWVyYWJsZSxDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMs
VjhFbmFibGVkQXRSdW50aW1lPXRvdWNoLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9udG91Y2hlbmQ7CisgICAgW05vdEVudW1lcmFibGUsQ29uZGl0aW9uYWw9
VE9VQ0hfRVZFTlRTLFY4RW5hYmxlZEF0UnVudGltZT10b3VjaCwgVjhQZXJXb3JsZEJpbmRpbmdz
XSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnRvdWNoY2FuY2VsOworICAgIFtOb3RFbnVtZXJh
YmxlLCBDb25kaXRpb25hbD1GVUxMU0NSRUVOX0FQSSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2U7CisgICAgW05vdEVu
dW1lcmFibGUsIENvbmRpdGlvbmFsPUZVTExTQ1JFRU5fQVBJLCBWOFBlcldvcmxkQmluZGluZ3Nd
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ud2Via2l0ZnVsbHNjcmVlbmVycm9yOwogI2VuZGlm
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5pZGwKaW5kZXggNWVlM2IwNzI5ZjNkYzk3YmNiNmM1Y2Y3ZjA5NmIz
YTUyMjA3ZmVjMy4uNmI1ZDQ5M2U3YmQ5YjUzMTdkYjdkYjUwZTU4NzEyNzEwZDNjMGU0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmlkbApAQCAtNDksMjAgKzQ5LDIwIEBACiAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgICAgICBET0NVTUVOVF9GUkFHTUVOVF9OT0RFICAgICAgICAgPSAxMTsKICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCAgICAgIE5PVEFUSU9OX05PREUgICAgICAgICAgICAgICAgICA9IDEyOwog
Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGxd
IERPTVN0cmluZyAgICAgICAgbm9kZU5hbWU7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtUcmVh
dFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGwsIFY4UGVyV29ybGRCaW5kaW5nc10gRE9NU3RyaW5n
ICAgICAgICBub2RlTmFtZTsKIAogICAgICAgICAgICAgIC8vIEZJWE1FOiB0aGUgc3BlYyBzYXlz
IHRoaXMgY2FuIGFsc28gcmFpc2Ugb24gcmV0cmlldmFsLgotICAgICAgICAgICAgIGF0dHJpYnV0
ZSBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5n
XSBET01TdHJpbmcgICAgICAgIG5vZGVWYWx1ZQorICAgICAgICAgICAgIGF0dHJpYnV0ZSBbVHJl
YXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBWOFBl
cldvcmxkQmluZGluZ3NdIERPTVN0cmluZyAgICAgICAgbm9kZVZhbHVlCiAgICAgICAgICAgICAg
ICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAotICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBzaG9ydCAgIG5vZGVUeXBlOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2Rl
ICAgICAgICAgICAgIHBhcmVudE5vZGU7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGVMaXN0
ICAgICAgICAgY2hpbGROb2RlczsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSAgICAgICAg
ICAgICBmaXJzdENoaWxkOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlICAgICAgICAgICAg
IGxhc3RDaGlsZDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSAgICAgICAgICAgICBwcmV2
aW91c1NpYmxpbmc7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGUgICAgICAgICAgICAgbmV4
dFNpYmxpbmc7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50ICAgICAgICAgb3duZXJE
b2N1bWVudDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4UGVyV29ybGRCaW5kaW5nc10gdW5z
aWduZWQgc2hvcnQgICBub2RlVHlwZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4UGVyV29y
bGRCaW5kaW5nc10gTm9kZSAgICAgICAgICAgICBwYXJlbnROb2RlOworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBbVjhQZXJXb3JsZEJpbmRpbmdzXSBOb2RlTGlzdCAgICAgICAgIGNoaWxkTm9kZXM7
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtWOFBlcldvcmxkQmluZGluZ3NdIE5vZGUgICAgICAg
ICAgICAgZmlyc3RDaGlsZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4UGVyV29ybGRCaW5k
aW5nc10gTm9kZSAgICAgICAgICAgICBsYXN0Q2hpbGQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFtWOFBlcldvcmxkQmluZGluZ3NdIE5vZGUgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nOwor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhQZXJXb3JsZEJpbmRpbmdzXSBOb2RlICAgICAgICAg
ICAgIG5leHRTaWJsaW5nOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhQZXJXb3JsZEJpbmRp
bmdzXSBEb2N1bWVudCAgICAgICAgIG93bmVyRG9jdW1lbnQ7CiAKICAgICBbT2JqQ0xlZ2FjeVVu
bmFtZWRQYXJhbWV0ZXJzLCBDdXN0b21dIE5vZGUgaW5zZXJ0QmVmb3JlKGluIFtDdXN0b21SZXR1
cm5dIE5vZGUgbmV3Q2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBOb2RlIHJlZkNoaWxkKQpAQCAtODQsMjMgKzg0LDIz
IEBACiAgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVyc10gYm9vbGVhbiBpc1N1cHBvcnRl
ZChpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBET01TdHJpbmcgZmVhdHVyZSwgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbVHJlYXROdWxsQXM9TnVs
bFN0cmluZyxPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyB2ZXJzaW9uKTsK
IAotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxs
XSBET01TdHJpbmcgICAgICAgIG5hbWVzcGFjZVVSSTsKLSAgICAgICAgICAgICBhdHRyaWJ1dGUg
W1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbCwgVHJlYXROdWxsQXM9TnVsbFN0cmluZ10g
RE9NU3RyaW5nICAgICAgICBwcmVmaXgKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgW1RyZWF0UmV0
dXJuZWROdWxsU3RyaW5nQXM9TnVsbCwgVjhQZXJXb3JsZEJpbmRpbmdzXSBET01TdHJpbmcgICAg
ICAgIG5hbWVzcGFjZVVSSTsKKyAgICAgICAgICAgICBhdHRyaWJ1dGUgW1RyZWF0UmV0dXJuZWRO
dWxsU3RyaW5nQXM9TnVsbCwgVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVjhQZXJXb3JsZEJpbmRp
bmdzXSBET01TdHJpbmcgICAgICAgIHByZWZpeAogICAgICAgICAgICAgICAgICBzZXR0ZXIgcmFp
c2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIFtUcmVhdFJldHVybmVk
TnVsbFN0cmluZ0FzPU51bGxdIERPTVN0cmluZyAgICAgICAgbG9jYWxOYW1lOworICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsLCBWOFBlcldvcmxk
QmluZGluZ3NdIERPTVN0cmluZyAgICAgICAgbG9jYWxOYW1lOwogCiAjaWYgZGVmaW5lZChMQU5H
VUFHRV9PQkpFQ1RJVkVfQykKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgTmFtZWROb2RlTWFwICAg
ICBhdHRyaWJ1dGVzOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhQZXJXb3JsZEJpbmRpbmdz
XSBOYW1lZE5vZGVNYXAgICAgIGF0dHJpYnV0ZXM7CiAgICAgYm9vbGVhbiAgICAgICAgICAgIGhh
c0F0dHJpYnV0ZXMoKTsKICNlbmRpZgogCiAKICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZl
bCAzOgogCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0Fz
PU51bGxdIERPTVN0cmluZyAgICAgICBiYXNlVVJJOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBb
VHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsLCBWOFBlcldvcmxkQmluZGluZ3NdIERPTVN0
cmluZyAgICAgICBiYXNlVVJJOwogCiAgICAgICAgICAgICAgLy8gRklYTUU6IHRoZSBzcGVjIHNh
eXMgdGhpcyBjYW4gYWxzbyByYWlzZSBvbiByZXRyaWV2YWwuCi0gICAgICAgICAgICAgYXR0cmli
dXRlIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGwsIFRyZWF0TnVsbEFzPU51bGxTdHJp
bmddIERPTVN0cmluZyAgICAgICB0ZXh0Q29udGVudAorICAgICAgICAgICAgIGF0dHJpYnV0ZSBb
VHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBW
OFBlcldvcmxkQmluZGluZ3NdIERPTVN0cmluZyAgICAgICB0ZXh0Q29udGVudAogICAgICAgICAg
ICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICBib29sZWFuICAgICAg
ICAgICAgaXNTYW1lTm9kZShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBOb2RlIG90
aGVyKTsKQEAgLTEyMywxMSArMTIzLDExIEBACiAgICAgYm9vbGVhbiBjb250YWlucyhpbiBbT3B0
aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVkXSBOb2RlIG90aGVyKTsKIAogICAgIC8vIElFIGV4dGVu
c2lvbnMKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCAgICAgICAgICBwYXJlbnRFbGVt
ZW50OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhQZXJXb3JsZEJpbmRpbmdzXSBFbGVtZW50
ICAgICAgICAgIHBhcmVudEVsZW1lbnQ7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElW
RV9DKSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgIC8vIE9iamVjdGl2ZS1DIGV4dGVuc2lv
bnMKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgICBpc0NvbnRlbnRFZGl0
YWJsZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4UGVyV29ybGRCaW5kaW5nc10gYm9vbGVh
biAgICAgICAgICBpc0NvbnRlbnRFZGl0YWJsZTsKIAogICAgIHZvaWQgaW5zcGVjdCgpOwogI2Vu
ZGlmIC8qIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193911</attachid>
            <date>2013-03-19 13:30:56 -0700</date>
            <delta_ts>2013-03-19 18:02:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111417-20130319212645.patch</filename>
            <type>text/plain</type>
            <size>220373</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTUyMDk1NWM4ZDIwZWVi
YzEyMTUwZDEyMDQ0NWMwZWZhMTZjZDcwYS4uZWMyYzE5OTRhZmJjNWQxODUxMzJkMGM3ZmNkMGFi
MWE0YmJlNzkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAxMy0wMy0xOSAgTWFy
amEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBBZGQgbWFj
aGluZXJ5IGZvciBnZW5lcmF0aW5nIHNwZWNpYWxpemVkIGJpbmRpbmdzIGZvciB0aGUgbWFpbiB3
b3JsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEx
NDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9jaGVuIEVpc2luZ2VyLgorCisgICAgICAgIFRo
ZSBuZXcgc3BlY2lhbGl6ZWQgYmluZGluZ3Mgd2lsbCBiZSBmYXN0ZXIsIGJlY2F1c2UgdGhleSBk
b24ndCBuZWVkIHRvCisgICAgICAgIGRvIHRoZSAibWFpbiB3b3JsZCwgaXNvbGF0ZWQgd29ybGQg
b3IgYSB3b3JrZXIiIGNoZWNrLCBidXQgY2FuIHJpZ2h0CisgICAgICAgIGF3YXkgYXNzdW1lIHRo
YXQgd2UncmUgaW4gdGhlIG1haW4gd29ybGQuCisKKyAgICAgICAgQWRkZWQgYW4gSURMIGF0dHJp
YnV0ZSAoVjhQZXJXb3JsZEJpbmRpbmdzKSB0byBkZWZpbmUgd2hpY2gKKyAgICAgICAgYXR0cmli
dXRlIGdldHRlcnMgLyBzZXR0ZXJzIHRvIHNwZWNpYWxpemUuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBnZW5lcmF0ZXMgbWFpbiB3b3JsZCBiaW5kaW5ncyBmb3IgZ2V0dGVycyBhbmQgc2V0dGVycyBv
ZiBOb2RlCisgICAgICAgIGFuZCBFbGVtZW50LiAoVGhlIHBvc3NpYmlsaXR5IHRvIGdlbmVyYXRl
IGJpbmRpbmdzIGZvciBjYWxsYmFja3Mgd2lsbCBiZQorICAgICAgICBhZGRlZCBsYXRlci4pCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzICh1cGRhdGVkIGV4aXN0aW5nIGJpbmRpbmdzIHRlc3RzKS4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAg
ICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyQ2Fs
bGJhY2spOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyKToKKyAgICAgICAgKEdl
bmVyYXRlTm9ybWFsQXR0clNldHRlckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFs
QXR0clNldHRlcik6CisgICAgICAgIChHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3IpOgorICAgICAg
ICAoR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlKToKKyAgICAgICAgKEdlbmVyYXRlSW1w
bGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uKToK
KyAgICAgICAgKEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKToKKyAgICAgICAgKENyZWF0ZUN1
c3RvbVNpZ25hdHVyZSk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQ6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZp
Z3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0
QXJyYXk6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RmxvYXQ2NEFycmF5OjpI
YXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2
NEFycmF5Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RB
Y3RpdmVET01PYmplY3RUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RBY3RpdmVE
T01PYmplY3Q6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURP
TU9iamVjdDo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RBY3RpdmVET01PYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWlu
V29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZv
ck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXI6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEN1c3Rv
bU5hbWVkR2V0dGVyOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4
Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9W
OEZhc3RGb3JNYWluV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6Okhhc0luc3RhbmNlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oOgor
ICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3RFdmVudFRhcmdldDo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0RXZlbnRUYXJnZXQ6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhG
b3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4
RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbmZpZ3VyZVY4VGVzdEV4Y2VwdGlvblRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXhj
ZXB0aW9uOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV4Y2VwdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3JsZCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFpbldv
cmxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhU
ZXN0SW50ZXJmYWNlVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50ZXJmYWNl
OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6Okhhc0lu
c3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJm
YWNlLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb25maWd1cmVWOFRlc3ROYW1lZENvbnN0cnVjdG9yVGVtcGxhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZp
Z3VyZVY4VGVzdE5vZGVUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpH
ZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpIYXNJbnN0YW5jZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4VGVzdE9iajo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2Jq
OjpIYXNJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6Omluc3RhbGxQZXJD
b250ZXh0UHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5oOgorICAgICAgICAoV2ViQ29yZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGYXN0Rm9yTWFpbldvcmxkKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChXZWJD
b3JlOjp0b1Y4Rm9yTWFpbldvcmxkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6dG9WOEZhc3RGb3JNYWluV29ybGQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6SGFzSW5zdGFuY2Up
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5X
b3JsZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhU
ZXN0VHlwZWRlZnNUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RUeXBlZGVmczo6
R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0VHlwZWRlZnM6Okhhc0luc3Rh
bmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4RmFzdEZvck1haW5Xb3JsZCk6CisgICAgICAgICog
YmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3Rv
cmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQpOgorICAgICAgICAoRE9NRGF0YVN0b3JlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZSk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmg6CisgICAgICAgIChCYXRj
aGVkQXR0cmlidXRlKToKKyAgICAgICAgKFY4RE9NQ29uZmlndXJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRUYXJnZXRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhNaWNyb0RhdGFJdGVtVmFsdWVDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9WOEZvck1haW5Xb3JsZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvVjhGb3JNYWluV29ybGQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuaWRsOgorICAgICAgICAqIGRvbS9Ob2RlLmlkbDoKKwogMjAxMy0wMy0xOSAg
TmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1lcmdlIE1haW5S
ZXNvdXJjZUxvYWRlcidzIFN1YnN0aXR1dGVEYXRhIGxvYWRpbmcgKyBvdGhlcnMgaW50byBEb2N1
bWVudExvYWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQppbmRleCBkZTIxNDU1YWUwNjc3NWI0YmIzM2YxYzczMDgzOTQ1ZTI1NTM2
YTAxLi4xNzk5Njk0MzJkMGZiMTRiZGVhYjQ2NTQyZTEzMGU4NzMwZjJkZjYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAt
NTMxLDEyICs1MzEsMTkgQEAgRU5ECiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5E
KTsKIGNsYXNzICR7bmF0aXZlVHlwZX07CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOCgke25h
dGl2ZVR5cGV9Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJ
c29sYXRlKik7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZCgke25hdGl2
ZVR5cGV9Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKik7CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxl
PgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdCgke25hdGl2ZVR5cGV9KiBp
bXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKikKIHsKICAg
ICByZXR1cm4gdG9WOChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29s
YXRlKCkpOwogfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBw
YWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQo
JHtuYXRpdmVUeXBlfSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdy
YXBwYWJsZSopCit7CisgICAgcmV0dXJuIHRvVjhGb3JNYWluV29ybGQoaW1wbCwgY29udGFpbmVy
LkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30KIEVORAogICAgIH0gZWxzZSB7
CiAKQEAgLTU3NCw2ICs1ODEsMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
KCR7bmF0aXZlVHlwZX0qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3IKICAgICByZXR1
cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoJHtuYXRpdmVUeXBlfSogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlz
b2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3Jl
OjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiAkcmV0dXJuaW5nV3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChp
bXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xk
ZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZhc3QoJHtuYXRpdmVUeXBlfSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBj
b250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtNTg0LDYgKzYwMiwyNSBAQCBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KCR7bmF0aXZlVHlwZX0qIGltcGws
IGNvbnN0IEhvbGRlckNvbnRhaW5lcgogICAgICAgICByZXR1cm4gJHJldHVybmluZ1dyYXBwZXI7
CiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0
SXNvbGF0ZSgpKTsKIH0KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBX
cmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldv
cmxkKCR7bmF0aXZlVHlwZX0qIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVy
LCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5l
ci5HZXRJc29sYXRlKCkpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkK
KyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JN
YWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuICRyZXR1cm5pbmdXcmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5I
b2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhv
bGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCAke25hdGl2ZVR5cGV9ID4gaW1w
bCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxl
KQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWlu
ZXIsIHdyYXBwYWJsZSk7Cit9CisKIEVORAogICAgIH0KIApAQCAtODg3LDYgKzkyNCw3IEBAIHN1
YiBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJDYWxsYmFjawogewogICAgIG15ICRhdHRyaWJ1dGUg
PSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CisgICAgbXkgJGZvck1haW5Xb3Js
ZFN1ZmZpeCA9IHNoaWZ0OwogCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5u
YW1lOwogICAgIG15ICR2OEludGVyZmFjZU5hbWUgPSAiVjgkaW50ZXJmYWNlTmFtZSI7CkBAIC04
OTYsMTMgKzkzNCwxMyBAQCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyQ2FsbGJhY2sKICAg
ICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRp
b25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwogICAgIHB1c2goQGltcGxDb250ZW50
SW50ZXJuYWxzLCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKIAotICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAic3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiAke2F0dHJOYW1lfUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbylcbiIpOworICAg
IHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAic3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiAke2F0dHJOYW1lfUF0dHJHZXR0ZXJDYWxsYmFjayR7Zm9yTWFpbldvcmxkU3VmZml4fSh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbylcbiIp
OwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAie1xuIik7CiAgICAgcHVzaChAaW1w
bENvbnRlbnRJbnRlcm5hbHMsIEdlbmVyYXRlRmVhdHVyZU9ic2VydmF0aW9uKCRhdHRyRXh0LT57
IlY4TWVhc3VyZUFzIn0pKTsKICAgICBpZiAoSGFzQ3VzdG9tR2V0dGVyKCRhdHRyRXh0KSkgewog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gJHt2OEludGVy
ZmFjZU5hbWV9Ojoke2F0dHJOYW1lfUF0dHJHZXR0ZXJDdXN0b20obmFtZSwgaW5mbyk7XG4iKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICBy
ZXR1cm4gJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlcihu
YW1lLCBpbmZvKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAg
ICByZXR1cm4gJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRl
ciR7Zm9yTWFpbldvcmxkU3VmZml4fShuYW1lLCBpbmZvKTtcbiIpOwogICAgIH0KICAgICBwdXNo
KEBpbXBsQ29udGVudEludGVybmFscywgIn1cblxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJ
bnRlcm5hbHMsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOwpAQCAtOTEyLDYgKzk1MCw3IEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJH
ZXR0ZXIKIHsKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZSA9
IHNoaWZ0OworICAgIG15ICRmb3JNYWluV29ybGRTdWZmaXggPSBzaGlmdDsKIAogICAgIG15ICRp
bnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKICAgICBteSAkdjhJbnRlcmZhY2VOYW1l
ID0gIlY4JGludGVyZmFjZU5hbWUiOwpAQCAtOTMxLDcgKzk3MCw3IEBAIHN1YiBHZW5lcmF0ZU5v
cm1hbEF0dHJHZXR0ZXIKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRv
ci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwogICAg
IHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5c
biIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFs
cywgPDxFTkQpOwotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2F0dHJOYW1lfUF0dHJH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7YXR0ck5hbWV9QXR0ckdldHRl
ciR7Zm9yTWFpbldvcmxkU3VmZml4fSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKIEVORAogICAgIGlmICgkc3ZnTmF0aXZlVHlwZSkg
ewpAQCAtMTExMSw3ICsxMTUwLDcgQEAgRU5ECiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJW
OCRhdHRyVHlwZS5oIik7CiAgICAgICAgIG15ICRzdmdOYXRpdmVUeXBlID0gJGNvZGVHZW5lcmF0
b3ItPkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigkYXR0clR5cGUpOwogICAgICAgICAjIENvbnZl
cnQgZnJvbSBhYnN0cmFjdCBTVkdQcm9wZXJ0eSB0byByZWFsIHR5cGUsIHNvIHRoZSByaWdodCB0
b0pTKCkgbWV0aG9kIGNhbiBiZSBpbnZva2VkLgotICAgICAgICBwdXNoKEBpbXBsQ29udGVudElu
dGVybmFscywgIiAgICByZXR1cm4gdG9WOEZhc3Qoc3RhdGljX2Nhc3Q8JHN2Z05hdGl2ZVR5cGUq
PigkcmVzdWx0KSwgaW5mbywgaW1wKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudElu
dGVybmFscywgIiAgICByZXR1cm4gdG9WOEZhc3QkZm9yTWFpbldvcmxkU3VmZml4KHN0YXRpY19j
YXN0PCRzdmdOYXRpdmVUeXBlKj4oJHJlc3VsdCksIGluZm8sIGltcCk7XG4iKTsKICAgICB9IGVs
c2lmICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJGF0dHJUeXBlKSBh
bmQgbm90ICRpbnRlcmZhY2VOYW1lID1+IC9MaXN0JC8pIHsKICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIlY4JGF0dHJUeXBlLmgiKTsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNWR1By
b3BlcnR5VGVhck9mZi5oIik7CkBAIC0xMTQ5LDcgKzExODgsNyBAQCBFTkQKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAkd3JhcHBlZFZhbHVlID0gIldURjo6Z2V0UHRyKCR7dGVh
ck9mZlR5cGV9OjpjcmVhdGUoJHJlc3VsdCkpIjsKICAgICAgICAgfQotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gdG9WOEZhc3QoJHdyYXBwZWRWYWx1ZSwg
aW5mbywgaW1wKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAg
ICByZXR1cm4gdG9WOEZhc3QkZm9yTWFpbldvcmxkU3VmZml4KCR3cmFwcGVkVmFsdWUsIGluZm8s
IGltcCk7XG4iKTsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEg
Ik1lc3NhZ2VQb3J0QXJyYXkiKSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJNZXNzYWdl
UG9ydC5oIik7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOE1lc3NhZ2VQb3J0LmgiKTsK
QEAgLTExNjEsNyArMTIwMCw3IEBAIEVORAogICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHNDb3B5
KCpwb3J0cyk7CiAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gcG9ydEFycmF5ID0gdjg6OkFycmF5
OjpOZXcocG9ydHNDb3B5LnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb3J0
c0NvcHkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHBvcnRBcnJheS0+U2V0KHY4SW50ZWdlcihpLCBp
bmZvLkdldElzb2xhdGUoKSksIHRvVjhGYXN0KHBvcnRzQ29weVtpXS5nZXQoKSwgaW5mbywgaW1w
KSk7CisgICAgICAgIHBvcnRBcnJheS0+U2V0KHY4SW50ZWdlcihpLCBpbmZvLkdldElzb2xhdGUo
KSksIHRvVjhGYXN0JGZvck1haW5Xb3JsZFN1ZmZpeChwb3J0c0NvcHlbaV0uZ2V0KCksIGluZm8s
IGltcCkpOwogICAgIHJldHVybiBwb3J0QXJyYXk7CiBFTkQKICAgICB9IGVsc2lmICgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIgJiYgJGF0dHJF
eHQtPnsiQ2FjaGVkQXR0cmlidXRlIn0pIHsKQEAgLTExNzMsNyArMTIxMiw3IEBAIEVORAogICAg
IHJldHVybiB2YWx1ZTsKIEVORAogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250
ZW50SW50ZXJuYWxzLCAiICAgIHJldHVybiAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZSwgJHJlc3VsdCwgImluZm8uSG9sZGVyKCkiLCAiaW5mby5HZXRJc29sYXRlKCki
LCAiaW5mbyIsICJpbXAiLCAiUmV0dXJuVW5zYWZlSGFuZGxlIikuIjtcbiIpOworICAgICAgICBw
dXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICByZXR1cm4gIiAuIE5hdGl2ZVRvSlNWYWx1
ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICRyZXN1bHQsICJpbmZvLkhvbGRlcigpIiwgImluZm8u
R2V0SXNvbGF0ZSgpIiwgImluZm8iLCAiaW1wIiwgIlJldHVyblVuc2FmZUhhbmRsZSIsICRmb3JN
YWluV29ybGRTdWZmaXgpLiI7XG4iKTsKICAgICB9CiAKICAgICBwdXNoKEBpbXBsQ29udGVudElu
dGVybmFscywgIn1cblxuIik7ICAjIGVuZCBvZiBnZXR0ZXIKQEAgLTEyMjEsNiArMTI2MCw3IEBA
IHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxsYmFjawogewogICAgIG15ICRhdHRyaWJ1
dGUgPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CisgICAgbXkgJGZvck1haW5X
b3JsZFN1ZmZpeCA9IHNoaWZ0OwogCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNl
LT5uYW1lOwogICAgIG15ICR2OEludGVyZmFjZU5hbWUgPSAiVjgkaW50ZXJmYWNlTmFtZSI7CkBA
IC0xMjMwLDEzICsxMjcwLDEzIEBAIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxsYmFj
awogICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNv
bmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAgcHVzaChAaW1wbENv
bnRlbnRJbnRlcm5hbHMsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOwogCi0gICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICJzdGF0aWMg
dm9pZCAke2F0dHJOYW1lfUF0dHJTZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pXG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgInN0YXRpYyB2b2lk
ICR7YXR0ck5hbWV9QXR0clNldHRlckNhbGxiYWNrJHtmb3JNYWluV29ybGRTdWZmaXh9KHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbylcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJu
YWxzLCAie1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsIEdlbmVyYXRlRmVh
dHVyZU9ic2VydmF0aW9uKCRhdHRyRXh0LT57IlY4TWVhc3VyZUFzIn0pKTsKICAgICBpZiAoSGFz
Q3VzdG9tU2V0dGVyKCRhdHRyRXh0KSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudEludGVy
bmFscywgIiAgICAke3Y4SW50ZXJmYWNlTmFtZX06OiR7YXR0ck5hbWV9QXR0clNldHRlckN1c3Rv
bShuYW1lLCB2YWx1ZSwgaW5mbyk7XG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudEludGVybmFscywgIiAgICAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHth
dHRyTmFtZX1BdHRyU2V0dGVyKG5hbWUsIHZhbHVlLCBpbmZvKTtcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudEludGVybmFscywgIiAgICAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6
JHthdHRyTmFtZX1BdHRyU2V0dGVyJHtmb3JNYWluV29ybGRTdWZmaXh9KG5hbWUsIHZhbHVlLCBp
bmZvKTtcbiIpOwogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIn1cblxu
Iik7CiAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIjZW5kaWYgLy8gJHtjb25kaXRp
b25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMTI0Niw2ICsxMjg2
LDcgQEAgc3ViIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcgogewogICAgIG15ICRhdHRyaWJ1dGUg
PSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CisgICAgbXkgJGZvck1haW5Xb3Js
ZFN1ZmZpeCA9IHNoaWZ0OwogCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5u
YW1lOwogICAgIG15ICR2OEludGVyZmFjZU5hbWUgPSAiVjgkaW50ZXJmYWNlTmFtZSI7CkBAIC0x
MjU5LDcgKzEzMDAsNyBAQCBzdWIgR2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyCiAKICAgICBteSAk
Y29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0
cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwogICAgIHB1c2goQGltcGxDb250ZW50SW50ZXJu
YWxzLCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKLSAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgInN0YXRpYyB2b2lkICR7YXR0ck5h
bWV9QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pXG4iKTsKKyAgICBwdXNo
KEBpbXBsQ29udGVudEludGVybmFscywgInN0YXRpYyB2b2lkICR7YXR0ck5hbWV9QXR0clNldHRl
ciR7Zm9yTWFpbldvcmxkU3VmZml4fSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pXG4iKTsK
ICAgICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIntcbiIpOwogCiAgICAgIyBJZiB0aGUg
IlN0cmljdFR5cGVDaGVja2luZyIgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHByZXNlbnQsIGFuZCB0
aGUgYXR0cmlidXRlJ3MgdHlwZSBpcyBhbgpAQCAtMjI3NSw3ICsyMzE2LDcgQEAgRU5ECiAKICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rv
cjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3Vy
cmVudFdvcmxkVHlwZSkKIHsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGNhY2hlZFRlbXBsYXRlOwogICAgIGlmICghY2FjaGVkVGVtcGxhdGUuSXNFbXB0
eSgpKQpAQCAtMjI4Nyw3ICsyMzI4LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSgKICAgICB2
ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IHJlc3VsdC0+SW5zdGFuY2VU
ZW1wbGF0ZSgpOwogICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoJHt2OEludGVy
ZmFjZU5hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQpOwogICAgIHJlc3VsdC0+U2V0Q2xhc3NOYW1l
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiJHtpbnRlcmZhY2VOYW1lfSIpKTsKLSAgICByZXN1bHQt
PkluaGVyaXQoJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZShpc29sYXRlLCB3b3JsZFR5
cGUpKTsKKyAgICByZXN1bHQtPkluaGVyaXQoJHt2OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0
ZShpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSk7CiAKICAgICBjYWNoZWRUZW1wbGF0ZSA9IHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHJlc3VsdCk7
CiAgICAgcmV0dXJuIGNhY2hlZFRlbXBsYXRlOwpAQCAtMjM1Niw2ICsyMzk3LDggQEAgc3ViIEdl
bmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZQogCiAgICAgbXkgJGdldHRlcjsKICAgICBteSAk
c2V0dGVyOworICAgIG15ICRnZXR0ZXJGb3JNYWluV29ybGQ7CisgICAgbXkgJHNldHRlckZvck1h
aW5Xb3JsZDsKICAgICBteSAkcHJvcEF0dHIgPSAidjg6Ok5vbmUiOwogCiAgICAgIyBDaGVjayBh
dHRyaWJ1dGVzLgpAQCAtMjM4MiwxOSArMjQyNSwyNSBAQCBzdWIgR2VuZXJhdGVTaW5nbGVCYXRj
aGVkQXR0cmlidXRlCiAgICAgICAgICRkYXRhID0gIiZWOCR7Y29uc3RydWN0b3JUeXBlfTo6aW5m
byI7CiAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7aW50
ZXJmYWNlTmFtZX1Db25zdHJ1Y3RvckdldHRlciI7CiAgICAgICAgICRzZXR0ZXIgPSAiJHtpbnRl
cmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7aW50ZXJmYWNlTmFtZX1SZXBsYWNlYWJsZUF0dHJTZXR0
ZXJDYWxsYmFjayI7CisgICAgICAgICRnZXR0ZXJGb3JNYWluV29ybGQgPSAiMCI7CisgICAgICAg
ICRzZXR0ZXJGb3JNYWluV29ybGQgPSAiMCI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgIyBEZWZh
dWx0IEdldHRlciBhbmQgU2V0dGVyCiAgICAgICAgICRnZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1l
fVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0ckdldHRlckNhbGxiYWNrIjsKICAgICAgICAgJHNl
dHRlciA9ICIke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHthdHRyTmFtZX1BdHRyU2V0dGVy
Q2FsbGJhY2siOworICAgICAgICAkZ2V0dGVyRm9yTWFpbldvcmxkID0gIiR7Z2V0dGVyfUZvck1h
aW5Xb3JsZCI7CisgICAgICAgICRzZXR0ZXJGb3JNYWluV29ybGQgPSAiJHtzZXR0ZXJ9Rm9yTWFp
bldvcmxkIjsKIAogICAgICAgICBpZiAoIUhhc0N1c3RvbVNldHRlcigkYXR0ckV4dCkgJiYgJGF0
dHJFeHQtPnsiUmVwbGFjZWFibGUifSkgewogICAgICAgICAgICAgJHNldHRlciA9ICIke2ludGVy
ZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHtpbnRlcmZhY2VOYW1lfVJlcGxhY2VhYmxlQXR0clNldHRl
ckNhbGxiYWNrIjsKKyAgICAgICAgICAgICRzZXR0ZXJGb3JNYWluV29ybGQgPSAiMCI7CiAgICAg
ICAgIH0KICAgICB9CiAKICAgICAjIFJlYWQgb25seSBhdHRyaWJ1dGVzCiAgICAgaWYgKElzUmVh
ZG9ubHkoJGF0dHJpYnV0ZSkpIHsKICAgICAgICAgJHNldHRlciA9ICIwIjsKKyAgICAgICAgJHNl
dHRlckZvck1haW5Xb3JsZCA9ICIwIjsKICAgICB9CiAKICAgICAjIEFuIGFjY2Vzc29yIGNhbiBi
ZSBpbnN0YWxsZWQgb24gdGhlIHByb3RvCkBAIC0yNDAyLDExICsyNDUxLDE2IEBAIHN1YiBHZW5l
cmF0ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUKICAgICAgICAgJG9uX3Byb3RvID0gIjEgLyogb24g
cHJvdG8gKi8iOwogICAgIH0KIAorICAgIGlmICghJGF0dHJFeHQtPnsiVjhQZXJXb3JsZEJpbmRp
bmdzIn0pIHsKKyAgICAgICRnZXR0ZXJGb3JNYWluV29ybGQgPSAiMCI7CisgICAgICAkc2V0dGVy
Rm9yTWFpbldvcmxkID0gIjAiOworICAgIH0KKwogICAgIG15ICRjb21tZW50SW5mbyA9ICJBdHRy
aWJ1dGUgJyRhdHRyTmFtZScgKFR5cGU6ICciIC4gJGF0dHJpYnV0ZS0+dHlwZSAuCiAgICAgICAg
ICAgICAgICAgICAgICAgIicgRXh0QXR0cjogJyIgLiBqb2luKCcgJywga2V5cygleyRhdHRyRXh0
fSkpIC4gIicpIjsKIAogICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICBcL1wv
ICRjb21tZW50SW5mb1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAg
IHtcIiRhdHRyTmFtZVwiLCAkZ2V0dGVyLCAkc2V0dGVyLCAkZGF0YSwgJGFjY2Vzc0NvbnRyb2ws
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BBdHRyKSwgJG9uX3Byb3Rv
fSIgLiAkZGVsaW1pdGVyIC4gIlxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQg
LiAiICAgIHtcIiRhdHRyTmFtZVwiLCAkZ2V0dGVyLCAkc2V0dGVyLCAkZ2V0dGVyRm9yTWFpbldv
cmxkLCAkc2V0dGVyRm9yTWFpbldvcmxkLCAkZGF0YSwgJGFjY2Vzc0NvbnRyb2wsIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BBdHRyKSwgJG9uX3Byb3RvfSIgLiAkZGVs
aW1pdGVyIC4gIlxuIik7CiB9CiAKIHN1YiBJc1N0YW5kYXJkRnVuY3Rpb24KQEAgLTI3MTEsNyAr
Mjc2NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIG15ICRwYXJlbnQg
PSAkXzsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlY4JHtwYXJlbnR9LmgiKTsKICAgICAg
ICAgJHBhcmVudENsYXNzID0gIlY4IiAuICRwYXJlbnQ7Ci0gICAgICAgICRwYXJlbnRDbGFzc1Rl
bXBsYXRlID0gJHBhcmVudENsYXNzIC4gIjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBl
KSI7CisgICAgICAgICRwYXJlbnRDbGFzc1RlbXBsYXRlID0gJHBhcmVudENsYXNzIC4gIjo6R2V0
VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkiOwogICAgICAgICBsYXN0OwogICAg
IH0KIApAQCAtMjc5MCwxNCArMjg0NCwyMSBAQCBFTkQKICAgICAgICAgICAgIEFkZFRvSW1wbElu
Y2x1ZGVzKCJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIpOwogICAgICAgICB9CiAKLSAgICAgICAg
R2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UpOwotICAgICAg
ICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJDYWxsYmFjaygkYXR0cmlidXRlLCAkaW50ZXJmYWNl
KTsKLQorICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIoJGF0dHJpYnV0ZSwgJGludGVy
ZmFjZSwgIiIpOworICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXJDYWxsYmFjaygkYXR0
cmlidXRlLCAkaW50ZXJmYWNlLCAiIik7CisgICAgICAgIGlmICgkYXR0ckV4dC0+eyJWOFBlcldv
cmxkQmluZGluZ3MifSkgeworICAgICAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyKCRh
dHRyaWJ1dGUsICRpbnRlcmZhY2UsICJGb3JNYWluV29ybGQiKTsKKyAgICAgICAgICAgIEdlbmVy
YXRlTm9ybWFsQXR0ckdldHRlckNhbGxiYWNrKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICJGb3JN
YWluV29ybGQiKTsKKyAgICAgICAgfQogICAgICAgICBpZiAoIUhhc0N1c3RvbVNldHRlcigkYXR0
ckV4dCkgJiYgJGF0dHJFeHQtPnsiUmVwbGFjZWFibGUifSkgewogICAgICAgICAgICAgJGhhc1Jl
cGxhY2VhYmxlID0gMTsKICAgICAgICAgfSBlbHNpZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkp
IHsKLSAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcigkYXR0cmlidXRlLCAkaW50
ZXJmYWNlKTsKLSAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlckNhbGxiYWNrKCRh
dHRyaWJ1dGUsICRpbnRlcmZhY2UpOworICAgICAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyU2V0
dGVyKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICIiKTsKKyAgICAgICAgICAgIEdlbmVyYXRlTm9y
bWFsQXR0clNldHRlckNhbGxiYWNrKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UsICIiKTsKKyAgICAg
ICAgICAgIGlmICgkYXR0ckV4dC0+eyJWOFBlcldvcmxkQmluZGluZ3MifSkgeworICAgICAgICAg
ICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIoJGF0dHJpYnV0ZSwgJGludGVyZmFjZSwgIkZv
ck1haW5Xb3JsZCIpOworICAgICAgICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXJDYWxs
YmFjaygkYXR0cmlidXRlLCAkaW50ZXJmYWNlLCAiRm9yTWFpbldvcmxkIik7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMwMDgsOSArMzA2OSw5IEBAIEVORAogICAgICMg
Y29uZmlndXJhdGlvbiBtZXRob2QuCiAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5k
b3ciKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci1zdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBDb25maWd1cmVTaGFkb3dPYmplY3RUZW1wbGF0
ZSh2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IHRlbXBsLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IENvbmZp
Z3VyZVNoYWRvd09iamVjdFRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0
ZT4gdGVtcGwsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRX
b3JsZFR5cGUpCiB7Ci0gICAgVjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUF0dHJp
YnV0ZXModGVtcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPigpLCBzaGFkb3dBdHRy
cywgV1RGX0FSUkFZX0xFTkdUSChzaGFkb3dBdHRycyksIGlzb2xhdGUpOworICAgIFY4RE9NQ29u
ZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHRlbXBsLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3RUZW1wbGF0ZT4oKSwgc2hhZG93QXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZG93
QXR0cnMpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKIAogICAgIC8vIEluc3RhbGwgYSBz
ZWN1cml0eSBoYW5kbGVyIHdpdGggVjguCiAgICAgdGVtcGwtPlNldEFjY2Vzc0NoZWNrQ2FsbGJh
Y2tzKFY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2tDdXN0b20sIFY4RE9NV2luZG93Ojpp
bmRleGVkU2VjdXJpdHlDaGVja0N1c3RvbSwgdjg6OkV4dGVybmFsOjpOZXcoJlY4RE9NV2luZG93
OjppbmZvKSk7CkBAIC0zMDI2LDcgKzMwODcsNyBAQCBFTkQKIAogICAgICMgR2VuZXJhdGUgdGhl
IHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24gbWV0aG9kCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8
PEVORCk7Ci1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZp
Z3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3
b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAK
QEAgLTMwMzYsNyArMzA5Nyw3IEBAIEVORAogICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9uID0g
R2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsIDw8RU5EKTsKICAgICBpZiAoISR7ZW5hYmxlX2Z1bmN0aW9ufSgpKQotICAg
ICAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1w
bGF0ZShkZXNjLCBcIlwiLCAkcGFyZW50Q2xhc3NUZW1wbGF0ZSwgJHt2OEludGVyZmFjZU5hbWV9
OjppbnRlcm5hbEZpZWxkQ291bnQsIDAsIDAsIDAsIDAsIGlzb2xhdGUpOworICAgICAgICBkZWZh
dWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNj
LCBcIlwiLCAkcGFyZW50Q2xhc3NUZW1wbGF0ZSwgJHt2OEludGVyZmFjZU5hbWV9OjppbnRlcm5h
bEZpZWxkQ291bnQsIDAsIDAsIDAsIDAsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAg
IGVsc2UKIEVORAogICAgIH0KQEAgLTMwNTYsMTEgKzMxMTcsMTEgQEAgRU5ECiAKICAgICBpZiAo
JGhhc19jYWxsYmFja3MpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAg
ICAgICAgJHt2OEludGVyZmFjZU5hbWV9TWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSCgke3Y4SW50
ZXJmYWNlTmFtZX1NZXRob2RzKSwgaXNvbGF0ZSk7CisgICAgICAgICR7djhJbnRlcmZhY2VOYW1l
fU1ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoJHt2OEludGVyZmFjZU5hbWV9TWV0aG9kcyksIGlz
b2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogRU5ECiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICAgICAgMCwgMCwgaXNvbGF0ZSk7CisgICAgICAg
IDAsIDAsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogRU5ECiAgICAgfQogCkBAIC0zMDk2
LDcgKzMxNTcsNyBAQCBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHN0
YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEg
PVxcXG4iKTsKICAgICAgICAgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlKCRpbnRlcmZh
Y2VOYW1lLCAkcnVudGltZV9hdHRyLCAiOyIsICIgICAgIik7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCA8PEVORCk7Ci0gICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0
cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEsIGlzb2xhdGUpOworICAgICAgICBWOERP
TUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJE
YXRhLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICB9CiBFTkQKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJcbiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMzE3OSwyMyArMzI0MCwyMyBAQCBFTkQKICAgICByZXR1
cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJ
bnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJX
b3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRh
KiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xh
dGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZp
bmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdv
cmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6
OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRl
bXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3Js
ZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1w
bCk7CisgICAgICAgIENvbmZpZ3VyZSR7djhJbnRlcmZhY2VOYW1lfVRlbXBsYXRlKGRhdGEtPnJh
d1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxk
VHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZv
LCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sICR7djhJbnRlcmZhY2VOYW1l
fTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sICR7djhJbnRlcmZhY2VO
YW1lfTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIHJl
dHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywg
dmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAK
IGJvb2wgJHt2OEludGVyZmFjZU5hbWV9OjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKQEAgLTMzMDAsMTQgKzMz
NjEsMTQgQEAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBWOERPTVdpbmRvdzo6
R2V0U2hhZG93T2JqZWN0VGVtcGxhdGUodjg6Oklzb2wKICAgICAgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gVjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZUZv
ck1haW5Xb3JsZDsKICAgICAgICAgaWYgKFY4RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGVGb3JN
YWluV29ybGQuSXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBWOERPTVdpbmRvd1NoYWRvd09iamVj
dENhY2hlRm9yTWFpbldvcmxkID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPjo6
TmV3KGlzb2xhdGUsIHY4OjpPYmplY3RUZW1wbGF0ZTo6TmV3KCkpOwotICAgICAgICAgICAgQ29u
ZmlndXJlU2hhZG93T2JqZWN0VGVtcGxhdGUoVjhET01XaW5kb3dTaGFkb3dPYmplY3RDYWNoZUZv
ck1haW5Xb3JsZCwgaXNvbGF0ZSk7CisgICAgICAgICAgICBDb25maWd1cmVTaGFkb3dPYmplY3RU
ZW1wbGF0ZShWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlRm9yTWFpbldvcmxkLCBpc29sYXRl
LCBjdXJyZW50V29ybGRUeXBlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gVjhET01XaW5k
b3dTaGFkb3dPYmplY3RDYWNoZUZvck1haW5Xb3JsZDsKICAgICB9IGVsc2UgewogICAgICAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBWOERPTVdpbmRvd1NoYWRv
d09iamVjdENhY2hlRm9yTm9uTWFpbldvcmxkOwogICAgICAgICBpZiAoVjhET01XaW5kb3dTaGFk
b3dPYmplY3RDYWNoZUZvck5vbk1haW5Xb3JsZC5Jc0VtcHR5KCkpIHsKICAgICAgICAgICAgIFY4
RE9NV2luZG93U2hhZG93T2JqZWN0Q2FjaGVGb3JOb25NYWluV29ybGQgPSB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0VGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6Ok9iamVjdFRlbXBsYXRlOjpO
ZXcoKSk7Ci0gICAgICAgICAgICBDb25maWd1cmVTaGFkb3dPYmplY3RUZW1wbGF0ZShWOERPTVdp
bmRvd1NoYWRvd09iamVjdENhY2hlRm9yTm9uTWFpbldvcmxkLCBpc29sYXRlKTsKKyAgICAgICAg
ICAgIENvbmZpZ3VyZVNoYWRvd09iamVjdFRlbXBsYXRlKFY4RE9NV2luZG93U2hhZG93T2JqZWN0
Q2FjaGVGb3JOb25NYWluV29ybGQsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBWOERPTVdpbmRvd1NoYWRvd09iamVjdENhY2hlRm9yTm9uTWFp
bldvcmxkOwogICAgIH0KQEAgLTM1MTcsNyArMzU3OCw3IEBAIEVORAogICAgICAgICAgICAgQGFy
Z3MgPSAoKTsKICAgICAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChAcGFyYW1zKSB7CiAgICAg
ICAgICAgICAgICAgbXkgJHBhcmFtTmFtZSA9ICRwYXJhbS0+bmFtZTsKLSAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtwYXJhbU5h
bWV9SGFuZGxlID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkcGFyYW0sICRwYXJhbU5hbWUsICJ2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCkiLCAidjhDb250ZXh0LT5HZXRJc29sYXRlKCkiKSAuICI7XG4i
KTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gJHtwYXJhbU5hbWV9SGFuZGxlID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkcGFyYW0s
ICRwYXJhbU5hbWUsICJ2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkiLCAidjhDb250ZXh0LT5HZXRJ
c29sYXRlKCkiLCAiIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKCR7cGFyYW1OYW1lfUhhbmRsZS5Jc0VtcHR5KCkpIHtcbiIpOwogICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpZiAoIWlzU2NyaXB0Q29udHJv
bGxlclRlcm1pbmF0aW5nKCkpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgICAgIENSQVNIKCk7XG4iKTsKQEAgLTM4OTUsOSArMzk1Niw5IEBAIHN1YiBH
ZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZwogICAgIG15ICRuYXRpdmVWYWx1ZTsKICAgICAjIEZJ
WE1FOiBVcGRhdGUgZm9yIGFsbCBTY3JpcHRXcmFwcGFibGVzLgogICAgIGlmIChJc0RPTU5vZGVU
eXBlKCRpbnRlcmZhY2VOYW1lKSkgewotICAgICAgICAkbmF0aXZlVmFsdWUgPSBOYXRpdmVUb0pT
VmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsICRyZXR1cm4sICJhcmdzLkhvbGRlcigpIiwgImFy
Z3MuR2V0SXNvbGF0ZSgpIiwgImFyZ3MiLCAiaW1wIiwgIlJldHVyblVuc2FmZUhhbmRsZSIpOwor
ICAgICAgICAkbmF0aXZlVmFsdWUgPSBOYXRpdmVUb0pTVmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1
cmUsICRyZXR1cm4sICJhcmdzLkhvbGRlcigpIiwgImFyZ3MuR2V0SXNvbGF0ZSgpIiwgImFyZ3Mi
LCAiaW1wIiwgIlJldHVyblVuc2FmZUhhbmRsZSIsICIiKTsKICAgICB9IGVsc2UgewotICAgICAg
ICAkbmF0aXZlVmFsdWUgPSBOYXRpdmVUb0pTVmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsICRy
ZXR1cm4sICJhcmdzLkhvbGRlcigpIiwgImFyZ3MuR2V0SXNvbGF0ZSgpIiwgMCwgMCwgIlJldHVy
blVuc2FmZUhhbmRsZSIpOworICAgICAgICAkbmF0aXZlVmFsdWUgPSBOYXRpdmVUb0pTVmFsdWUo
JGZ1bmN0aW9uLT5zaWduYXR1cmUsICRyZXR1cm4sICJhcmdzLkhvbGRlcigpIiwgImFyZ3MuR2V0
SXNvbGF0ZSgpIiwgMCwgMCwgIlJldHVyblVuc2FmZUhhbmRsZSIsICIiKTsKICAgICB9CiAKICAg
ICAkcmVzdWx0IC49ICRpbmRlbnQgLiAicmV0dXJuICIgLiAkbmF0aXZlVmFsdWUgLiAiO1xuIjsK
QEAgLTQxNDEsNyArNDIwMiw3IEBAIHN1YiBDcmVhdGVDdXN0b21TaWduYXR1cmUKICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcyhH
ZXRWOEhlYWRlck5hbWUoJHR5cGUpKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgJHJlc3VsdCAuPSAiVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxh
dGUoJlY4JHt0eXBlfTo6aW5mbywgd29ybGRUeXBlKSI7CisgICAgICAgICAgICAgICAgJHJlc3Vs
dCAuPSAiVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4JHt0
eXBlfTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkiOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgJHJlc3VsdCAuPSAidjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4oKSI7CkBAIC00Mjg2LDYgKzQzNDcsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAg
ICAgbXkgJGdldFNjcmlwdFdyYXBwYWJsZUFyZyA9ICRnZXRTY3JpcHRXcmFwcGFibGUgPyAiLCAk
Z2V0U2NyaXB0V3JhcHBhYmxlIiA6ICIiOwogICAgIG15ICRyZXR1cm5IYW5kbGVUeXBlID0gc2hp
ZnQ7CiAgICAgbXkgJHJldHVybkhhbmRsZVR5cGVBcmcgPSAkcmV0dXJuSGFuZGxlVHlwZSA/ICIs
ICRyZXR1cm5IYW5kbGVUeXBlIiA6ICIiOworICAgIG15ICRmb3JNYWluV29ybGRTdWZmaXggPSBz
aGlmdDsKIAogICAgIG15ICR0eXBlID0gJHNpZ25hdHVyZS0+dHlwZTsKIApAQCAtNDM0Myw3ICs0
NDA1LDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogCiAgICAgaWYgKElzRE9NTm9kZVR5cGUoJHR5
cGUpIHx8ICR0eXBlIGVxICJFdmVudFRhcmdldCIpIHsKICAgICAgIGlmICgkZ2V0U2NyaXB0V3Jh
cHBhYmxlKSB7Ci0gICAgICAgICAgcmV0dXJuICJ0b1Y4RmFzdCgkdmFsdWUkZ2V0SG9sZGVyQ29u
dGFpbmVyQXJnJGdldFNjcmlwdFdyYXBwYWJsZUFyZykiOworICAgICAgICAgIHJldHVybiAidG9W
OEZhc3Qke2Zvck1haW5Xb3JsZFN1ZmZpeH0oJHZhbHVlJGdldEhvbGRlckNvbnRhaW5lckFyZyRn
ZXRTY3JpcHRXcmFwcGFibGVBcmcpIjsKICAgICAgIH0KICAgICAgIHJldHVybiAidG9WOCgkdmFs
dWUsICRnZXRDcmVhdGlvbkNvbnRleHQsICRnZXRJc29sYXRlKSI7CiAgICAgfQpAQCAtNDM2Myw3
ICs0NDI1LDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJ3
dGYvR2V0UHRyLmgiKTsKIAogICAgIGlmICgkZ2V0U2NyaXB0V3JhcHBhYmxlKSB7Ci0gICAgICAg
ICAgcmV0dXJuICJ0b1Y4RmFzdCgkdmFsdWUkZ2V0SG9sZGVyQ29udGFpbmVyQXJnJGdldFNjcmlw
dFdyYXBwYWJsZUFyZykiOworICAgICAgICAgIHJldHVybiAidG9WOEZhc3QkZm9yTWFpbldvcmxk
U3VmZml4KCR2YWx1ZSRnZXRIb2xkZXJDb250YWluZXJBcmckZ2V0U2NyaXB0V3JhcHBhYmxlQXJn
KSI7CiAgICAgfQogICAgIHJldHVybiAidG9WOCgkdmFsdWUsICRnZXRDcmVhdGlvbkNvbnRleHQs
ICRnZXRJc29sYXRlKSI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExBdHRyaWJ1dGVzLnR4dAppbmRleCAyOGNiZWUzZWQ2NDI3M2VjOWJiMmNkMGYzOGY2NGVk
MWFhMzI5MTk1Li42NjkyOGU3OTIxMzcxOWVhOTcwYzYzMmNkY2VhMzY1ZmE1YzYwNGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQK
QEAgLTEyOCw2ICsxMjgsNyBAQCBWOEVuYWJsZWRQZXJDb250ZXh0PSoKIFY4R2VuZXJhdGVJc1Jl
YWNoYWJsZT1JbXBsRG9jdW1lbnR8SW1wbEVsZW1lbnRSb290fEltcGxPd25lclJvb3R8SW1wbE93
bmVyTm9kZVJvb3QKIFY4Tm9XcmFwcGVyQ2FjaGUKIFY4TWVhc3VyZUFzPSoKK1Y4UGVyV29ybGRC
aW5kaW5ncwogVjhSZWFkT25seQogVjhTa2lwVlRhYmxlVmFsaWRhdGlvbgogVjhVbmZvcmdlYWJs
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
RmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOEZsb2F0NjRBcnJheS5jcHAKaW5kZXggYmUwZmE1NDA1NWFkMjdmODc2ZGVkMTNmOTcyZDM4
NzMzMzkyYWY2Yi4uYWEwMmY5MDY5NjdlMmM2YjIwMDAzNzgxODgwNTQ0Y2YzNTVhOGQwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2
NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhGbG9hdDY0QXJyYXkuY3BwCkBAIC0xMzUsMTQgKzEzNSwxNCBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhGbG9hdDY0QXJyYXk6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYQogICAgIHJldHVybiBGbG9hdDY0QXJyYXlWOEludGVybmFsOjpjb25zdHJ1Y3Rvcihh
cmdzKTsKIH0KIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBD
b25maWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3
b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1
cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAg
IHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwotICAgIGRlZmF1bHRT
aWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJG
bG9hdDY0QXJyYXkiLCBWOEFycmF5QnVmZmVyVmlldzo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29y
bGRUeXBlKSwgVjhGbG9hdDY0QXJyYXk6OmludGVybmFsRmllbGRDb3VudCwKKyAgICBkZWZhdWx0
U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAi
RmxvYXQ2NEFycmF5IiwgVjhBcnJheUJ1ZmZlclZpZXc6OkdldFRlbXBsYXRlKGlzb2xhdGUsIGN1
cnJlbnRXb3JsZFR5cGUpLCBWOEZsb2F0NjRBcnJheTo6aW50ZXJuYWxGaWVsZENvdW50LAogICAg
ICAgICAwLCAwLAotICAgICAgICBWOEZsb2F0NjRBcnJheU1ldGhvZHMsIFdURl9BUlJBWV9MRU5H
VEgoVjhGbG9hdDY0QXJyYXlNZXRob2RzKSwgaXNvbGF0ZSk7CisgICAgICAgIFY4RmxvYXQ2NEFy
cmF5TWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOEZsb2F0NjRBcnJheU1ldGhvZHMpLCBpc29s
YXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVy
ZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiAgICAgZGVzYy0+U2V0
Q2FsbEhhbmRsZXIoVjhGbG9hdDY0QXJyYXk6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwogICAgIHY4
OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gZGVzYy0+SW5zdGFuY2VUZW1w
bGF0ZSgpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSh2ODo6CiAKICAg
ICAvLyBDdXN0b20gU2lnbmF0dXJlICdmb28nCiAgICAgY29uc3QgaW50IGZvb0FyZ2MgPSAxOwot
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZvb0FyZ3ZbZm9vQXJnY10gPSB7
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOEZsb2F0MzJB
cnJheTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGZvb0FyZ3ZbZm9vQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPnJhd1RlbXBsYXRlKCZWOEZsb2F0MzJBcnJheTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkg
fTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGZvb1NpZ25hdHVyZSA9IHY4OjpTaWdu
YXR1cmU6Ok5ldyhkZXNjLCBmb29BcmdjLCBmb29Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgiZm9vIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoRmxvYXQ2
NEFycmF5VjhJbnRlcm5hbDo6Zm9vTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGZvb1Np
Z25hdHVyZSkpOwogCkBAIC0xNjIsMjMgKzE2MiwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6
OgogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gVjhGbG9hdDY0QXJyYXk6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOEZsb2F0NjRBcnJheTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUs
IFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVE
YXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBs
YXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVN
YXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUp
LmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVu
dFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVt
cGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxk
VHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBs
KTsKKyAgICAgICAgQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZShkYXRhLT5yYXdUZW1w
bGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUp
OworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVt
cGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOEZsb2F0NjRBcnJheTo6SGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4RmxvYXQ2NEFycmF5OjpIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRU
eXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5z
dGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogYm9vbCBWOEZsb2F0
NjRBcnJheTo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCmluZGV4IGRjNTRmMDBlMGI1
ZDA0ODUzODc1ZDM0YmViNmY5M2FkZWZiOThlMmIuLjM4OTk1ZjYzODU0ODI3N2NkMmQwNGJlODg2
MWFiY2RiNmUzYWM2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCkBAIC03Miw2ICs3MiwxNyBAQCBpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRmxvYXQ2NEFycmF5KiBpbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZQogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1h
aW5Xb3JsZChGbG9hdDY0QXJyYXkqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBl
KGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAg
ICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBs
KTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsK
KyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0
ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoRmxvYXQ2NEFycmF5KiBpbXBsLCBjb25zdCBI
b2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CkBAIC04
NCw2ICs5NSwyNSBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KEZsb2F0
NjRBcnJheSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJgogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoRmxvYXQ2NEFycmF5KiBpbXBsLCBjb25zdCBI
b2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAg
QVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOwor
ICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVy
LkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9N
RGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBl
ci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGlt
cGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBGbG9h
dDY0QXJyYXkgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBh
YmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwu
Z2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xk
ZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgRmxvYXQ2NEFycmF5ID4gaW1wbCwgY29uc3QgSG9sZGVy
Q29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewogICAgIHJldHVy
biB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDI0MmJiN2VmYzJiZWI0ZDE0YTgxNjE5MzRlZTAy
ZjRjZDk5Yjg3NjguLjZhYjY2MWQ4MTMyYjYzZTJmY2I4ZTdiOTM3NzM3ZTFlMGI1NDFmNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RB
Y3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0xNzUsMTcgKzE3NSwxNyBAQCBz
dGF0aWMgdm9pZCBUZXN0QWN0aXZlRE9NT2JqZWN0RG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogCiBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9u
OjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdEFjdGl2ZURPTU9iamVjdEF0dHJzW10gPSB7CiAgICAg
Ly8gQXR0cmlidXRlICdleGNpdGluZ0F0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBF
eHRBdHRyOiAnJykKLSAgICB7ImV4Y2l0aW5nQXR0ciIsIFRlc3RBY3RpdmVET01PYmplY3RWOElu
dGVybmFsOjpleGNpdGluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAorICAgIHsiZXhjaXRpbmdBdHRyIiwgVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4
Y2l0aW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiB9
OwogCi1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3Vy
ZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3
b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7
CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBk
ZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShk
ZXNjLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPigpLCBWOFRlc3RBY3RpdmVET01PYmplY3Q6OmludGVybmFsRmllbGRDb3VudCwKICAg
ICAgICAgVjhUZXN0QWN0aXZlRE9NT2JqZWN0QXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0
QWN0aXZlRE9NT2JqZWN0QXR0cnMpLAotICAgICAgICAwLCAwLCBpc29sYXRlKTsKKyAgICAgICAg
MCwgMCwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1
bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAg
IHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gZGVzYy0+SW5zdGFuY2VU
ZW1wbGF0ZSgpOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvID0gZGVz
Yy0+UHJvdG90eXBlVGVtcGxhdGUoKTsKQEAgLTE5NSw3ICsxOTUsNyBAQCBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9i
amVjdFRlbXBsYQogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnZXhjaXRpbmdGdW5jdGlvbicK
ICAgICBjb25zdCBpbnQgZXhjaXRpbmdGdW5jdGlvbkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGV4Y2l0aW5nRnVuY3Rpb25Bcmd2W2V4Y2l0aW5nRnVuY3Rp
b25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUo
JlY4Tm9kZTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGV4Y2l0aW5nRnVuY3Rpb25Bcmd2W2V4Y2l0aW5nRnVuY3Rpb25BcmdjXSA9IHsg
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5m
bywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGV4
Y2l0aW5nRnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZXhjaXRp
bmdGdW5jdGlvbkFyZ2MsIGV4Y2l0aW5nRnVuY3Rpb25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4
OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZXhjaXRpbmdGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpleGNpdGluZ0Z1bmN0aW9u
TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGV4Y2l0aW5nRnVuY3Rpb25TaWduYXR1cmUp
KTsKIApAQCAtMjA3LDIzICsyMDcsMjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGEKICAgICBy
ZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklz
b2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVt
cGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEt
PnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVt
cGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3Js
ZFR5cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAo
Y3VycmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwog
CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEFjdGl2
ZURPTU9iamVjdFRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBp
c29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRk
KCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRl
bXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0
ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxk
VHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4
VGVzdEFjdGl2ZURPTU9iamVjdDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiti
b29sIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50
V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3Vy
cmVudFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpIYXNJbnN0
YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaAppbmRleCA2YmFkOTkwMjFiMmM5
YWFkMjg2YWViOThkYzczNTA1NjVmODZlMTYyLi40OTFhM2FhOTkxMzhhMWY1ZjNiYjdhNjc3Yjky
ZmFhN2VhZmJjY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCkBAIC03NSw2ICs3
NSwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEFjdGl2ZURPTU9i
amVjdCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZQogICAgIHJldHVybiB3cmFwKGltcGwsIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXBsLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7Cisg
ICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJ
S0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBw
ZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBX
cmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RBY3Rp
dmVET01PYmplY3QqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFw
cGFibGUqIHdyYXBwYWJsZSkKIHsKQEAgLTg3LDYgKzk4LDI1IEBAIGlubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wbCwgY29uc3QgSG9s
ZGVyQ29uCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBh
YmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChU
ZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5l
ciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWlu
ZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkp
CisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9y
TWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwg
Y29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRh
aW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0QWN0aXZlRE9NT2JqZWN0ID4gaW1wbCwg
Y29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQor
eworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIs
IHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFz
cyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NS
ZWZQdHI8IFRlc3RBY3RpdmVET01PYmplY3QgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0
KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuY3BwCmluZGV4IGJhZDg1MmRmOGRmNjE5ZjU1NjY1MzQ0ZDQ2MTk4OGNjNjhi
NjgwM2IuLjQ0N2RmYWZhODg1NWRiNDY3NTg5ZWQxMDhiMGIwNDRlNmMxZDEzYTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21O
YW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtOTEsMTQgKzkxLDE0IEBAIHN0YXRp
YyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRNZXRob2QgVjhUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXJNZXRob2RzW10KICAgICB7ImFub3RoZXJGdW5jdGlvbiIsIFRlc3RDdXN0b21OYW1l
ZEdldHRlclY4SW50ZXJuYWw6OmFub3RoZXJGdW5jdGlvbk1ldGhvZENhbGxiYWNrfSwKIH07CiAK
LXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29y
bGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25m
aWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7
CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBk
ZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShk
ZXNjLCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+KCksIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjppbnRlcm5hbEZpZWxkQ291bnQs
CiAgICAgICAgIDAsIDAsCi0gICAgICAgIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyTWV0aG9kcywg
V1RGX0FSUkFZX0xFTkdUSChWOFRlc3RDdXN0b21OYW1lZEdldHRlck1ldGhvZHMpLCBpc29sYXRl
KTsKKyAgICAgICAgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJNZXRob2RzLCBXVEZfQVJSQVlfTEVO
R1RIKFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyTWV0aG9kcyksIGlzb2xhdGUsIGN1cnJlbnRXb3Js
ZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBj
YXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBs
YXRlPiBpbnN0YW5jZSA9IGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKTsKICAgICB2ODo6TG9jYWw8
djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90byA9IGRlc2MtPlByb3RvdHlwZVRlbXBsYXRlKCk7CkBA
IC0xMTIsMjMgKzExMiwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyVGVtcAogICAgIHJldHVybiBk
ZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXI6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xh
dGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xh
dGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBl
cklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxh
dGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRl
bXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxh
dGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5
cGUpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3Vy
cmVudFdvcmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAg
ICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5h
bWVkR2V0dGVyVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlz
b2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQo
JmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJU
ZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xh
dGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3Js
ZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBW
OFRlc3RDdXN0b21OYW1lZEdldHRlcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUp
Citib29sIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1
cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVl
LCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogYm9vbCBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6
SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCmluZGV4IGY3
MTdhMGZiNmYzYWIxNWY5NDgyOTI2OTJlYjNlZDAzYzVhZWMwYTkuLmIwZWIyOTEzYmFlYWY4ZDY2
NDYzOGY2ZDFmYTcxM2U3Y2EwY2FhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRl
ci5oCkBAIC03Niw2ICs3NiwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgo
VGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYgogICAgIHJldHVy
biB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3Js
ZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhD
aGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURh
dGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIu
SXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBs
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJD
b250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOEZhc3QoVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWlu
ZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CkBAIC04OCw2ICs5OSwyNSBA
QCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RDdXN0b21OYW1lZEdl
dHRlciogaW1wbCwgY29uc3QgSG9sZGVyQwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250
YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OEZhc3RGb3JNYWluV29ybGQoVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXBsLCBjb25zdCBIb2xk
ZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNT
RVJUKHdvcmxkVHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAg
IGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdl
dElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0
YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5J
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGws
IGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwg
V3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxk
KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFz
cyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdEN1c3RvbU5hbWVkR2V0dGVyID4gaW1w
bCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxl
KQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJs
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjRhZTQ0YzU5ZTQ0
NzE2MzQ1YjEzYTlhOTJlY2RlMjAwMzM4OWQyNy4uY2NjM2U1M2M4MDcwNDdkNjQ5N2RhYmQ5YjNj
MDE1ZTM5MDM3N2ZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAt
MTE1LDkgKzExNSw5IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3Io
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJh
dGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RFdmVudENvbnN0cnVjdG9yQXR0cnNbXSA9IHsK
ICAgICAvLyBBdHRyaWJ1dGUgJ2F0dHIxJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0
QXR0cjogJycpCi0gICAgeyJhdHRyMSIsIFRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6
YXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiYXR0cjEi
LCBUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWw6OmF0dHIxQXR0ckdldHRlckNhbGxiYWNr
LCAwLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2F0dHIyJyAoVHlw
ZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ0luaXRpYWxpemVkQnlFdmVudENvbnN0
cnVjdG9yJykKLSAgICB7ImF0dHIyIiwgVGVzdEV2ZW50Q29uc3RydWN0b3JWOEludGVybmFsOjph
dHRyMkF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJhdHRyMiIs
IFRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjJBdHRyR2V0dGVyQ2FsbGJhY2ss
IDAsIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsKIAogYm9vbCBmaWxsVGVzdEV2ZW50Q29uc3Ry
dWN0b3JJbml0KFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdCYgZXZlbnRJbml0LCBjb25zdCBEaWN0
aW9uYXJ5JiBvcHRpb25zKQpAQCAtMTM3LDE0ICsxMzcsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3UKICAgICByZXR1cm4gVGVzdEV2ZW50Q29uc3RydWN0b3JWOEludGVybmFsOjpjb25zdHJ1
Y3RvcihhcmdzKTsKIH0KIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBDb25maWd1cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGxhdGUodjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFw
cGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRlbXBsYXRlKHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRP
bmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNp
Z25hdHVyZTsKICAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25m
aWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6aW50ZXJu
YWxGaWVsZENvdW50LAogICAgICAgICBWOFRlc3RFdmVudENvbnN0cnVjdG9yQXR0cnMsIFdURl9B
UlJBWV9MRU5HVEgoVjhUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHJzKSwKLSAgICAgICAgMCwgMCwg
aXNvbGF0ZSk7CisgICAgICAgIDAsIDAsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAg
IFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2ls
bCBub3QgYmUgdXNlZC4KICAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOFRlc3RFdmVudENvbnN0
cnVjdG9yOjpjb25zdHJ1Y3RvckNhbGxiYWNrKTsKICAgICAKQEAgLTE1NCwyMyArMTU0LDIzIEBA
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhU
ZXN0RXZlbnRDb25zdHJ1Y3RvclRlbXBsCiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpHZXRU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUp
Cit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRDb25zdHJ1
Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUg
Y3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5k
KCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSku
ZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOworICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5kKCkp
CiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhh
bmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1w
bCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0ZShkYXRh
LT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAg
ICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAg
ICBDb25maWd1cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxh
dGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsK
KyAgICBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBs
KTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdEV2ZW50Q29uc3Ry
dWN0b3I6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICBy
ZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8s
IHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQog
CiBib29sIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29u
c3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggZmM0YTAxMzM0YTllMmY2ODI2MDc5OGNmYTM1MGJm
YWNjN2FkZjE3Mi4uNDU5MjJmZThkNzBkMzk0Njc0ODA3NTU4MjcxOThiMmU4ZWUwODQ2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2
ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC03Nyw2ICs3NywxNyBAQCBpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcGwsIHY4
OjpIYW5kbGU8djg6Ok9iagogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5X
b3JsZChUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVCh3b3Js
ZFR5cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQor
ICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxk
KGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFw
cGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9
CisKIHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5s
aW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0RXZlbnRDb25zdHJ1Y3Rvciog
aW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBh
YmxlKQogewpAQCAtODksNiArMTAwLDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOEZhc3QoVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcGwsIGNvbnN0IEhvbGRlckNvCiB9CiAK
IHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0RXZlbnRDb25z
dHJ1Y3RvciogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJs
ZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVyLkdldElzb2xh
dGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICBy
ZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChp
bXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBl
cjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5H
ZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNz
IFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWlu
V29ybGQoUGFzc1JlZlB0cjwgVGVzdEV2ZW50Q29uc3RydWN0b3IgPiBpbXBsLCBjb25zdCBIb2xk
ZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgcmV0
dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxl
KTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJs
ZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVz
dEV2ZW50Q29uc3RydWN0b3IgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5l
ciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0
KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4
IGU1MjU4MWEzMGY2ZWZhOTNhMWE3MWMwYjIyZTkyNGRjZThiZWExZjguLjBjOGVhMWFlOGZlYzU1
ZjQyZDU5YWY5OTMwMTQyNGVjOGRmN2ZiMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcApA
QCAtMTU5LDE0ICsxNTksMTQgQEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0
Y2hlZE1ldGhvZCBWOFRlc3RFdmVudFRhcmdldE1ldGhvZHNbXSA9IHsKICAgICB7InJlbW92ZUV2
ZW50TGlzdGVuZXIiLCBUZXN0RXZlbnRUYXJnZXRWOEludGVybmFsOjpyZW1vdmVFdmVudExpc3Rl
bmVyTWV0aG9kQ2FsbGJhY2t9LAogfTsKIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUodjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9u
bHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2ln
bmF0dXJlOwogICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZp
Z3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0RXZlbnRUYXJnZXQiLCB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0RXZlbnRUYXJnZXQ6OmludGVybmFsRmllbGRDb3Vu
dCwKICAgICAgICAgMCwgMCwKLSAgICAgICAgVjhUZXN0RXZlbnRUYXJnZXRNZXRob2RzLCBXVEZf
QVJSQVlfTEVOR1RIKFY4VGVzdEV2ZW50VGFyZ2V0TWV0aG9kcyksIGlzb2xhdGUpOworICAgICAg
ICBWOFRlc3RFdmVudFRhcmdldE1ldGhvZHMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0RXZlbnRU
YXJnZXRNZXRob2RzKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CiAgICAgVU5VU0VEX1BB
UkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1
c2VkLgogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gZGVzYy0+
SW5zdGFuY2VUZW1wbGF0ZSgpOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IHBy
b3RvID0gZGVzYy0+UHJvdG90eXBlVGVtcGxhdGUoKTsKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2
ZW50VGFyZ2V0VGVtcGxhdGUodgogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnZGlzcGF0Y2hF
dmVudCcKICAgICBjb25zdCBpbnQgZGlzcGF0Y2hFdmVudEFyZ2MgPSAxOwotICAgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRpc3BhdGNoRXZlbnRBcmd2W2Rpc3BhdGNoRXZlbnRB
cmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4
RXZlbnQ6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBkaXNwYXRjaEV2ZW50QXJndltkaXNwYXRjaEV2ZW50QXJnY10gPSB7IFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOEV2ZW50OjppbmZvLCBjdXJy
ZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gZGlzcGF0Y2hF
dmVudFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBkaXNwYXRjaEV2ZW50QXJn
YywgZGlzcGF0Y2hFdmVudEFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3lt
Ym9sKCJkaXNwYXRjaEV2ZW50IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEV2ZW50
VGFyZ2V0VjhJbnRlcm5hbDo6ZGlzcGF0Y2hFdmVudE1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5l
ZCgpLCBkaXNwYXRjaEV2ZW50U2lnbmF0dXJlKSk7CiAKQEAgLTE4OCwyMyArMTg4LDIzIEBAIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0
RXZlbnRUYXJnZXRUZW1wbGF0ZSh2CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFdmVudFRhcmdldDo6R2V0VGVtcGxhdGUo
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50VGFyZ2V0OjpHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRU
eXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRv
ciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVt
cGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAh
PSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAg
ICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAg
Q29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5m
bywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RF
dmVudFRhcmdldFRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCBjdXJyZW50V29ybGRU
eXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAo
Y3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwog
fQogCi1ib29sIFY4VGVzdEV2ZW50VGFyZ2V0OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxk
VHlwZSkKK2Jvb2wgVjhUZXN0RXZlbnRUYXJnZXQ6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3Vy
cmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUs
IGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiBib29sIFY4VGVzdEV2ZW50VGFyZ2V0OjpIYXNJbnN0
YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggZmUwMDg1MTM0Zjc5MzA3YWQ2NDlm
NTljYThkNDRmNzdjNDEyYjNhNS4uODc1NTYyNDc3MDBiMGY2Y2RiMjljMzhhMGRlZjhkNjI1MDI4
ZTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTc5LDYgKzc5LDE3IEBAIGlubGluZSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0RXZlbnRUYXJnZXQqIGltcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4KICAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwogfQogCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29y
bGQoVGVzdEV2ZW50VGFyZ2V0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9u
Q29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShp
c29sYXRlKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAg
IHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7
CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7Cisg
ICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVt
cGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RFdmVudFRhcmdldCogaW1wbCwgY29uc3Qg
SG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAt
OTEsNiArMTAyLDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVz
dEV2ZW50VGFyZ2V0KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluCiB9CiAKIHRlbXBsYXRlPGNs
YXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0RXZlbnRUYXJnZXQqIGltcGwsIGNv
bnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sK
KyAgICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpID09IE1haW5Xb3Js
ZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbChjb250
YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3
cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdy
YXAoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKK30K
KwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+Citpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFBhc3NSZWZQdHI8
IFRlc3RFdmVudFRhcmdldCA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVy
LCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JNYWluV29y
bGQoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBsYXRlPGNs
YXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0RXZlbnRUYXJnZXQgPiBpbXBsLCBj
b25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7
CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggZTZjNTFiMjkzMmQ4Y2RmMWJkMzdhN2Q2MmI3YTJm
ZTk5MjZiZTQ3ZS4uNmNlN2I1OTVlOGE5YjEwNzU0Y2IxYjVjOGE3NzYxNmU4OGNhODdlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4
Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTg0LDE3ICs4NCwxNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG5hbWVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsCiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1
dGUgVjhUZXN0RXhjZXB0aW9uQXR0cnNbXSA9IHsKICAgICAvLyBBdHRyaWJ1dGUgJ25hbWUnIChU
eXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7Im5hbWUiLCBUZXN0
RXhjZXB0aW9uVjhJbnRlcm5hbDo6bmFtZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgeyJuYW1lIiwgVGVzdEV4Y2VwdGlvblY4SW50ZXJuYWw6Om5hbWVBdHRyR2V0
dGVyQ2FsbGJhY2ssIDAsIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsKIAotc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25U
ZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25U
ZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAg
ICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1
cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmln
dXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RFeGNlcHRpb24iLCB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0RXhjZXB0aW9uOjppbnRlcm5h
bEZpZWxkQ291bnQsCiAgICAgICAgIFY4VGVzdEV4Y2VwdGlvbkF0dHJzLCBXVEZfQVJSQVlfTEVO
R1RIKFY4VGVzdEV4Y2VwdGlvbkF0dHJzKSwKLSAgICAgICAgMCwgMCwgaXNvbGF0ZSk7CisgICAg
ICAgIDAsIDAsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShk
ZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4K
ICAgICAKIApAQCAtMTAzLDIzICsxMDMsMjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZSh2ODoKICAg
ICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRh
KiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xh
dGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6
Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZp
bmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdv
cmxkVHlwZSkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6
OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEV4Y2VwdGlvblRlbXBs
YXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5
cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7
CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdEV4Y2VwdGlvblRlbXBsYXRlKGRhdGEtPnJhd1RlbXBs
YXRlKCZpbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7
CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1w
bCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdEV4Y2VwdGlvbjo6SGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdEV4Y2VwdGlvbjo6SGFzSW5z
dGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIHJldHVybiBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxk
VHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0lu
c3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAKIGJvb2wgVjhUZXN0
RXhjZXB0aW9uOjpIYXNJbnN0YW5jZUluQW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaAppbmRleCBiYWUyMmVj
YTI4ODUxNzU2MDQxNzg1M2E4YjlkNDdjOTkxMzE4MjI5Li4wNzJhYmNmMmUyNjcxZGVjNDJmYTIz
ZGUwMGFlYWIyYzk1M2E2MTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCkBAIC03NSw2ICs3NSwxNyBA
QCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEV4Y2VwdGlvbiogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcgogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9u
Q29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OEZvck1haW5Xb3JsZChUZXN0RXhjZXB0aW9uKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJUKHdv
cmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkp
CisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29y
bGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdy
YXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
K30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RFeGNlcHRpb24qIGltcGws
IGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkK
IHsKQEAgLTg3LDYgKzk4LDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZh
c3QoVGVzdEV4Y2VwdGlvbiogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyCiB9CiAKIHRlbXBs
YXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0RXhjZXB0aW9uKiBpbXBs
LCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUp
Cit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWlu
V29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwo
Y29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlm
ICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVy
biB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgor
aW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVm
UHRyPCBUZXN0RXhjZXB0aW9uID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWlu
ZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5X
b3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8
Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RFeGNlcHRpb24gPiBpbXBsLCBj
b25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7
CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEludGVyZmFjZS5jcHAKaW5kZXggOWNjMGNkODJkNWVjNGRkMzU4NGY3MzJlYjZmNDIx
YzlhNzBlMjRlZi4uN2RhZTU4YTcxNjlmMWM0MTBiM2JmODM2YjM4MmFhNzFmZDkyNjVjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdElu
dGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEludGVyZmFjZS5jcHAKQEAgLTM1NywyNyArMzU3LDI3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3IoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHN0
YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0SW50
ZXJmYWNlQXR0cnNbXSA9IHsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25k
aXRpb24xMikKICAgICAvLyBBdHRyaWJ1dGUgJ3N1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0
cicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDb25kaXRpb25hbCBJbXBs
ZW1lbnRlZEJ5JykKLSAgICB7InN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0ciIsIFRlc3RJ
bnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHJBdHRyR2V0
dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3VwcGxlbWVudGFsU3RhdGlj
UmVhZE9ubHlBdHRyIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRp
Y1JlYWRPbmx5QXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgLy8gQXR0
cmlidXRlICdzdXBwbGVtZW50YWxTdGF0aWNBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0
cjogJ0NvbmRpdGlvbmFsIEltcGxlbWVudGVkQnknKQotICAgIHsic3VwcGxlbWVudGFsU3RhdGlj
QXR0ciIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0
ckdldHRlckNhbGxiYWNrLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3Rh
dGljQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJzdXBwbGVt
ZW50YWxTdGF0aWNBdHRyIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0
YXRpY0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBw
bGVtZW50YWxTdGF0aWNBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICAvLyBB
dHRyaWJ1dGUgJ3N1cHBsZW1lbnRhbFN0cjEnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBF
eHRBdHRyOiAnQ29uZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCi0gICAgeyJzdXBwbGVtZW50YWxT
dHIxIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjFBdHRyR2V0dGVy
Q2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3VwcGxlbWVudGFsU3RyMSIsIFRl
c3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIxQXR0ckdldHRlckNhbGxiYWNr
LCAwLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKICAgICAvLyBBdHRyaWJ1dGUgJ3N1cHBsZW1lbnRhbFN0cjInIChUeXBl
OiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCi0gICAg
eyJzdXBwbGVtZW50YWxTdHIyIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRh
bFN0cjJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVt
ZW50YWxTdHIyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InN1cHBs
ZW1lbnRhbFN0cjIiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyMkF0
dHJHZXR0ZXJDYWxsYmFjaywgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0
cjJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogI2VuZGlmIC8vIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIC8vIEF0dHJpYnV0ZSAnc3VwcGxl
bWVudGFsU3RyMycgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDdXN0b21TZXR0ZXIgQ3Vz
dG9tR2V0dGVyIENvbmRpdGlvbmFsIEltcGxlbWVudGVkQnknKQotICAgIHsic3VwcGxlbWVudGFs
U3RyMyIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIzQXR0ckdldHRl
ckNhbGxiYWNrLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyM0F0dHJT
ZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJzdXBwbGVtZW50YWxTdHIzIiwg
VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjNBdHRyR2V0dGVyQ2FsbGJh
Y2ssIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIzQXR0clNldHRlckNh
bGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVO
QUJMRShDb25kaXRpb24xMikKICAgICAvLyBBdHRyaWJ1dGUgJ3N1cHBsZW1lbnRhbE5vZGUnIChU
eXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwgSW1wbGVtZW50ZWRCeScpCi0g
ICAgeyJzdXBwbGVtZW50YWxOb2RlIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1l
bnRhbE5vZGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBw
bGVtZW50YWxOb2RlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InN1
cHBsZW1lbnRhbE5vZGUiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTm9k
ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRh
bE5vZGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogI2VuZGlmIC8v
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogfTsKIApAQCAtNDE4
LDE0ICs0MTgsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdEludGVyZmFjZTo6Y29u
c3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIHJldHVybiBUZXN0SW50
ZXJmYWNlVjhJbnRlcm5hbDo6Y29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVt
cGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29s
YXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVt
cGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29s
YXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAg
ZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJl
PiBkZWZhdWx0U2lnbmF0dXJlOwogICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3Vy
YXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0SW50ZXJmYWNlIiwgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdEludGVyZmFjZTo6aW50ZXJuYWxG
aWVsZENvdW50LAogICAgICAgICBWOFRlc3RJbnRlcmZhY2VBdHRycywgV1RGX0FSUkFZX0xFTkdU
SChWOFRlc3RJbnRlcmZhY2VBdHRycyksCi0gICAgICAgIFY4VGVzdEludGVyZmFjZU1ldGhvZHMs
IFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0SW50ZXJmYWNlTWV0aG9kcyksIGlzb2xhdGUpOworICAg
ICAgICBWOFRlc3RJbnRlcmZhY2VNZXRob2RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdEludGVy
ZmFjZU1ldGhvZHMpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKICAgICBVTlVTRURfUEFS
QU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVz
ZWQuCiAjaWYgRU5BQkxFKFRFU1RfSU5URVJGQUNFKQogICAgIGRlc2MtPlNldENhbGxIYW5kbGVy
KFY4VGVzdEludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayk7CkBAIC00MzgsNyArNDM4LDcg
QEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVW
OFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N1
cHBsZW1lbnRhbE1ldGhvZDInCiAgICAgY29uc3QgaW50IHN1cHBsZW1lbnRhbE1ldGhvZDJBcmdj
ID0gMjsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdXBwbGVtZW50YWxN
ZXRob2QyQXJndltzdXBwbGVtZW50YWxNZXRob2QyQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1Rl
bXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBzdXBwbGVtZW50YWxNZXRob2QyQXJndltzdXBwbGVtZW50YWxN
ZXRob2QyQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8s
IGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBzdXBw
bGVtZW50YWxNZXRob2QyU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHN1cHBs
ZW1lbnRhbE1ldGhvZDJBcmdjLCBzdXBwbGVtZW50YWxNZXRob2QyQXJndik7CiAjaWYgRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgcHJvdG8tPlNldCh2ODo6
U3RyaW5nOjpOZXdTeW1ib2woInN1cHBsZW1lbnRhbE1ldGhvZDIiKSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTWV0aG9kMk1l
dGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdXBwbGVtZW50YWxNZXRob2QyU2lnbmF0dXJl
KSk7CkBAIC00NTMsMjMgKzQ1MywyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKHY4OgogICAgIHJl
dHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhU
ZXN0SW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldv
cmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
VjhUZXN0SW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBl
cldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRh
dGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURh
dGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3Js
ZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgm
aW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRU
eXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFu
ZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUo
ZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7
Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAg
ICAgICAgQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUo
JmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKKyAg
ICBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsK
ICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0SW50ZXJmYWNlOjpIYXNJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFw
cGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0SW50ZXJmYWNlOjpIYXNJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFw
cGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0
ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBl
KTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFu
Y2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogYm9vbCBWOFRlc3RJbnRl
cmZhY2U6Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCmluZGV4IGFlYTE5Yzk4NDVi
MWFhYmEwY2UwMmFhN2U2Yjc5NTg3OTU3YjFhNzcuLjhkNTEwOGE3ODJjMDE5ZWVkMjNmYWI2YzVh
MTAyYTVlNDhhODY2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKQEAgLTc5LDYgKzc5LDE3IEBAIGlu
bGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0SW50ZXJmYWNlKiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyCiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9y
TWFpbldvcmxkKFRlc3RJbnRlcmZhY2UqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRU
eXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAg
ICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChp
bXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBl
cjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQor
CiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdEludGVyZmFjZSogaW1wbCwgY29u
c3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpA
QCAtOTEsNiArMTAyLDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3Qo
VGVzdEludGVyZmFjZSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyCiB9CiAKIHRlbXBsYXRl
PGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0SW50ZXJmYWNlKiBpbXBsLCBj
b25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7
CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29y
bGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29u
dGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICgh
d3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3
cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5s
aW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRy
PCBUZXN0SW50ZXJmYWNlID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIs
IFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0b1Y4RmFzdEZvck1haW5Xb3Js
ZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9CisKKwordGVtcGxhdGU8Y2xh
c3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RJbnRlcmZhY2UgPiBpbXBsLCBjb25z
dCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAg
ICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCA4NWZjYzVj
YzExNTRkN2Y1ZWJiNzVkMGVmNmNhZGUzMWQyYWFlNWJkLi5iMWZmMjNjYzQ4ZTBiNGEzOTkyMjhj
YjAxMGY0ZDZhYzllYTg5ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwCkBAIC05MiwxNCArOTIsMTQgQEAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmln
dXJhdGlvbjo6QmF0Y2hlZE1ldGhvZCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyTWV0aG8K
ICAgICB7Im1ldGhvZCIsIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVjhJbnRlcm5hbDo6bWV0
aG9kTWV0aG9kQ2FsbGJhY2t9LAogfTsKIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGVtcGxh
dGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRl
KiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNj
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBl
KQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6
OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhE
T01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICAw
LCAwLAotICAgICAgICBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyTWV0aG9kcywgV1RGX0FS
UkFZX0xFTkdUSChWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyTWV0aG9kcyksIGlzb2xhdGUp
OworICAgICAgICBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyTWV0aG9kcywgV1RGX0FSUkFZ
X0xFTkdUSChWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyTWV0aG9kcyksIGlzb2xhdGUsIGN1
cnJlbnRXb3JsZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8g
SW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICB2ODo6TG9jYWw8djg6Ok9i
amVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IGRlc2MtPkluc3RhbmNlVGVtcGxhdGUoKTsKICAgICB2
ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90byA9IGRlc2MtPlByb3RvdHlwZVRlbXBs
YXRlKCk7CkBAIC0xMTIsMjMgKzExMiwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZQogICAg
IHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQordjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkdldFRlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUp
CiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJl
c3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYg
KHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVy
SXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0
ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRh
dGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4g
cmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25m
aWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxh
dGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVt
cGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJl
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZp
bmZvLCBjdXJyZW50V29ybGRUeXBlKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAg
ZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAg
ICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6
Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7
Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNl
KCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBl
KTsKIH0KIAogYm9vbCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZUlu
QW55V29ybGQodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCmluZGV4IDEwNzE3
ZmZiOTg3MGZlZGYxZWQyODA5OWI3ZTVmODhiYzg1ZjE5YmUuLmRhNGU4ZjgxYjBmYWNjOGRkYTg3
MjE5MDY0NTg5YjBmMmVlMGY5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuaApAQCAtNzUsNiArNzUsMTcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4KFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBpbXBsLCB2ODo6SGFuZGxlPHYKICAg
ICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCitpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29ybGQoVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGlzb2xhdGUp
ID09IE1haW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJu
IHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3Jh
cHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBp
ZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1
cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxj
bGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIGNv
bnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsK
QEAgLTg3LDYgKzk4LDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3Qo
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIGNvbnN0IEhvCiB9CiAKIHRlbXBsYXRl
PGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lciogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSog
d3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVyLkdldElzb2xhdGUo
KSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1
cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBs
KTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsK
KyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJ
c29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdy
YXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29y
bGQoUGFzc1JlZlB0cjwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgPiBpbXBsLCBjb25zdCBI
b2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAg
cmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBh
YmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBw
YWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwg
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0
KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENv
bnN0cnVjdG9yLmNwcAppbmRleCA4ZDA1NGRjY2YyMGI2ZGM5MjUyMzViOTFjNmY2ZTVlNTUzNWNi
NDU1Li40MTk1ZjMwMDY4YzEzNzBiNWY5ZGQyNzljYmE1MzY4ODEwNjk2Zjk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JDYWxs
YmFjayhjb25zdCB2ODoKICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElz
b2xhdGUoKSk7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRl
c3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkdldFRl
bXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3Js
ZFR5cGUpCiB7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBjYWNoZWRUZW1wbGF0ZTsKICAgICBpZiAoIWNhY2hlZFRlbXBsYXRlLklzRW1wdHkoKSkKQEAg
LTEyMSwyMCArMTIxLDIwIEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBW
OFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkdldFRlbXBsCiAgICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSByZXN1bHQtPkluc3RhbmNlVGVtcGxhdGUo
KTsKICAgICBpbnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KFY4VGVzdE5hbWVkQ29uc3Ry
dWN0b3I6OmludGVybmFsRmllbGRDb3VudCk7CiAgICAgcmVzdWx0LT5TZXRDbGFzc05hbWUodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJUZXN0TmFtZWRDb25zdHJ1Y3RvciIpKTsKLSAgICByZXN1bHQt
PkluaGVyaXQoVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29y
bGRUeXBlKSk7CisgICAgcmVzdWx0LT5Jbmhlcml0KFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6Okdl
dFRlbXBsYXRlKGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpKTsKIAogICAgIGNhY2hlZFRlbXBs
YXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwg
cmVzdWx0KTsKICAgICByZXR1cm4gY2FjaGVkVGVtcGxhdGU7CiB9CiAKLXN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1
Y3RvclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5hbWVk
Q29uc3RydWN0b3JUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
ZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxk
VHlwZSkKIHsKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2Fs
PHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7CiAgICAgZGVmYXVsdFNpZ25hdHVyZSA9
IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3ROYW1lZENv
bnN0cnVjdG9yIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVz
dE5hbWVkQ29uc3RydWN0b3I6OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgMCwgMCwKLSAg
ICAgICAgMCwgMCwgaXNvbGF0ZSk7CisgICAgICAgIDAsIDAsIGlzb2xhdGUsIGN1cnJlbnRXb3Js
ZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBj
YXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICAKIApAQCAtMTQzLDIzICsxNDMsMjMgQEAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRl
c3ROYW1lZENvbnN0cnVjdG9yVGVtcGwKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OkdldFRl
bXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkK
K3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVj
dG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBj
dXJyZW50V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRl
TWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQo
JmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5l
bmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0
ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5lbmQoKSkK
ICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFu
ZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBs
ID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKGRhdGEt
PnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAg
IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAg
IENvbmZpZ3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0
ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwor
ICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwp
OwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpI
YXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0TmFtZWRDb25zdHJ1
Y3Rvcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIHJl
dHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywg
dmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAK
IGJvb2wgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE5hbWVkQ29uc3RydWN0b3IuaAppbmRleCAzMGE3NTZiNjQ5YjY5YmE1ZDk0M2QxZTc4ZGU4Yzgz
M2NlNTUyMzU0Li44NWVjNWZkYmQwZTViMDUxY2QyZjRkY2M3MzU0NGJiNmE3MDI1ZWY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgKQEAgLTgyLDYgKzgyLDE3IEBAIGlubGluZSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1wbCwgdjg6
OkhhbmRsZTx2ODo6T2JqCiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9yTWFpbldv
cmxkKFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJUKHdvcmxk
VHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisg
ICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQo
aW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30K
KwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3ROYW1lZENvbnN0cnVjdG9yKiBp
bXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFi
bGUpCiB7CkBAIC05NCw2ICsxMDUsMjUgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4RmFzdChUZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1wbCwgY29uc3QgSG9sZGVyQ28KIH0KIAog
dGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFRlc3ROYW1lZENvbnN0
cnVjdG9yKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxl
KiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShjb250YWluZXIuR2V0SXNvbGF0
ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJl
dHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGlt
cGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVy
OworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5Ib2xkZXIoKSwgY29udGFpbmVyLkdl
dElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3Mg
V3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5X
b3JsZChQYXNzUmVmUHRyPCBUZXN0TmFtZWRDb25zdHJ1Y3RvciA+IGltcGwsIGNvbnN0IEhvbGRl
ckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICByZXR1
cm4gdG9WOEZhc3RGb3JNYWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUp
OworfQorCisKK3RlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxl
PgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0
TmFtZWRDb25zdHJ1Y3RvciA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVy
LCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKICAgICByZXR1cm4gdG9WOEZhc3QoaW1wbC5nZXQo
KSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCmluZGV4IDI1OTg4NTMwZjBiODdi
MjJmOGYwMmNlNjk4ZDAxOTg0MGYxOWUwMDMuLjZkYTFkZTQyNmNmMTc4NDM0ZmQ5ZDZiNjczOWU1
ZmJmMDU1YjliZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKQEAgLTkzLDE0ICs5MywxNCBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhUZXN0Tm9kZTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogICAgIHJldHVybiBUZXN0Tm9kZVY4SW50ZXJuYWw6OmNvbnN0cnVjdG9y
KGFyZ3MpOwogfQogCi1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29y
bGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25m
aWd1cmVWOFRlc3ROb2RlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRX
b3JsZFR5cGUpCiB7CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpM
b2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwotICAgIGRlZmF1bHRTaWduYXR1
cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0Tm9k
ZSIsIFY4Tm9kZTo6R2V0VGVtcGxhdGUoaXNvbGF0ZSwgd29ybGRUeXBlKSwgVjhUZXN0Tm9kZTo6
aW50ZXJuYWxGaWVsZENvdW50LAorICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3Vy
YXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0Tm9kZSIsIFY4Tm9kZTo6R2V0VGVt
cGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSksIFY4VGVzdE5vZGU6OmludGVybmFsRmll
bGRDb3VudCwKICAgICAgICAgMCwgMCwKLSAgICAgICAgMCwgMCwgaXNvbGF0ZSk7CisgICAgICAg
IDAsIDAsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZh
dWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAg
ICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOFRlc3ROb2RlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKTsK
ICAgICAKQEAgLTExMCwyMyArMTEwLDIzIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0Tm9kZVRlbXBsYXRlKHY4OjpQZXJzCiAgICAg
cmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBW
OFRlc3ROb2RlOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhU
ZXN0Tm9kZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5
cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1w
bGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5m
aW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlw
ZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJl
c3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOwor
ICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5k
KCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3Bl
IGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0
ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1wbGF0ZShkYXRhLT5yYXdUZW1w
bGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50
ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1
cmVWOFRlc3ROb2RlVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3Js
ZFR5cGUpLCBpc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1h
cChjdXJyZW50V29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7
CiB9CiAKLWJvb2wgVjhUZXN0Tm9kZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUp
Citib29sIFY4VGVzdE5vZGU6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlw
ZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5z
dGFuY2UoJmluZm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3Js
ZFR5cGUpOwogfQogCiBib29sIFY4VGVzdE5vZGU6Okhhc0luc3RhbmNlSW5BbnlXb3JsZCh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgKaW5k
ZXggOTQ0YjJhODliOGRjOGQ5ZjVlMmJiOWU0MGVjMWU1ZjhjMzhlMjhkYi4uYWNmZTE1NTRjZWUy
YjZmODA4MzhiYjBhZDkzZDBkY2VmOGNlNTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCkBAIC03Nyw2ICs3NywxNyBA
QCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdE5vZGUqIGltcGwsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpbwogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9u
Q29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OEZvck1haW5Xb3JsZChUZXN0Tm9kZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVCh3b3JsZFR5
cGUoaXNvbGF0ZSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAg
ICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRm9yTWFpbldvcmxkKGlt
cGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFwcGVy
OworICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisK
IHRlbXBsYXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChUZXN0Tm9kZSogaW1wbCwgY29uc3QgSG9s
ZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtODks
NiArMTAwLDI1IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdE5v
ZGUqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29uCiB9CiAKIHRlbXBsYXRlPGNsYXNz
IEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChUZXN0Tm9kZSogaW1wbCwgY29uc3QgSG9sZGVy
Q29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIEFTU0VS
VCh3b3JsZFR5cGUoY29udGFpbmVyLkdldElzb2xhdGUoKSkgPT0gTWFpbldvcmxkKTsKKyAgICBp
ZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJ
c29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFT
dG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBj
b250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworfQorCit0ZW1wbGF0
ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoUGFzc1JlZlB0cjwgVGVzdE5vZGUg
PiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFw
cGFibGUpCit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNv
bnRhaW5lciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWlu
ZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZh
c3QoUGFzc1JlZlB0cjwgVGVzdE5vZGUgPiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXImIGNv
bnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGlt
cGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggZjgxZDM0NmNl
NTA0OTI1OGMwNDI1YzljNGZhZTBiMmUyMjhmMWMzNi4uMzY5MzYyODk1NzJkMzBlMjNlNTRjZTEx
MzJmMjVlZDQwN2JlZmZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTMwOTYsMTU1ICszMDk2LDE1NSBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRy
aWJ1dGUgVjhUZXN0T2JqQXR0cnNbXSA9IHsKICAgICAvLyBBdHRyaWJ1dGUgJ3JlYWRPbmx5TG9u
Z0F0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InJl
YWRPbmx5TG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlMb25nQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZWFkT25seUxvbmdBdHRy
IiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ss
IDAsIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVhZE9ubHlTdHJp
bmdBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJy
ZWFkT25seVN0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlTdHJpbmdBdHRy
QXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InJlYWRPbmx5U3Ry
aW5nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVN0cmluZ0F0dHJBdHRyR2V0dGVy
Q2FsbGJhY2ssIDAsIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVh
ZE9ubHlUZXN0T2JqQXR0cicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcn
KQotICAgIHsicmVhZE9ubHlUZXN0T2JqQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWFkT25s
eVRlc3RPYmpBdHRyQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7
InJlYWRPbmx5VGVzdE9iakF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlUZXN0T2Jq
QXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8g
QXR0cmlidXRlICdzdGF0aWNSZWFkT25seUxvbmdBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJp
YnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJzdGF0aWNSZWFkT25seUxvbmdBdHRyIiwgVGVzdE9i
alY4SW50ZXJuYWw6OnN0YXRpY1JlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAs
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAorICAgIHsic3RhdGljUmVhZE9ubHlMb25nQXR0ciIsIFRlc3RPYmpW
OEludGVybmFsOjpzdGF0aWNSZWFkT25seUxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCAwLCAw
LCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0YXRpY1N0cmluZ0F0dHIn
IChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InN0YXRpY1N0cmluZ0F0dHIi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywg
VGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAorICAgIHsic3RhdGljU3RyaW5nQXR0ciIsIFRlc3RPYmpWOEludGVybmFs
OjpzdGF0aWNTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6
c3RhdGljU3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CiAgICAgLy8gQXR0cmlidXRlICdUZXN0U3ViT2JqJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0
ZScgRXh0QXR0cjogJycpCi0gICAgeyJUZXN0U3ViT2JqIiwgVGVzdE9ialY4SW50ZXJuYWw6OlRl
c3RPYmpDb25zdHJ1Y3RvckdldHRlciwgMCwgJlY4VGVzdFN1Yk9iajo6aW5mbywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiVGVz
dFN1Yk9iaiIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIsIDAs
IDAsIDAsICZWOFRlc3RTdWJPYmo6OmluZm8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2VudW1BdHRyJyAo
VHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJlbnVtQXR0ciIsIFRlc3RPYmpW
OEludGVybmFsOjplbnVtQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6
OmVudW1BdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImVudW1B
dHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVudW1BdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0
T2JqVjhJbnRlcm5hbDo6ZW51bUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnc2hvcnRBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScg
RXh0QXR0cjogJycpCi0gICAgeyJzaG9ydEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c2hvcnRB
dHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c2hvcnRBdHRyQXR0clNl
dHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InNob3J0QXR0ciIsIFRlc3RPYmpW
OEludGVybmFsOjpzaG9ydEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFs
OjpzaG9ydEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAg
IC8vIEF0dHJpYnV0ZSAndW5zaWduZWRTaG9ydEF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRB
dHRyOiAnJykKLSAgICB7InVuc2lnbmVkU2hvcnRBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnVu
c2lnbmVkU2hvcnRBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6dW5z
aWduZWRTaG9ydEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsi
dW5zaWduZWRTaG9ydEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRTaG9ydEF0dHJB
dHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZFNob3J0QXR0ckF0
dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRl
ICdsb25nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsibG9uZ0F0
dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RP
YmpWOEludGVybmFsOjpsb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CisgICAgeyJsb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAw
LCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2xvbmdMb25nQXR0cicgKFR5
cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsibG9uZ0xvbmdBdHRyIiwgVGVzdE9i
alY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisg
ICAgeyJsb25nTG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0xvbmdBdHRyQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0xvbmdBdHRyQXR0clNldHRlckNh
bGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3Vuc2lnbmVk
TG9uZ0xvbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJ1bnNp
Z25lZExvbmdMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0
ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdB
dHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InVuc2lnbmVkTG9u
Z0xvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRy
U2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAn
c3RyaW5nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsic3RyaW5n
QXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgeyJzdHJpbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJB
dHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyQXR0clNldHRl
ckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3Rlc3RP
YmpBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1Y4TWVhc3VyZUFzJykKLSAgICB7
InRlc3RPYmpBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnRlc3RPYmpBdHRyQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9iakF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ss
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAorICAgIHsidGVzdE9iakF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
dGVzdE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp0ZXN0T2Jq
QXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0
cmlidXRlICdYTUxPYmpBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAg
eyJYTUxPYmpBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OlhNTE9iakF0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0clNldHRlckNhbGxiYWNrLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyAgICB7IlhNTE9iakF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6WE1M
T2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OlhNTE9iakF0dHJB
dHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0
ZSAnY3JlYXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJjcmVhdGUi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6Y3JlYXRlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7
ImNyZWF0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpjcmVhdGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRl
c3RPYmpWOEludGVybmFsOjpjcmVhdGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkU3RyaW5nQXR0cicgKFR5cGU6ICdh
dHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykKLSAgICB7InJlZmxlY3RlZFN0cmluZ0F0dHIi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAorICAgIHsicmVmbGVjdGVkU3RyaW5nQXR0ciIsIFRlc3RPYmpW
OEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIn
IChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnUmVmbGVjdCcpCi0gICAgeyJyZWZsZWN0ZWRJ
bnRlZ3JhbEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0
ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkSW50ZWdyYWxBdHRy
QXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InJlZmxlY3RlZEludGVn
cmFsQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0
dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRJbnRlZ3JhbEF0dHJBdHRy
U2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAn
cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRy
OiAnUmVmbGVjdCcpCi0gICAgeyJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIsIFRlc3RP
YmpWOEludGVybmFsOjpyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJHZXR0ZXJDYWxs
YmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0
clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InJlZmxlY3RlZFVuc2lnbmVk
SW50ZWdyYWxBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVuc2lnbmVkSW50ZWdy
YWxBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVW5z
aWduZWRJbnRlZ3JhbEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAogICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkQm9vbGVhbkF0dHInIChUeXBlOiAnYXR0cmli
dXRlJyBFeHRBdHRyOiAnUmVmbGVjdCcpCi0gICAgeyJyZWZsZWN0ZWRCb29sZWFuQXR0ciIsIFRl
c3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywg
VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0clNldHRlckNhbGxiYWNr
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKKyAgICB7InJlZmxlY3RlZEJvb2xlYW5BdHRyIiwgVGVzdE9ialY4
SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6cmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAs
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkVVJMQXR0cicgKFR5
cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdVUkwgUmVmbGVjdCcpCi0gICAgeyJyZWZsZWN0ZWRV
UkxBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRVUkxBdHRyQXR0clNldHRlckNhbGxi
YWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InJlZmxlY3RlZFVSTEF0dHIiLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkU3RyaW5nQXR0cicgKFR5cGU6ICdh
dHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykKLSAgICB7InJlZmxlY3RlZFN0cmluZ0F0dHIi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyQ2FsbGJh
Y2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAorICAgIHsicmVmbGVjdGVkU3RyaW5nQXR0ciIsIFRlc3RPYmpW
OEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRDdXN0b21JbnRlZ3Jh
bEF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnUmVmbGVjdCcpCi0gICAgeyJyZWZs
ZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3Vz
dG9tSW50ZWdyYWxBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVm
bGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKKyAgICB7InJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ciIsIFRlc3RPYmpWOEludGVybmFs
OjpyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpW
OEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ss
IDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkQ3VzdG9t
Qm9vbGVhbkF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnUmVmbGVjdCcpCi0gICAg
eyJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0
ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6
OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKKyAgICB7InJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIiwgVGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ss
IDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVmbGVjdGVkQ3VzdG9t
VVJMQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdVUkwgUmVmbGVjdCcpCi0gICAg
eyJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEN1
c3RvbVVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0
ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7
InJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3Vz
dG9tVVJMQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZEN1c3RvbVVSTEF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAog
ICAgIC8vIEF0dHJpYnV0ZSAndHlwZWRBcnJheUF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRB
dHRyOiAnJykKLSAgICB7InR5cGVkQXJyYXlBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnR5cGVk
QXJyYXlBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6dHlwZWRBcnJh
eUF0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsidHlwZWRBcnJh
eUF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dHlwZWRBcnJheUF0dHJBdHRyR2V0dGVyQ2FsbGJh
Y2ssIFRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5QXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywg
MCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdhdHRyV2l0aEdldHRlckV4
Y2VwdGlvbicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiYXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRp
b25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4
Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJhdHRyV2l0
aEdldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAv
LyBBdHRyaWJ1dGUgJ2F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScg
RXh0QXR0cjogJycpCi0gICAgeyJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOElu
dGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyAgICB7ImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgVGVzdE9ialY4
SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0
T2JqVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2ss
IDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnc3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24nIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InN0
cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIHsic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJh
Y2ssIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJT
ZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdz
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6
ICcnKQotICAgIHsic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCBUZXN0T2JqVjhJbnRl
cm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRl
c3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJD
YWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0
dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAv
LyBBdHRyaWJ1dGUgJ2N1c3RvbUF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ3Vz
dG9tJykKLSAgICB7ImN1c3RvbUF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3VzdG9tQXR0ckF0
dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmN1c3RvbUF0dHJBdHRyU2V0dGVy
Q2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiY3VzdG9tQXR0ciIsIFRlc3RPYmpWOElu
dGVybmFsOjpjdXN0b21BdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6
Y3VzdG9tQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAg
Ly8gQXR0cmlidXRlICd3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRl
JyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQotICAgIHsid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIiwg
VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxs
YmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0
ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRl
ckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0
clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUg
J3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScg
RXh0QXR0cjogJ0NhbGxXaXRoJykKLSAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAorICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyR2V0dGVyQ2Fs
bGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0
cmlidXRlICd3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMnIChUeXBlOiAnYXR0cmlidXRl
JyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQotICAgIHsid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0
dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlc0F0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJ3aXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlckNhbGxiYWNrLCAwLCAw
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlUmFpc2VzJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxX
aXRoJykKLSAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIiwg
VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFp
c2VzQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAorICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlz
ZXNBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxX
aXRoJykKLSAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6
OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0
dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlckNhbGxi
YWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CiAgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRo
JykKLSAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4
SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXNBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsid2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIsIFRlc3RP
YmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0
ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICd3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZScg
KFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcpCi0gICAgeyJ3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIsIFRlc3RP
YmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0
aFNwYWNlc0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6Ondp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRl
QXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7IndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIiwgVGVzdE9ialY4
SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3Bh
Y2VzQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRy
U2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAn
d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZScgKFR5cGU6ICdhdHRyaWJ1
dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcpCi0gICAgeyJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2Fs
bFN0YWNrQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNB
bmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFs
Ojp3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0clNldHRlckNhbGxi
YWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7IndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3Rh
Y2tBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENh
bGxTdGFja0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6Ondp
dGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ss
IDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnZW5mb3JjZWRSYW5nZUxv
bmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0VuZm9yY2VSYW5nZScpCi0gICAg
eyJlbmZvcmNlZFJhbmdlTG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5n
ZUxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRS
YW5nZUxvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImVu
Zm9yY2VkUmFuZ2VMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlTG9u
Z0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdl
TG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8v
IEF0dHJpYnV0ZSAnZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0F0dHInIChUeXBlOiAnYXR0cmli
dXRlJyBFeHRBdHRyOiAnRW5mb3JjZVJhbmdlJykKLSAgICB7ImVuZm9yY2VkUmFuZ2VVbnNpZ25l
ZExvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2VkUmFuZ2VVbnNpZ25lZExvbmdB
dHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZVVu
c2lnbmVkTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsi
ZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3Jj
ZWRSYW5nZVVuc2lnbmVkTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVy
bmFsOjplbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nQXR0ckF0dHJTZXR0ZXJDYWxsYmFjaywgMCwg
MCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdlbmZvcmNlZFJhbmdlTG9uZ0xv
bmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0VuZm9yY2VSYW5nZScpCi0gICAg
eyJlbmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuZm9yY2Vk
UmFuZ2VMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpl
bmZvcmNlZFJhbmdlTG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKKyAgICB7ImVuZm9yY2VkUmFuZ2VMb25nTG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
ZW5mb3JjZWRSYW5nZUxvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OmVuZm9yY2VkUmFuZ2VMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAs
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnZW5mb3JjZWRSYW5nZVVuc2lnbmVk
TG9uZ0xvbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0VuZm9yY2VSYW5nZScp
Ci0gICAgeyJlbmZvcmNlZFJhbmdlVW5zaWduZWRMb25nTG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRl
cm5hbDo6ZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5mb3JjZWRSYW5nZVVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0
clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImVuZm9yY2VkUmFuZ2VVbnNp
Z25lZExvbmdMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjplbmZvcmNlZFJhbmdlVW5zaWdu
ZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmZv
cmNlZFJhbmdlVW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAogI2lmIEVOQUJMRShDb25kaXRpb24xKQogICAgIC8vIEF0dHJpYnV0ZSAn
Y29uZGl0aW9uYWxBdHRyMScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDb25kaXRpb25h
bCcpCi0gICAgeyJjb25kaXRpb25hbEF0dHIxIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlv
bmFsQXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25h
bEF0dHIxQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImNvbmRpdGlv
bmFsQXR0cjEiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMUF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjFBdHRyU2V0dGVyQ2Fs
bGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24x
KQogI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKICAgICAvLyBB
dHRyaWJ1dGUgJ2NvbmRpdGlvbmFsQXR0cjInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAn
Q29uZGl0aW9uYWwnKQotICAgIHsiY29uZGl0aW9uYWxBdHRyMiIsIFRlc3RPYmpWOEludGVybmFs
Ojpjb25kaXRpb25hbEF0dHIyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6
Y29uZGl0aW9uYWxBdHRyMkF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAg
eyJjb25kaXRpb25hbEF0dHIyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJB
dHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIyQXR0
clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUo
Q29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEp
IHx8IEVOQUJMRShDb25kaXRpb24yKQogICAgIC8vIEF0dHJpYnV0ZSAnY29uZGl0aW9uYWxBdHRy
MycgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDb25kaXRpb25hbCcpCi0gICAgeyJjb25k
aXRpb25hbEF0dHIzIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjNBdHRyR2V0
dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIzQXR0clNldHRl
ckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImNvbmRpdGlvbmFsQXR0cjMiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjNBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMikKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKICAgICAvLyBBdHRyaWJ1dGUgJ2NvbmRp
dGlvbmFsQXR0cjQnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwnKQot
ICAgIHsiY29uZGl0aW9uYWxBdHRyNCIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqQ29uc3Ry
dWN0b3JHZXR0ZXIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqUmVwbGFjZWFibGVBdHRyU2V0
dGVyQ2FsbGJhY2ssICZWOFRlc3RPYmplY3RBOjppbmZvLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJjb25kaXRpb25hbEF0dHI0
IiwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpDb25zdHJ1Y3RvckdldHRlciwgVGVzdE9ialY4
SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgJlY4
VGVzdE9iamVjdEE6OmluZm8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiAgICAgLy8gQXR0cmlidXRlICdj
b25kaXRpb25hbEF0dHI1JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFs
JykKLSAgICB7ImNvbmRpdGlvbmFsQXR0cjUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9iakNv
bnN0cnVjdG9yR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9ialJlcGxhY2VhYmxlQXR0
clNldHRlckNhbGxiYWNrLCAmVjhUZXN0T2JqZWN0Qjo6aW5mbywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiY29uZGl0aW9uYWxB
dHRyNSIsIFRlc3RPYmpWOEludGVybmFsOjpUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIsIFRlc3RP
YmpWOEludGVybmFsOjpUZXN0T2JqUmVwbGFjZWFibGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAs
ICZWOFRlc3RPYmplY3RCOjppbmZvLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpICYmIEVO
QUJMRShDb25kaXRpb24yKQogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMikKICAgICAvLyBBdHRyaWJ1dGUgJ2NvbmRpdGlvbmFsQXR0cjYnIChUeXBlOiAnYXR0cmli
dXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwnKQotICAgIHsiY29uZGl0aW9uYWxBdHRyNiIsIFRl
c3RPYmpWOEludGVybmFsOjpUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIsIFRlc3RPYmpWOEludGVy
bmFsOjpUZXN0T2JqUmVwbGFjZWFibGVBdHRyU2V0dGVyQ2FsbGJhY2ssICZWOFRlc3RPYmplY3RD
OjppbmZvLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgeyJjb25kaXRpb25hbEF0dHI2IiwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RP
YmpDb25zdHJ1Y3RvckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJs
ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgJlY4VGVzdE9iamVjdEM6OmluZm8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAv
LyBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAgICAgLy8gQXR0cmli
dXRlICdjYWNoZWRBdHRyaWJ1dGUxJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0
cjogJ0NhY2hlZEF0dHJpYnV0ZScpCi0gICAgeyJjYWNoZWRBdHRyaWJ1dGUxIiwgVGVzdE9ialY4
SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTFBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAorICAgIHsiY2FjaGVkQXR0cmlidXRlMSIsIFRlc3RPYmpWOEludGVybmFsOjpjYWNo
ZWRBdHRyaWJ1dGUxQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
ICAgICAvLyBBdHRyaWJ1dGUgJ2NhY2hlZEF0dHJpYnV0ZTInIChUeXBlOiAncmVhZG9ubHkgYXR0
cmlidXRlJyBFeHRBdHRyOiAnQ2FjaGVkQXR0cmlidXRlJykKLSAgICB7ImNhY2hlZEF0dHJpYnV0
ZTIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y2FjaGVkQXR0cmlidXRlMkF0dHJHZXR0ZXJDYWxsYmFj
aywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJjYWNoZWRBdHRyaWJ1dGUyIiwgVGVzdE9ialY4
SW50ZXJuYWw6OmNhY2hlZEF0dHJpYnV0ZTJBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnYW55QXR0cmlidXRlJyAoVHlwZTogJ2F0
dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJhbnlBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRl
cm5hbDo6YW55QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6
YW55QXR0cmlidXRlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImFu
eUF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjphbnlBdHRyaWJ1dGVBdHRyR2V0dGVyQ2Fs
bGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjphbnlBdHRyaWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ss
IDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnZmxvYXRBcnJheScgKFR5
cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiZmxvYXRBcnJheSIsIFRlc3RPYmpW
OEludGVybmFsOjpmbG9hdEFycmF5QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6ZmxvYXRBcnJheUF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJm
bG9hdEFycmF5IiwgVGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJyYXlBdHRyR2V0dGVyQ2FsbGJh
Y2ssIFRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFycmF5QXR0clNldHRlckNhbGxiYWNrLCAwLCAw
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2RvdWJsZUFycmF5JyAoVHlwZTog
J2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJkb3VibGVBcnJheSIsIFRlc3RPYmpWOElu
dGVybmFsOjpkb3VibGVBcnJheUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6
OmRvdWJsZUFycmF5QXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImRv
dWJsZUFycmF5IiwgVGVzdE9ialY4SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0ckdldHRlckNhbGxi
YWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZG91YmxlQXJyYXlBdHRyU2V0dGVyQ2FsbGJhY2ssIDAs
IDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnY29udGVudERvY3VtZW50JyAo
VHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ0NoZWNrU2VjdXJpdHlGb3JOb2Rl
JykKLSAgICB7ImNvbnRlbnREb2N1bWVudCIsIFRlc3RPYmpWOEludGVybmFsOjpjb250ZW50RG9j
dW1lbnRBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiY29udGVu
dERvY3VtZW50IiwgVGVzdE9ialY4SW50ZXJuYWw6OmNvbnRlbnREb2N1bWVudEF0dHJHZXR0ZXJD
YWxsYmFjaywgMCwgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdtdXRh
YmxlUG9pbnQnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7Im11dGFibGVQ
b2ludCIsIFRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRBdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIHsibXV0YWJsZVBvaW50IiwgVGVzdE9ialY4SW50ZXJuYWw6Om11dGFi
bGVQb2ludEF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2lu
dEF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmli
dXRlICdpbW11dGFibGVQb2ludCcgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdJbW11dGFi
bGUnKQotICAgIHsiaW1tdXRhYmxlUG9pbnQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxl
UG9pbnRBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjppbW11dGFibGVQb2lu
dEF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJpbW11dGFibGVQb2lu
dCIsIFRlc3RPYmpWOEludGVybmFsOjppbW11dGFibGVQb2ludEF0dHJHZXR0ZXJDYWxsYmFjaywg
VGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50QXR0clNldHRlckNhbGxiYWNrLCAwLCAw
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0cmF3YmVycnknIChUeXBlOiAn
YXR0cmlidXRlJyBFeHRBdHRyOiAnSW1wbGVtZW50ZWRBcycpCi0gICAgeyJzdHJhd2JlcnJ5Iiwg
VGVzdE9ialY4SW50ZXJuYWw6OnN0cmF3YmVycnlBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpW
OEludGVybmFsOjpzdHJhd2JlcnJ5QXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
KyAgICB7InN0cmF3YmVycnkiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJyeUF0dHJHZXR0
ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmF3YmVycnlBdHRyU2V0dGVyQ2FsbGJh
Y2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnc3RyaWN0RmxvYXQn
IChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnU3RyaWN0VHlwZUNoZWNraW5nJykKLSAgICB7
InN0cmljdEZsb2F0IiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZsb2F0QXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRyU2V0dGVyQ2FsbGJhY2ss
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAorICAgIHsic3RyaWN0RmxvYXQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
c3RyaWN0RmxvYXRBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RG
bG9hdEF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0
cmlidXRlICdkZXNjcmlwdGlvbicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6
ICcnKQotICAgIHsiZGVzY3JpcHRpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZGVzY3JpcHRpb25B
dHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFj
Y2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmli
dXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiZGVzY3JpcHRpb24i
LCBUZXN0T2JqVjhJbnRlcm5hbDo6ZGVzY3JpcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAs
IDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnaWQnIChUeXBlOiAnYXR0cmli
dXRlJyBFeHRBdHRyOiAnJykKLSAgICB7ImlkIiwgVGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6aWRBdHRyU2V0dGVyQ2FsbGJhY2ssIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAorICAgIHsiaWQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6aWRBdHRyR2V0dGVy
Q2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjppZEF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdoYXNoJyAoVHlwZTogJ3JlYWRvbmx5
IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJoYXNoIiwgVGVzdE9ialY4SW50ZXJuYWw6
Omhhc2hBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiaGFzaCIs
IFRlc3RPYmpWOEludGVybmFsOjpoYXNoQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwLCAwLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlcGxhY2VhYmxlQXR0cmlidXRlJyAoVHlw
ZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ1JlcGxhY2VhYmxlJykKLSAgICB7InJl
cGxhY2VhYmxlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlcGxhY2VhYmxlQXR0cmli
dXRlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9ialJlcGxhY2Vh
YmxlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InJlcGxhY2VhYmxl
QXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlcGxhY2VhYmxlQXR0cmlidXRlQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9ialJlcGxhY2VhYmxlQXR0clNl
dHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ251
bGxhYmxlRG91YmxlQXR0cmlidXRlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0
cjogJycpCi0gICAgeyJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFs
OjpudWxsYWJsZURvdWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgeyJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFs
OjpudWxsYWJsZURvdWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCwgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdudWxsYWJsZUxvbmdBdHRyaWJ1dGUnIChU
eXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7Im51bGxhYmxlTG9u
Z0F0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpudWxsYWJsZUxvbmdBdHRyaWJ1dGVBdHRy
R2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsibnVsbGFibGVMb25nQXR0
cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ0F0dHJpYnV0ZUF0dHJHZXR0
ZXJDYWxsYmFjaywgMCwgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdu
dWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRB
dHRyOiAnJykKLSAgICB7Im51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVy
bmFsOjpudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIHsibnVsbGFibGVCb29sZWFuQXR0cmlidXRlIiwgVGVzdE9ialY4SW50
ZXJuYWw6Om51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCwg
MCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdudWxsYWJsZVN0cmluZ0F0dHJp
YnV0ZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsibnVs
bGFibGVTdHJpbmdBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdB
dHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsibnVs
bGFibGVTdHJpbmdBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVTdHJpbmdB
dHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAg
IC8vIEF0dHJpYnV0ZSAnbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUnIChUeXBlOiAnYXR0
cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7Im51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRl
IiwgVGVzdE9ialY4SW50ZXJuYWw6Om51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0dGFibGVBdHRy
aWJ1dGVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsibnVsbGFibGVM
b25nU2V0dGFibGVBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bnVsbGFibGVMb25nU2V0
dGFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpudWxs
YWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdudWxsYWJsZVN0cmluZ1ZhbHVlJyAoVHlwZTog
J2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJudWxsYWJsZVN0cmluZ1ZhbHVlIiwgVGVz
dE9ialY4SW50ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRl
c3RPYmpWOEludGVybmFsOjpudWxsYWJsZVN0cmluZ1ZhbHVlQXR0clNldHRlckNhbGxiYWNrLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyAgICB7Im51bGxhYmxlU3RyaW5nVmFsdWUiLCBUZXN0T2JqVjhJbnRl
cm5hbDo6bnVsbGFibGVTdHJpbmdWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6Om51bGxhYmxlU3RyaW5nVmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAogfTsKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hl
ZE1ldGhvZCBWOFRlc3RPYmpNZXRob2RzW10gPSB7CkBAIC0zMzQ3LDE0ICszMzQ3LDE0IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPYmo6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmNvbnN0
cnVjdG9yKGFyZ3MpOwogfQogCi1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJy
ZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2
ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBkZWZhdWx0U2ln
bmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVz
dE9iamVjdCIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RP
Ymo6OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgVjhUZXN0T2JqQXR0cnMsIFdURl9BUlJB
WV9MRU5HVEgoVjhUZXN0T2JqQXR0cnMpLAotICAgICAgICBWOFRlc3RPYmpNZXRob2RzLCBXVEZf
QVJSQVlfTEVOR1RIKFY4VGVzdE9iak1ldGhvZHMpLCBpc29sYXRlKTsKKyAgICAgICAgVjhUZXN0
T2JqTWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RPYmpNZXRob2RzKSwgaXNvbGF0ZSwg
Y3VycmVudFdvcmxkVHlwZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAv
LyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIGRlc2MtPlNldENhbGxI
YW5kbGVyKFY4VGVzdE9iajo6Y29uc3RydWN0b3JDYWxsYmFjayk7CiAgICAgdjg6OkxvY2FsPHY4
OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCk7CkBA
IC0zMzY1LDQ5ICszMzY1LDQ5IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNpCiAgICAgaWYgKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUVuYWJsZWQoKSkgewog
ICAgICAgICBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRl
IGF0dHJEYXRhID1cCiAgICAgICAgIC8vIEF0dHJpYnV0ZSAnZW5hYmxlZEF0UnVudGltZUF0dHIx
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1Y4RW5hYmxlZEF0UnVudGltZScpCi0gICAg
ICAgIHsiZW5hYmxlZEF0UnVudGltZUF0dHIxIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRB
dFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJs
ZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL307Ci0gICAg
ICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90
bywgYXR0ckRhdGEsIGlzb2xhdGUpOworICAgICAgICB7ImVuYWJsZWRBdFJ1bnRpbWVBdHRyMSIs
IFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyR2V0dGVyQ2FsbGJh
Y2ssIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyU2V0dGVyQ2Fs
bGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99OworICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246
OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhLCBpc29sYXRlLCBj
dXJyZW50V29ybGRUeXBlKTsKICAgICB9CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmZlYXR1cmVOYW1lRW5hYmxlZCgpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBWOERPTUNvbmZp
Z3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPVwKICAgICAgICAgLy8gQXR0cmli
dXRlICdlbmFibGVkQXRSdW50aW1lQXR0cjInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAn
VjhFbmFibGVkQXRSdW50aW1lJykKLSAgICAgICAgeyJlbmFibGVkQXRSdW50aW1lQXR0cjIiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0clNldHRlckNhbGxi
YWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfTsKLSAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1
cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSwgaXNvbGF0ZSk7CisgICAgICAg
IHsiZW5hYmxlZEF0UnVudGltZUF0dHIyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1
bnRpbWVBdHRyMkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRB
dFJ1bnRpbWVBdHRyMkF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL307Cisg
ICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBw
cm90bywgYXR0ckRhdGEsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIH0KIAogICAg
IC8vIEN1c3RvbSBTaWduYXR1cmUgJ3ZvaWRNZXRob2RXaXRoQXJncycKICAgICBjb25zdCBpbnQg
dm9pZE1ldGhvZFdpdGhBcmdzQXJnYyA9IDM7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gdm9pZE1ldGhvZFdpdGhBcmdzQXJndlt2b2lkTWV0aG9kV2l0aEFyZ3NBcmdjXSA9
IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVt
cGxhdGUoJlY4VGVzdE9iajo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IHZvaWRNZXRob2RXaXRoQXJnc0FyZ3Zbdm9pZE1ldGhvZFdpdGhB
cmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAg
ICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiB2b2lkTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUg
PSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgdm9pZE1ldGhvZFdpdGhBcmdzQXJnYywgdm9pZE1l
dGhvZFdpdGhBcmdzQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2wo
InZvaWRNZXRob2RXaXRoQXJncyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpW
OEludGVybmFsOjp2b2lkTWV0aG9kV2l0aEFyZ3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQo
KSwgdm9pZE1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0
dXJlICdsb25nTWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50IGxvbmdNZXRob2RXaXRoQXJn
c0FyZ2MgPSAzOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGxvbmdNZXRo
b2RXaXRoQXJnc0FyZ3ZbbG9uZ01ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCks
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6
OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBsb25nTWV0aG9kV2l0aEFyZ3NBcmd2W2xvbmdNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgm
VjhUZXN0T2JqOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6
OlNpZ25hdHVyZT4gbG9uZ01ldGhvZFdpdGhBcmdzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6
TmV3KGRlc2MsIGxvbmdNZXRob2RXaXRoQXJnc0FyZ2MsIGxvbmdNZXRob2RXaXRoQXJnc0FyZ3Yp
OwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJsb25nTWV0aG9kV2l0aEFy
Z3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ01l
dGhvZFdpdGhBcmdzTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGxvbmdNZXRob2RXaXRo
QXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnb2JqTWV0aG9kV2l0
aEFyZ3MnCiAgICAgY29uc3QgaW50IG9iak1ldGhvZFdpdGhBcmdzQXJnYyA9IDM7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gb2JqTWV0aG9kV2l0aEFyZ3NBcmd2W29iak1l
dGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCks
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlwZSkgfTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBvYmpNZXRob2RXaXRoQXJnc0Fy
Z3Zbb2JqTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbywgY3VycmVu
dFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG9iak1ldGhvZFdp
dGhBcmdzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG9iak1ldGhvZFdpdGhB
cmdzQXJnYywgb2JqTWV0aG9kV2l0aEFyZ3NBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJp
bmc6Ok5ld1N5bWJvbCgib2JqTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6b2JqTWV0aG9kV2l0aEFyZ3NNZXRob2RDYWxsYmFjaywg
djhVbmRlZmluZWQoKSwgb2JqTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1
c3RvbSBTaWduYXR1cmUgJ21ldGhvZFdpdGhTZXF1ZW5jZUFyZycKICAgICBjb25zdCBpbnQgbWV0
aG9kV2l0aFNlcXVlbmNlQXJnQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRob2RXaXRoU2VxdWVuY2VBcmdB
cmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4
c2VxdWVuY2U8U2NyaXB0UHJvZmlsZT46OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhv
ZFdpdGhTZXF1ZW5jZUFyZ0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5yYXdUZW1wbGF0ZSgmVjhzZXF1ZW5jZTxTY3JpcHRQcm9maWxlPjo6aW5mbywgY3VycmVudFdv
cmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG1ldGhvZFdpdGhTZXF1
ZW5jZUFyZ1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RXaXRoU2Vx
dWVuY2VBcmdBcmdjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2KTsKICAgICBwcm90by0+U2V0
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0aG9kV2l0aFNlcXVlbmNlQXJnIiksIHY4OjpGdW5j
dGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhTZXF1ZW5jZUFy
Z01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWdu
YXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFdpdGhFbnVtQXJnJwog
ICAgIGNvbnN0IGludCBtZXRob2RXaXRoRW51bUFyZ0FyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFdpdGhFbnVtQXJnQXJndlttZXRob2RXaXRoRW51
bUFyZ0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0
ZSgmVjhUZXN0RW51bVR5cGU6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RXaXRoRW51bUFyZ0FyZ3ZbbWV0aG9kV2l0aEVudW1B
cmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUo
JlY4VGVzdEVudW1UeXBlOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5k
bGU8djg6OlNpZ25hdHVyZT4gbWV0aG9kV2l0aEVudW1BcmdTaWduYXR1cmUgPSB2ODo6U2lnbmF0
dXJlOjpOZXcoZGVzYywgbWV0aG9kV2l0aEVudW1BcmdBcmdjLCBtZXRob2RXaXRoRW51bUFyZ0Fy
Z3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJtZXRob2RXaXRoRW51
bUFyZyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjptZXRo
b2RXaXRoRW51bUFyZ01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RXaXRoRW51
bUFyZ1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbWV0aG9kVGhhdFJl
cXVpcmVzQWxsQXJnc0FuZFRocm93cycKICAgICBjb25zdCBpbnQgbWV0aG9kVGhhdFJlcXVpcmVz
QWxsQXJnc0FuZFRocm93c0FyZ2MgPSAyOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmd2W21ldGhvZFRoYXRS
ZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUo
JlY4VGVzdE9iajo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmd2W21ldGhv
ZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVt
cGxhdGUoJlY4VGVzdE9iajo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpTaWduYXR1cmU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NTaWdu
YXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJn
c0FuZFRocm93c0FyZ2MsIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmd2KTsK
ICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0aG9kVGhhdFJlcXVpcmVz
QWxsQXJnc0FuZFRocm93cyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOElu
dGVybmFsOjptZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzTWV0aG9kQ2FsbGJhY2ss
IHY4VW5kZWZpbmVkKCksIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NTaWduYXR1
cmUpKTsKICAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdGF0aWNNZXRob2RX
aXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRl
c3RPYmpWOEludGVybmFsOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZ01l
dGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSkp
OwpAQCAtMzQyNSw0MyArMzQyNSw0MyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQogCiAgICAg
Ly8gQ3VzdG9tIFNpZ25hdHVyZSAnc3RyaW5nQXJyYXlGdW5jdGlvbicKICAgICBjb25zdCBpbnQg
c3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2W3N0cmluZ0FycmF5RnVuY3Rpb25Bcmdj
XSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9N
U3RyaW5nW106OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0aW9uQXJn
Y10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERP
TVN0cmluZ1tdOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6
OlNpZ25hdHVyZT4gc3RyaW5nQXJyYXlGdW5jdGlvblNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6
Ok5ldyhkZXNjLCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJnYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFy
Z3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdHJpbmdBcnJheUZ1
bmN0aW9uIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OnN0
cmluZ0FycmF5RnVuY3Rpb25NZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgc3RyaW5nQXJy
YXlGdW5jdGlvblNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnZG9tU3Ry
aW5nTGlzdEZ1bmN0aW9uJwogICAgIGNvbnN0IGludCBkb21TdHJpbmdMaXN0RnVuY3Rpb25Bcmdj
ID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkb21TdHJpbmdMaXN0
RnVuY3Rpb25Bcmd2W2RvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdMaXN0OjppbmZvLCB3
b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZG9tU3Ry
aW5nTGlzdEZ1bmN0aW9uQXJndltkb21TdHJpbmdMaXN0RnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nTGlzdDo6
aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+
IGRvbVN0cmluZ0xpc3RGdW5jdGlvblNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNj
LCBkb21TdHJpbmdMaXN0RnVuY3Rpb25BcmdjLCBkb21TdHJpbmdMaXN0RnVuY3Rpb25Bcmd2KTsK
ICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZG9tU3RyaW5nTGlzdEZ1bmN0
aW9uIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmRvbVN0
cmluZ0xpc3RGdW5jdGlvbk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBkb21TdHJpbmdM
aXN0RnVuY3Rpb25TaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZl
cnQxJwogICAgIGNvbnN0IGludCBjb252ZXJ0MUFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQxQXJndltjb252ZXJ0MUFyZ2NdID0geyBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhhOjppbmZvLCB3b3JsZFR5
cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDFBcmd2
W2NvbnZlcnQxQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1Rl
bXBsYXRlKCZWOGE6OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2
ODo6U2lnbmF0dXJlPiBjb252ZXJ0MVNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNj
LCBjb252ZXJ0MUFyZ2MsIGNvbnZlcnQxQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5n
OjpOZXdTeW1ib2woImNvbnZlcnQxIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9i
alY4SW50ZXJuYWw6OmNvbnZlcnQxTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGNvbnZl
cnQxU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdjb252ZXJ0MicKICAg
ICBjb25zdCBpbnQgY29udmVydDJBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBjb252ZXJ0MkFyZ3ZbY29udmVydDJBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Yjo6aW5mbywgd29ybGRUeXBlKSB9Owor
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQyQXJndltjb252ZXJ0
MkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgm
VjhiOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25h
dHVyZT4gY29udmVydDJTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgY29udmVy
dDJBcmdjLCBjb252ZXJ0MkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3lt
Ym9sKCJjb252ZXJ0MiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVy
bmFsOjpjb252ZXJ0Mk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0MlNpZ25h
dHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnY29udmVydDQnCiAgICAgY29uc3Qg
aW50IGNvbnZlcnQ0QXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gY29udmVydDRBcmd2W2NvbnZlcnQ0QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGQ6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NEFyZ3ZbY29udmVydDRBcmdjXSA9
IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4ZDo6aW5m
bywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNv
bnZlcnQ0U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGNvbnZlcnQ0QXJnYywg
Y29udmVydDRBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29u
dmVydDQiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29u
dmVydDRNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVydDRTaWduYXR1cmUpKTsK
IAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZlcnQ1JwogICAgIGNvbnN0IGludCBjb252
ZXJ0NUFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZl
cnQ1QXJndltjb252ZXJ0NUFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5yYXdUZW1wbGF0ZSgmVjhlOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDVBcmd2W2NvbnZlcnQ1QXJnY10gPSB7IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGU6OmluZm8sIGN1cnJl
bnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBjb252ZXJ0NVNp
Z25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBjb252ZXJ0NUFyZ2MsIGNvbnZlcnQ1
QXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNvbnZlcnQ1Iiks
IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQ1TWV0
aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGNvbnZlcnQ1U2lnbmF0dXJlKSk7CiAKICAgICAv
LyBDdXN0b20gU2lnbmF0dXJlICd2YXJpYWRpY05vZGVNZXRob2QnCiAgICAgY29uc3QgaW50IHZh
cmlhZGljTm9kZU1ldGhvZEFyZ2MgPSAyOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHZhcmlhZGljTm9kZU1ldGhvZEFyZ3ZbdmFyaWFkaWNOb2RlTWV0aG9kQXJnY10gPSB7
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOE5vZGU6Omlu
Zm8sIHdvcmxkVHlwZSksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBs
YXRlKCZWOE5vZGU6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB2YXJpYWRpY05vZGVNZXRob2RBcmd2W3ZhcmlhZGljTm9kZU1ldGhvZEFy
Z2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhO
b2RlOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAg
ICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHZhcmlhZGljTm9kZU1ldGhvZFNpZ25hdHVyZSA9
IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCB2YXJpYWRpY05vZGVNZXRob2RBcmdjLCB2YXJpYWRp
Y05vZGVNZXRob2RBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgi
dmFyaWFkaWNOb2RlTWV0aG9kIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4
SW50ZXJuYWw6OnZhcmlhZGljTm9kZU1ldGhvZE1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgp
LCB2YXJpYWRpY05vZGVNZXRob2RTaWduYXR1cmUpKTsKICAgICBWOERPTUNvbmZpZ3VyYXRpb246
OmJhdGNoQ29uZmlndXJlQ29uc3RhbnRzKGRlc2MsIHByb3RvLCBWOFRlc3RPYmpDb25zdHMsIFdU
Rl9BUlJBWV9MRU5HVEgoVjhUZXN0T2JqQ29uc3RzKSwgaXNvbGF0ZSk7CkBAIC0zNDcxLDIzICsz
NDcxLDIzIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29u
ZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNpCiAgICAgcmV0dXJuIGRlc2M7CiB9CiAK
LXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPYmo6OkdldFRlbXBs
YXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPYmo6OkdldFRlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUp
CiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJl
c3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYg
KHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVy
SXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0
ZU1hcChjdXJyZW50V29ybGRUeXBlKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRh
dGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmVuZCgpKQogICAgICAgICByZXR1cm4g
cmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25m
aWd1cmVWOFRlc3RPYmpUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBl
KSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUp
LmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZShk
YXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3VycmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJl
bnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFk
ZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RPYmo6
Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RPYmo6Okhhc0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUs
IFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3Js
ZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJ
bnN0YW5jZSgmaW5mbywgdmFsdWUsIGN1cnJlbnRXb3JsZFR5cGUpOwogfQogCiBib29sIFY4VGVz
dE9iajo6SGFzSW5zdGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCkBAIC0zNTA1LDEzICszNTA1LDEzIEBAIHZvaWQgVjhUZXN0
T2JqOjppbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBp
bnN0YW5jZSwgVGVzCiAgICAgaWYgKENvbnRleHRGZWF0dXJlczo6ZW5hYmxlZFBlckNvbnRleHRB
dHRyMUVuYWJsZWQoaW1wbC0+ZG9jdW1lbnQoKSkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IFY4
RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XAogICAgICAgICAv
LyBBdHRyaWJ1dGUgJ2VuYWJsZWRQZXJDb250ZXh0QXR0cjEnIChUeXBlOiAnYXR0cmlidXRlJyBF
eHRBdHRyOiAnVjhFbmFibGVkUGVyQ29udGV4dCcpCi0gICAgICAgIHsiZW5hYmxlZFBlckNvbnRl
eHRBdHRyMSIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0
dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL307CisgICAgICAgIHsiZW5hYmxlZFBlckNv
bnRleHRBdHRyMSIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0
ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRy
MUF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL307CiAgICAgICAgIFY4RE9N
Q29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRh
dGEsIGlzb2xhdGUpOwogICAgIH0KICAgICBpZiAoQ29udGV4dEZlYXR1cmVzOjpmZWF0dXJlTmFt
ZUVuYWJsZWQoaW1wbC0+ZG9jdW1lbnQoKSkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IFY4RE9N
Q29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XAogICAgICAgICAvLyBB
dHRyaWJ1dGUgJ2VuYWJsZWRQZXJDb250ZXh0QXR0cjInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRB
dHRyOiAnVjhFbmFibGVkUGVyQ29udGV4dCcpCi0gICAgICAgIHsiZW5hYmxlZFBlckNvbnRleHRB
dHRyMiIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0ckdldHRl
ckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMkF0dHJT
ZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL307CisgICAgICAgIHsiZW5hYmxlZFBlckNvbnRl
eHRBdHRyMiIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMkF0
dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL307CiAgICAgICAgIFY4RE9NQ29u
ZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEs
IGlzb2xhdGUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaAppbmRleCAxZjIzZTY0NTA5YmE0YmE1MTE4NGYwNjUw
ZjkwMzY0NTg2MjU1MTk1Li5kZmM0NGU1YTE2MWFkN2FjNDU3ZTc3NDBjYjYxY2NlZmU3YTllYWFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5oCkBAIC04MSw2ICs4MSwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjgoVGVzdE9iaiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbgogICAg
IHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKK2lubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0T2JqKiBpbXBsLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWluV29ybGQpOworICAg
IGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNv
bGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6
OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVy
LCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0
KFRlc3RPYmoqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFi
bGUqIHdyYXBwYWJsZSkKIHsKQEAgLTkzLDYgKzEwNCwyNSBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RPYmoqIGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYg
Y29udAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJs
ZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVz
dE9iaiogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSog
d3JhcHBhYmxlKQoreworICAgIEFTU0VSVCh3b3JsZFR5cGUoY29udGFpbmVyLkdldElzb2xhdGUo
KSkgPT0gTWFpbldvcmxkKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQorICAgICAgICByZXR1
cm4gdjhOdWxsKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBs
KTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsK
KyAgICByZXR1cm4gd3JhcChpbXBsLCBjb250YWluZXIuSG9sZGVyKCksIGNvbnRhaW5lci5HZXRJ
c29sYXRlKCkpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdy
YXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3RGb3JNYWluV29y
bGQoUGFzc1JlZlB0cjwgVGVzdE9iaiA+IGltcGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29u
dGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKK3sKKyAgICByZXR1cm4gdG9WOEZhc3RGb3JN
YWluV29ybGQoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOworfQorCisKK3RlbXBs
YXRlPGNsYXNzIEhvbGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0T2JqID4gaW1wbCwgY29u
c3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewog
ICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNmVhYTM3
YzExMzdmYjJhODYyNWNkOTE2ODllNDg0ZjM1Zjk4ZWIzNC4uZDAzNTAxYTRjZDc0MDk0YzI5MGYy
YjBjNDVlYzA2MTJhOWY0ZTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcApAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qg
djgKICAgICByZXR1cm4gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNWOEludGVybmFsOjpjb25z
dHJ1Y3RvcihhcmdzKTsKIH0KIAotc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGVtcGxhdGUodjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1RlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewog
ICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25h
dHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25m
aWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICAwLCAwLAot
ICAgICAgICAwLCAwLCBpc29sYXRlKTsKKyAgICAgICAgMCwgMCwgaXNvbGF0ZSwgY3VycmVudFdv
cmxkVHlwZSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21l
IGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgogICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOwogICAgIApA
QCAtMTY0LDIzICsxNjQsMjMgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBDb25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3IKICAgICByZXR1cm4g
ZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAg
IFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
OwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBk
YXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQg
IT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVE
YXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoY3Vy
cmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1w
bGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+
dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZv
LCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFw
KHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3Vy
cmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRl
bXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVy
biB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBX
cmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewotICAgIHJl
dHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywg
dmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgY3VycmVudFdvcmxkVHlwZSk7CiB9CiAK
IGJvb2wgVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6SGFzSW5zdGFuY2VJbkFueVdvcmxk
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAppbmRleCAxNGFhYmM0YjhhMzA4
OTViYWQ2YTNlMDA2YWM4ZWFkMjU2YWI1YWU4Li5kMGU1YTlhMjJiNjZmZTA4YzRhZTlkOTFiOGM0
YjRkZWZkMGJmMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmgKQEAgLTc2LDYgKzc2LDE3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCwgdjg6OkhhbmRsZTx2CiAgICAgcmV0dXJu
IHdyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9yTWFpbldvcmxkKFRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlwZShpc29sYXRlKSA9PSBNYWlu
V29ybGQpOworICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGxX
aXRoQ2hlY2soaXNvbGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBE
T01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAgaWYgKCF3cmFw
cGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXAo
aW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgSG9s
ZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjhGYXN0KFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCBjb25zdCBIb2xk
ZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CkBAIC04OCw2
ICs5OSwyNSBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCBjb25zdCBIbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBI
b2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOEZhc3RGb3JNYWluV29ybGQoVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGlt
cGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJs
ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpID09IE1h
aW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVs
bChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAg
aWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0
dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgp
KTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+
CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFBhc3NS
ZWZQdHI8IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID4gaW1wbCwgY29uc3QgSG9sZGVyQ29u
dGFpbmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQoreworICAgIHJldHVybiB0
b1Y4RmFzdEZvck1haW5Xb3JsZChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7Cit9
CisKKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CiBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250YWlu
ZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdl
dCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IGQ1OGFhM2UwZjRjMjBlNDNh
MzdiMzg4YTc1YTc4MDE1MjE2NzFmYjguLjAzZDAwODEwOTA2NjAzMzE2MTIzYjA0MzhjMjMxMzhh
ZGIyYTIwZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0yODEsMTUgKzI4MSwxNSBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0
YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQXR0cnNbXSA9IHsKICAgICAvLyBBdHRyaWJ1dGUg
J3ZhbHVlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJ2YWx1ZSIsIFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjp2YWx1ZUF0dHJHZXR0
ZXJDYWxsYmFjaywgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6
OnZhbHVlQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InZhbHVlIiwg
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0ckdl
dHRlckNhbGxiYWNrLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5h
bDo6dmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8v
IEF0dHJpYnV0ZSAncmVhZG9ubHlWYWx1ZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4
dEF0dHI6ICcnKQotICAgIHsicmVhZG9ubHlWYWx1ZSIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VWOEludGVybmFsOjpyZWFkb25seVZhbHVlQXR0ckdldHRlckNhbGxiYWNrLCAw
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKKyAgICB7InJlYWRvbmx5VmFsdWUiLCBUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6cmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXJDYWxs
YmFjaywgMCwgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdjYWNoZWRW
YWx1ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWNoZWRBdHRyaWJ1dGUnKQotICAg
IHsiY2FjaGVkVmFsdWUiLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRl
cm5hbDo6Y2FjaGVkVmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRWYWx1ZUF0dHJTZXR0ZXJDYWxsYmFjaywg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCisgICAgeyJjYWNoZWRWYWx1ZSIsIFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjaywg
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVl
QXR0clNldHRlckNhbGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1
dGUgJ3BvcnRzJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAg
eyJwb3J0cyIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpw
b3J0c0F0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJwb3J0cyIs
IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpwb3J0c0F0dHJH
ZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRl
ICdjYWNoZWRSZWFkb25seVZhbHVlJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0
cjogJ0NhY2hlZEF0dHJpYnV0ZScpCi0gICAgeyJjYWNoZWRSZWFkb25seVZhbHVlIiwgVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFJlYWRvbmx5VmFs
dWVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiY2FjaGVkUmVh
ZG9ubHlWYWx1ZSIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFs
OjpjYWNoZWRSZWFkb25seVZhbHVlQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwLCAwLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKIH07CiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRN
ZXRob2QgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlTWV0aG9kc1tdID0gewpA
QCAtMzA4LDE0ICszMDgsMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjaygKICAgICByZXR1cm4g
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNvbnN0cnVjdG9y
KGFyZ3MpOwogfQogCi1zdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVRlbXBsYXRlKHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBk
ZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRU
eXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8
djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKICAgICBkZWZhdWx0U2lnbmF0dXJlID0g
VjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPigpLCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmludGVybmFsRmll
bGRDb3VudCwKICAgICAgICAgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQXR0
cnMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
QXR0cnMpLAotICAgICAgICBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VNZXRo
b2RzLCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZU1ldGhvZHMpLCBpc29sYXRlKTsKKyAgICAgICAgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlTWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VNZXRob2RzKSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CiAgICAg
VU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxs
IG5vdCBiZSB1c2VkLgogICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayk7CiAgICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCk7
CkBAIC0zMjksMjMgKzMyOSwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZQogICAgIHJldHVy
biBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCit2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpH
ZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50
V29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjpp
dGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8p
OwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkK
KyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJl
c3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRUeXBlKS5lbmQoKSkKICAgICAg
ICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2Nv
cGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAg
ICAgICAgQ29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVGVtcGxh
dGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlw
ZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsK
KyAgICAgICAgQ29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVGVt
cGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpLCBpc29sYXRl
LCBjdXJyZW50V29ybGRUeXBlKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcChjdXJyZW50V29ybGRU
eXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpI
YXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwg
d29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogYm9vbCBW
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Okhhc0luc3RhbmNlSW5BbnlXb3Js
ZCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCmlu
ZGV4IGNhOTJjYzgwYmJjOTM3ZjlkODNkMmFlNDA3ZDEzZTkwNzc5YTdlMzguLmE4OTlhOGIzZjA2
ZDU1ODA0NGZiZmI1M2E2MGZiNTllN2NmNTFhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKQEAgLTc3LDYgKzc3LDE3IEBAIGlu
bGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlKiBpbXBsLCB2ODo6CiAgICAgcmV0dXJuIHdyYXAoaW1wbCwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKIH0KIAoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9y
TWFpbldvcmxkKFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcGwsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
K3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1haW5Xb3JsZCk7CisgICAgaWYg
KFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRl
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Z2V0
V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcChpbXBsLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNs
YXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wbCwgY29uc3QgSG9sZGVyQ29udGFp
bmVyJiBjb250YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewpAQCAtODksNiArMTAwLDI1
IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSogaW1wbCwKIH0KIAogdGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29u
dGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjhGYXN0Rm9yTWFpbldvcmxkKFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGlt
cGwsIGNvbnN0IEhvbGRlckNvbnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJs
ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGNvbnRhaW5lci5HZXRJc29sYXRlKCkpID09IE1h
aW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVs
bChjb250YWluZXIuR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBET01EYXRhU3RvcmU6OmdldFdyYXBwZXJGb3JNYWluV29ybGQoaW1wbCk7CisgICAg
aWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0
dXJuIHdyYXAoaW1wbCwgY29udGFpbmVyLkhvbGRlcigpLCBjb250YWluZXIuR2V0SXNvbGF0ZSgp
KTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSG9sZGVyQ29udGFpbmVyLCBjbGFzcyBXcmFwcGFibGU+
CitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0Rm9yTWFpbldvcmxkKFBhc3NS
ZWZQdHI8IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgPiBpbXBsLCBjb25zdCBI
b2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAg
cmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBh
YmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBw
YWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwg
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA+IGltcGwsIGNvbnN0IEhvbGRlckNv
bnRhaW5lciYgY29udGFpbmVyLCBXcmFwcGFibGUqIHdyYXBwYWJsZSkKIHsKICAgICByZXR1cm4g
dG9WOEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVm
cy5jcHAKaW5kZXggMWRmZmFjOGU4YzI4NzdjYmY1YjZmZDU3OGNhYTEyMDVlYWU4Njk4Ny4uNWY2
NTBiODBkYTQwYWYyNTZhOWZmOTVkZmE2NGU0N2E1YzMzY2RhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMu
Y3BwCkBAIC00OTgsMTkgKzQ5OCwxOSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNv
bnN0cnVjdG9yKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAKIHN0YXRpYyBjb25zdCBWOERP
TUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0VHlwZWRlZnNBdHRyc1tdID0g
ewogICAgIC8vIEF0dHJpYnV0ZSAndW5zaWduZWRMb25nTG9uZ0F0dHInIChUeXBlOiAnYXR0cmli
dXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgVGVzdFR5cGVk
ZWZzVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRl
c3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckNhbGxi
YWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgVGVzdFR5
cGVkZWZzVjhJbnRlcm5hbDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ss
IFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlckNh
bGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2ltbXV0YWJs
ZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdJbW11
dGFibGUnKQotICAgIHsiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIiwgVGVzdFR5cGVk
ZWZzVjhJbnRlcm5hbDo6aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjppbW11dGFibGVTZXJpYWxpemVkU2NyaXB0
VmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiaW1tdXRhYmxl
U2VyaWFsaXplZFNjcmlwdFZhbHVlIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6aW1tdXRhYmxl
U2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOElu
dGVybmFsOjppbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyU2V0dGVyQ2FsbGJhY2ss
IDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnVGVzdFN1Yk9iaicgKFR5
cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiVGVzdFN1Yk9iaiIs
IFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OlRlc3RUeXBlZGVmc0NvbnN0cnVjdG9yR2V0dGVyLCAw
LCAmVjhUZXN0U3ViT2JqOjppbmZvLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJUZXN0U3ViT2JqIiwgVGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6VGVzdFR5cGVkZWZzQ29uc3RydWN0b3JHZXR0ZXIsIDAsIDAsIDAsICZWOFRlc3RT
dWJPYmo6OmluZm8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uJyAo
VHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJhdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0
ckdldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4
Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJhdHRyV2l0
aEdldHRlckV4Y2VwdGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRy
V2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiAgICAgLy8gQXR0cmlidXRlICdhdHRyV2l0aFNldHRlckV4Y2VwdGlvbicgKFR5cGU6ICdh
dHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCBU
ZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25B
dHRyU2V0dGVyQ2FsbGJhY2ssIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiYXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24iLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4Y2VwdGlv
bkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0
ZXJFeGNlcHRpb25BdHRyU2V0dGVyQ2FsbGJhY2ssIDAsIDAsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAg
IC8vIEF0dHJpYnV0ZSAnc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24nIChUeXBlOiAnYXR0
cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
IiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25B
dHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNhbGxiYWNrLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7
InN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6
c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBl
ZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0clNldHRlckNh
bGxiYWNrLCAwLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0cmluZ0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0g
ICAgeyJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJu
YWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0
VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0
ZXJDYWxsYmFjaywgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJzdHJpbmdBdHRyV2l0aFNldHRlckV4
Y2VwdGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdB
dHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXJDYWxsYmFjaywgMCwgMCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCiB9OwogCiBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkTWV0
aG9kIFY4VGVzdFR5cGVkZWZzTWV0aG9kc1tdID0gewpAQCAtNTMzLDE0ICs1MzMsMTQgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdFR5cGVkZWZzOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICByZXR1cm4gVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6
Y29uc3RydWN0b3IoYXJncyk7CiB9CiAKLXN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZSh2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBw
ZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRlKHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBl
cldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKQogewogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90
eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsK
ICAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1w
bGF0ZShkZXNjLCAiVGVzdFR5cGVkZWZzIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+KCksIFY4VGVzdFR5cGVkZWZzOjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIFY4
VGVzdFR5cGVkZWZzQXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0VHlwZWRlZnNBdHRycyks
Ci0gICAgICAgIFY4VGVzdFR5cGVkZWZzTWV0aG9kcywgV1RGX0FSUkFZX0xFTkdUSChWOFRlc3RU
eXBlZGVmc01ldGhvZHMpLCBpc29sYXRlKTsKKyAgICAgICAgVjhUZXN0VHlwZWRlZnNNZXRob2Rz
LCBXVEZfQVJSQVlfTEVOR1RIKFY4VGVzdFR5cGVkZWZzTWV0aG9kcyksIGlzb2xhdGUsIGN1cnJl
bnRXb3JsZFR5cGUpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4g
c29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KICAgICBkZXNjLT5TZXRDYWxsSGFuZGxl
cihWOFRlc3RUeXBlZGVmczo6Y29uc3RydWN0b3JDYWxsYmFjayk7CiAgICAgdjg6OkxvY2FsPHY4
OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCk7CkBA
IC01NTEsMjUgKzU1MSwyNSBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUodjg6OgogCiAgICAgLy8gQ3Vz
dG9tIFNpZ25hdHVyZSAnbWV0aG9kV2l0aFNlcXVlbmNlQXJnJwogICAgIGNvbnN0IGludCBtZXRo
b2RXaXRoU2VxdWVuY2VBcmdBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhvZFdpdGhTZXF1ZW5jZUFyZ0Fy
Z2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhz
ZXF1ZW5jZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+OjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJn
dlttZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4c2VxdWVuY2U8U2VyaWFsaXplZFNjcmlwdFZhbHVlPjo6
aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+
IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNj
LCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2KTsK
ICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0aG9kV2l0aFNlcXVlbmNl
QXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6
bWV0aG9kV2l0aFNlcXVlbmNlQXJnTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIG1ldGhv
ZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAn
bnVsbGFibGVBcnJheUFyZycKICAgICBjb25zdCBpbnQgbnVsbGFibGVBcnJheUFyZ0FyZ2MgPSAx
OwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG51bGxhYmxlQXJyYXlBcmdB
cmd2W251bGxhYmxlQXJyYXlBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBudWxsYWJsZUFycmF5QXJnQXJndltu
dWxsYWJsZUFycmF5QXJnQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSkt
PnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSB9Owog
ICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbnVsbGFibGVBcnJheUFyZ1NpZ25hdHVyZSA9
IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBudWxsYWJsZUFycmF5QXJnQXJnYywgbnVsbGFibGVB
cnJheUFyZ0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJudWxs
YWJsZUFycmF5QXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6bnVsbGFibGVBcnJheUFyZ01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBu
dWxsYWJsZUFycmF5QXJnU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdz
dHJpbmdBcnJheUZ1bmN0aW9uJwogICAgIGNvbnN0IGludCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJn
YyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlG
dW5jdGlvbkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgd29ybGRU
eXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5
RnVuY3Rpb25Bcmd2W3N0cmluZ0FycmF5RnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8sIGN1cnJl
bnRXb3JsZFR5cGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBzdHJpbmdBcnJh
eUZ1bmN0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHN0cmluZ0FycmF5
RnVuY3Rpb25BcmdjLCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndik7CiAgICAgcHJvdG8tPlNldCh2
ODo6U3RyaW5nOjpOZXdTeW1ib2woInN0cmluZ0FycmF5RnVuY3Rpb24iKSwgdjg6OkZ1bmN0aW9u
VGVtcGxhdGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBcnJheUZ1bmN0aW9u
TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHN0cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1
cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmluZ0FycmF5RnVuY3Rpb24yJwog
ICAgIGNvbnN0IGludCBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ2MgPSAxOwotICAgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rpb24yQXJndltzdHJpbmdB
cnJheUZ1bmN0aW9uMkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5y
YXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rpb24yQXJndltzdHJp
bmdBcnJheUZ1bmN0aW9uMkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
LT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkgfTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHN0cmluZ0FycmF5RnVuY3Rpb24yU2lnbmF0
dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIHN0cmluZ0FycmF5RnVuY3Rpb24yQXJnYywg
c3RyaW5nQXJyYXlGdW5jdGlvbjJBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgic3RyaW5nQXJyYXlGdW5jdGlvbjIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5l
dyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBcnJheUZ1bmN0aW9uMk1ldGhvZENhbGxi
YWNrLCB2OFVuZGVmaW5lZCgpLCBzdHJpbmdBcnJheUZ1bmN0aW9uMlNpZ25hdHVyZSkpOwogCkBA
IC01NzgsMjMgKzU3OCwyMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUodjg6OgogICAgIHJldHVybiBk
ZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0VHlw
ZWRlZnM6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZSkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RU
eXBlZGVmczo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5
cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1w
bGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5m
aW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlw
ZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJl
c3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmZpbmQoJmluZm8pOwor
ICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoY3VycmVudFdvcmxkVHlwZSkuZW5k
KCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3Bl
IGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0
ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUoZGF0YS0+cmF3
VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0
YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29u
ZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgY3Vy
cmVudFdvcmxkVHlwZSksIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOworICAgIGRhdGEtPnRl
bXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVy
biB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RUeXBlZGVmczo6SGFzSW5zdGFuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlw
ZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdFR5cGVkZWZzOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBl
IGN1cnJlbnRXb3JsZFR5cGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20o
aXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1
cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZh
bHVlLCBjdXJyZW50V29ybGRUeXBlKTsKIH0KIAogYm9vbCBWOFRlc3RUeXBlZGVmczo6SGFzSW5z
dGFuY2VJbkFueVdvcmxkKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0VHlwZWRlZnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5oCmluZGV4IGViMzgwNDRkYjQ5YWQwMWU1ODhjOWNlZmRh
NTYxZjBmNmVmYTdlMDQuLjI1YjdhNWEzZjEwNDM3MWYwYzZlZmNkZTEyNzQwNzY5YzgxNWE0OTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RUeXBlZGVmcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RUeXBlZGVmcy5oCkBAIC03Niw2ICs3NiwxNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjgoVGVzdFR5cGVkZWZzKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZQogICAgIHJldHVybiB3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9
CiAKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChUZXN0VHlw
ZWRlZnMqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICBBU1NFUlQod29ybGRUeXBlKGlzb2xhdGUpID09IE1h
aW5Xb3JsZCk7CisgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKKyAgICAgICAgcmV0dXJuIHY4TnVs
bFdpdGhDaGVjayhpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9
IERPTURhdGFTdG9yZTo6Z2V0V3JhcHBlckZvck1haW5Xb3JsZChpbXBsKTsKKyAgICBpZiAoIXdy
YXBwZXIuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3Jh
cChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBI
b2xkZXJDb250YWluZXIsIGNsYXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOEZhc3QoVGVzdFR5cGVkZWZzKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCiB7CkBAIC04OCw2ICs5OSwyNSBAQCBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFRlc3RUeXBlZGVmcyogaW1wbCwg
Y29uc3QgSG9sZGVyQ29udGFpbmVyJgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWlu
ZXIsIGNsYXNzIFdyYXBwYWJsZT4KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZh
c3RGb3JNYWluV29ybGQoVGVzdFR5cGVkZWZzKiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUpCit7CisgICAgQVNTRVJUKHdvcmxkVHlw
ZShjb250YWluZXIuR2V0SXNvbGF0ZSgpKSA9PSBNYWluV29ybGQpOworICAgIGlmIChVTkxJS0VM
WSghaW1wbCkpCisgICAgICAgIHJldHVybiB2OE51bGwoY29udGFpbmVyLkdldElzb2xhdGUoKSk7
CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3JlOjpnZXRX
cmFwcGVyRm9yTWFpbldvcmxkKGltcGwpOworICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwKGltcGwsIGNvbnRhaW5lci5I
b2xkZXIoKSwgY29udGFpbmVyLkdldElzb2xhdGUoKSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEhv
bGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4RmFzdEZvck1haW5Xb3JsZChQYXNzUmVmUHRyPCBUZXN0VHlwZWRlZnMgPiBpbXBs
LCBjb25zdCBIb2xkZXJDb250YWluZXImIGNvbnRhaW5lciwgV3JhcHBhYmxlKiB3cmFwcGFibGUp
Cit7CisgICAgcmV0dXJuIHRvVjhGYXN0Rm9yTWFpbldvcmxkKGltcGwuZ2V0KCksIGNvbnRhaW5l
ciwgd3JhcHBhYmxlKTsKK30KKworCit0ZW1wbGF0ZTxjbGFzcyBIb2xkZXJDb250YWluZXIsIGNs
YXNzIFdyYXBwYWJsZT4KIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFz
c1JlZlB0cjwgVGVzdFR5cGVkZWZzID4gaW1wbCwgY29uc3QgSG9sZGVyQ29udGFpbmVyJiBjb250
YWluZXIsIFdyYXBwYWJsZSogd3JhcHBhYmxlKQogewogICAgIHJldHVybiB0b1Y4RmFzdChpbXBs
LmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RPTURhdGFTdG9yZS5oCmluZGV4IGMwNTAzM2YwYjZjYTVjMzY5OGFhNzY0NTgzOTZmYWEzYzEy
ZjBlYTYuLjQ0MTVkODUzNTUzYzZjYTIyOGVhM2NhYTIyMjA3ZTAyMmM2YWUzM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCkBAIC04NCw2ICs4NCwxNCBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXRXcmFwcGVyRm9yTWFpbldvcmxkKFQqIG9iamVjdCkKKyAg
ICB7CisgICAgICAgIGlmIChtYWluV29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChvYmplY3Qp
ICYmIGlzTWFpbldvcmxkT2JqZWN0KG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gZ2V0V3Jh
cHBlckZyb21PYmplY3Qob2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIG1haW5Xb3JsZFN0b3JlKCkt
PmdldChvYmplY3QpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgc3Rh
dGljIHZvaWQgc2V0V3JhcHBlcihUKiBvYmplY3QsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uKQogICAgIHsKICAgICAgICAgaWYgKG1haW5Xb3JsZFdyYXBwZXJJc1N0b3Jl
ZEluT2JqZWN0KG9iamVjdCkgJiYgaXNNYWluV29ybGRPYmplY3Qob2JqZWN0KSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHAKaW5kZXgg
NWZlN2JjZmFjZGRlNTY1NzJiNWUyMGIwZWIzNjdlNTYwZGVjYWU5ZC4uNTYxY2FiZDgyYjRjYjM0
NjM0ZTEyMDFjNThkYWU1MGVkZmU0OWE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uY3BwCkBAIC0zMywxMCArMzMsMTAgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1
cmVBdHRyaWJ1dGVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvdHlwZSwgY29uc3QgQmF0Y2hlZEF0dHJp
YnV0ZSogYXR0cmlidXRlcywgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKK3ZvaWQgVjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXMo
djg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3RUZW1wbGF0ZT4gcHJvdG90eXBlLCBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiBhdHRyaWJ1
dGVzLCBzaXplX3QgYXR0cmlidXRlQ291bnQsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVy
V29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBhdHRyaWJ1dGVDb3VudDsgKytpKQotICAgICAgICBjb25maWd1cmVBdHRyaWJ1dGUoaW5zdGFu
Y2UsIHByb3RvdHlwZSwgYXR0cmlidXRlc1tpXSwgaXNvbGF0ZSk7CisgICAgICAgIGNvbmZpZ3Vy
ZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG90eXBlLCBhdHRyaWJ1dGVzW2ldLCBpc29sYXRlLCBj
dXJyZW50V29ybGRUeXBlKTsKIH0KIAogdm9pZCBWOERPTUNvbmZpZ3VyYXRpb246OmJhdGNoQ29u
ZmlndXJlQ29uc3RhbnRzKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZ1bmN0aW9u
RGVzY3JpcHRvciwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvdHlwZSwgY29u
c3QgQmF0Y2hlZENvbnN0YW50KiBjb25zdGFudHMsIHNpemVfdCBjb25zdGFudENvdW50LCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBWOERPTUNvbmZpZ3VyYXRp
b246OmJhdGNoQ29uZmlndXJlQ2FsbGJhY2tzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRl
PgogfQogCiB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gVjhET01Db25maWd1cmF0aW9uOjpjb25m
aWd1cmVUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rp
b25EZXNjcmlwdG9yLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcGFyZW50Q2xhc3MsCi0gICAgc2l6ZV90IGZpZWxkQ291bnQs
IGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUqIGF0dHJpYnV0ZXMsIHNpemVfdCBhdHRyaWJ1dGVDb3Vu
dCwgY29uc3QgQmF0Y2hlZE1ldGhvZCogY2FsbGJhY2tzLCBzaXplX3QgY2FsbGJhY2tDb3VudCwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAgc2l6ZV90IGZpZWxkQ291bnQsIGNvbnN0IEJhdGNo
ZWRBdHRyaWJ1dGUqIGF0dHJpYnV0ZXMsIHNpemVfdCBhdHRyaWJ1dGVDb3VudCwgY29uc3QgQmF0
Y2hlZE1ldGhvZCogY2FsbGJhY2tzLCBzaXplX3QgY2FsbGJhY2tDb3VudCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKIHsKICAgICBmdW5j
dGlvbkRlc2NyaXB0b3ItPlNldENsYXNzTmFtZSh2ODo6U3RyaW5nOjpOZXdTeW1ib2woaW50ZXJm
YWNlTmFtZSkpOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0g
ZnVuY3Rpb25EZXNjcmlwdG9yLT5JbnN0YW5jZVRlbXBsYXRlKCk7CkBAIC03MCw3ICs3MCw3IEBA
IHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRl
bXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4CiAgICAgfQogCiAgICAgaWYgKGF0dHJpYnV0ZUNvdW50
KQotICAgICAgICBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXMoaW5zdGFuY2UsIGZ1bmN0aW9uRGVz
Y3JpcHRvci0+UHJvdG90eXBlVGVtcGxhdGUoKSwgYXR0cmlidXRlcywgYXR0cmlidXRlQ291bnQs
IGlzb2xhdGUpOworICAgICAgICBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXMoaW5zdGFuY2UsIGZ1
bmN0aW9uRGVzY3JpcHRvci0+UHJvdG90eXBlVGVtcGxhdGUoKSwgYXR0cmlidXRlcywgYXR0cmli
dXRlQ291bnQsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpOwogICAgIHY4OjpMb2NhbDx2ODo6
U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGZ1bmN0aW9u
RGVzY3JpcHRvcik7CiAgICAgaWYgKGNhbGxiYWNrQ291bnQpCiAgICAgICAgIGJhdGNoQ29uZmln
dXJlQ2FsbGJhY2tzKGZ1bmN0aW9uRGVzY3JpcHRvci0+UHJvdG90eXBlVGVtcGxhdGUoKSwgZGVm
YXVsdFNpZ25hdHVyZSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6RG9u
dERlbGV0ZSksIGNhbGxiYWNrcywgY2FsbGJhY2tDb3VudCwgaXNvbGF0ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5oCmluZGV4IDhmOWM5MWEw
YWEzMGY5ODQ0MDg1Yjg3MGI4ZWM5YTVkY2UyYTFjZmYuLmU5NWIxNTg2YzQ2NTNmMzcyOGI1MmMw
OGJmMjFlOTVjNWQ3NjVmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NQ29uZmlndXJhdGlvbi5oCkBAIC00NywxMyArNDcsMTUgQEAgcHVibGljOgogICAgICAgICBj
b25zdCBjaGFyKiBjb25zdCBuYW1lOwogICAgICAgICB2ODo6QWNjZXNzb3JHZXR0ZXIgZ2V0dGVy
OwogICAgICAgICB2ODo6QWNjZXNzb3JTZXR0ZXIgc2V0dGVyOworICAgICAgICB2ODo6QWNjZXNz
b3JHZXR0ZXIgZ2V0dGVyRm9yTWFpbldvcmxkOworICAgICAgICB2ODo6QWNjZXNzb3JTZXR0ZXIg
c2V0dGVyRm9yTWFpbldvcmxkOwogICAgICAgICBXcmFwcGVyVHlwZUluZm8qIGRhdGE7CiAgICAg
ICAgIHY4OjpBY2Nlc3NDb250cm9sIHNldHRpbmdzOwogICAgICAgICB2ODo6UHJvcGVydHlBdHRy
aWJ1dGUgYXR0cmlidXRlOwogICAgICAgICBib29sIG9uUHJvdG90eXBlOwogICAgIH07CiAKLSAg
ICBzdGF0aWMgdm9pZCBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXModjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0VGVtcGxhdGU+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4sIGNvbnN0IEJhdGNo
ZWRBdHRyaWJ1dGUqLCBzaXplX3QgYXR0cmlidXRlQ291bnQsIHY4OjpJc29sYXRlKik7CisgICAg
c3RhdGljIHZvaWQgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHY4OjpIYW5kbGU8djg6Ok9iamVj
dFRlbXBsYXRlPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+LCBjb25zdCBCYXRjaGVk
QXR0cmlidXRlKiwgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJX
b3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSk7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBPYmplY3RP
clRlbXBsYXRlPgogICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjb25maWd1cmVBdHRyaWJ1dGUodjg6
OkhhbmRsZTxPYmplY3RPclRlbXBsYXRlPiBpbnN0YW5jZSwgdjg6OkhhbmRsZTxPYmplY3RPclRl
bXBsYXRlPiBwcm90b3R5cGUsIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgdjg6
Oklzb2xhdGUqKQpAQCAtNjYsNiArNjgsMjUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUuYXR0cmlidXRlKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBPYmplY3RPclRlbXBs
YXRlPgorICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjb25maWd1cmVBdHRyaWJ1dGUodjg6OkhhbmRs
ZTxPYmplY3RPclRlbXBsYXRlPiBpbnN0YW5jZSwgdjg6OkhhbmRsZTxPYmplY3RPclRlbXBsYXRl
PiBwcm90b3R5cGUsIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgdjg6Oklzb2xh
dGUqLCBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCisgICAgeworICAgICAgICB2
ODo6QWNjZXNzb3JHZXR0ZXIgZ2V0dGVyID0gYXR0cmlidXRlLmdldHRlcjsKKyAgICAgICAgdjg6
OkFjY2Vzc29yU2V0dGVyIHNldHRlciA9IGF0dHJpYnV0ZS5zZXR0ZXI7CisgICAgICAgIGlmIChj
dXJyZW50V29ybGRUeXBlID09IE1haW5Xb3JsZCkgeworICAgICAgICAgICAgaWYgKGF0dHJpYnV0
ZS5nZXR0ZXJGb3JNYWluV29ybGQpCisgICAgICAgICAgICAgICAgZ2V0dGVyID0gYXR0cmlidXRl
LmdldHRlckZvck1haW5Xb3JsZDsKKyAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUuc2V0dGVyRm9y
TWFpbldvcmxkKQorICAgICAgICAgICAgICAgIHNldHRlciA9IGF0dHJpYnV0ZS5zZXR0ZXJGb3JN
YWluV29ybGQ7CisgICAgICAgIH0KKyAgICAgICAgKGF0dHJpYnV0ZS5vblByb3RvdHlwZSA/IHBy
b3RvdHlwZSA6IGluc3RhbmNlKS0+U2V0QWNjZXNzb3Iodjg6OlN0cmluZzo6TmV3U3ltYm9sKGF0
dHJpYnV0ZS5uYW1lKSwKKyAgICAgICAgICAgIGdldHRlciwKKyAgICAgICAgICAgIHNldHRlciwK
KyAgICAgICAgICAgIHY4OjpFeHRlcm5hbDo6TmV3KGF0dHJpYnV0ZS5kYXRhKSwKKyAgICAgICAg
ICAgIGF0dHJpYnV0ZS5zZXR0aW5ncywKKyAgICAgICAgICAgIGF0dHJpYnV0ZS5hdHRyaWJ1dGUp
OworICAgIH0KKwogICAgIC8vIEJhdGNoZWRDb25zdGFudCB0cmFuc2xhdGVzIGludG8gY2FsbHMg
dG8gU2V0KCkgZm9yIHNldHRpbmcgdXAgYW4gb2JqZWN0J3MKICAgICAvLyBjb25zdGFudHMuIEl0
IHNldHMgdGhlIGNvbnN0YW50IG9uIGJvdGggdGhlIEZ1bmN0aW9uVGVtcGxhdGUgYW5kIHRoZQog
ICAgIC8vIE9iamVjdFRlbXBsYXRlLiBQcm9wZXJ0eUF0dHJpYnV0ZXMgaXMgYWx3YXlzIFJlYWRP
bmx5LgpAQCAtODQsNyArMTA1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgYmF0Y2hD
b25maWd1cmVDYWxsYmFja3Modjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+LCB2ODo6SGFu
ZGxlPHY4OjpTaWduYXR1cmU+LCB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsIGNvbnN0IEJhdGNoZWRN
ZXRob2QqLCBzaXplX3QgY2FsbGJhY2tDb3VudCwgdjg6Oklzb2xhdGUqKTsKIAotICAgIHN0YXRp
YyB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gY29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+LCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcGFyZW50Q2xhc3MsIHNpemVfdCBmaWVs
ZENvdW50LCBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiwgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LCBj
b25zdCBCYXRjaGVkTWV0aG9kKiwgc2l6ZV90IGNhbGxiYWNrQ291bnQsIHY4OjpJc29sYXRlKik7
CisgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBjb25maWd1cmVUZW1wbGF0ZSh2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4sIGNvbnN0IGNoYXIqIGludGVyZmFj
ZU5hbWUsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwYXJlbnRDbGFzcywg
c2l6ZV90IGZpZWxkQ291bnQsIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUqLCBzaXplX3QgYXR0cmli
dXRlQ291bnQsIGNvbnN0IEJhdGNoZWRNZXRob2QqLCBzaXplX3QgY2FsbGJhY2tDb3VudCwgdjg6
Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdp
bmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01X
aW5kb3dDdXN0b20uY3BwCmluZGV4IDU5NWJkZjg5OWZkZmNmNjNhMzFlOTAyMGQwZTA4ZWEwMTJj
Yjc2ZTUuLjc1NTcyMmI0ZmI2MTU2YjU4YzgwNGNjZTg1MjAzOTZiNTMyN2I4YTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3Vz
dG9tLmNwcApAQCAtNjExLDQgKzYxMSw5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KERP
TVdpbmRvdyogd2luZG93LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29uCiAgICAg
cmV0dXJuIGdsb2JhbDsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGb3JNYWluV29y
bGQoRE9NV2luZG93KiB3aW5kb3csIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICByZXR1cm4gdG9WOCh3aW5kb3csIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50VGFyZ2V0
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50VGFy
Z2V0Q3VzdG9tLmNwcAppbmRleCBlNzg5NmNjMTExOTUxZmI4ODM5MDYxZmM5ZjVjZTQ2N2I5ZDg4
OTk3Li4zZjc5Y2E3ZDBiYjhiZDA2NGI5YThiNmE0MjcyYTc3ZTNjOTIzM2ZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudFRhcmdldEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRUYXJnZXRD
dXN0b20uY3BwCkBAIC01Myw2ICs1MywxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChF
dmVudFRhcmdldCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbgogICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZv
ck1haW5Xb3JsZChFdmVudFRhcmdldCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIHJldHVybiB0b1Y4KGlt
cGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKICN1bmRlZiBUUllfVE9fV1JBUF9X
SVRIX0lOVEVSRkFDRQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcAppbmRleCBlMTE5
ZWU1YmYwMTdjYmI1NDVmYTI0MzhlMTE1MmJjYzVjZjY2YjJlLi40NjdlMWE2YmZhYjYzZWYyOTJi
MzU5ZTMyNzYxZjAyNjVhYThhNjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAKQEAgLTEwMSw2ICsxMDEsMTEgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSURCQW55KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZvck1haW5Xb3JsZChJREJBbnkqIGltcGwsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
K3sKKyAgICByZXR1cm4gdG9WOChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1p
Y3JvRGF0YUl0ZW1WYWx1ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhNaWNyb0RhdGFJdGVtVmFsdWVDdXN0b20uY3BwCmluZGV4IDk1M2JiZWMxNTA3YmQy
NDZjYmY3YzczZDlkNDFiMTRjZGQ3OWUyZDIuLjI2MGFlNzg5YWFlMDlhOWFlODJkNmU5ZmY1Mzkw
NzMzNjE2NzNiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE1pY3JvRGF0YUl0ZW1WYWx1ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWljcm9EYXRhSXRlbVZhbHVlQ3VzdG9tLmNwcApAQCAtNDgsNiAr
NDgsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoTWljcm9EYXRhSXRlbVZhbHVlKiBp
dGVtVmFsdWUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4KICAgICByZXR1cm4gdjhTdHJpbmcoaXRl
bVZhbHVlLT5nZXRTdHJpbmcoKSwgaXNvbGF0ZSk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4Rm9yTWFpbldvcmxkKE1pY3JvRGF0YUl0ZW1WYWx1ZSogaXRlbVZhbHVlLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit7
CisgICAgcmV0dXJuIHRvVjgoaXRlbVZhbHVlLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwor
fQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoTUlDUk9EQVRBKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cAppbmRleCA5MDZhMTRkM2FiNzRhYzA3Y2NkMDczMmZjMGE3MzA5MTQ4MmViOWRjLi43MmY2ZTNk
NGMwOTAzNDBlNTBkYTdhZDg1ZGU4YzgxZDE2YjczZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cApAQCAtMTQwLDYgKzE0MCwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChXb3JrZXJD
b250ZXh0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQwogICAgIHJldHVy
biBnbG9iYWw7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4Rm9yTWFpbldvcmxkKFdv
cmtlckNvbnRleHQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAgICByZXR1cm4gdG9WOChpbXBsLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAppbmRleCA1ZDgzYWRlZWMx
MmE4NDBhZWQwNDQwZjFiY2E1ZDcwNWNhNjM0MDNhLi43OGI5NDk3OGEzNjAzYzc1OTc5MjQyODM3
NzZjOWE3ZjcwNTAxMmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC0yNyw3ICsyNyw3IEBA
CiAKICAgICAvLyBET00gTGV2ZWwgMSBDb3JlCiAKLSAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJp
bmdBcz1OdWxsXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRhZ05hbWU7CisgICAgW1Ry
ZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbCwgVjhQZXJXb3JsZEJpbmRpbmdzXSByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRhZ05hbWU7CiAKICAgICBbVHJlYXRSZXR1cm5lZE51bGxT
dHJpbmdBcz1OdWxsXSBET01TdHJpbmcgZ2V0QXR0cmlidXRlKGluIFtPcHRpb25hbD1EZWZhdWx0
SXNVbmRlZmluZWRdIERPTVN0cmluZyBuYW1lKTsKICAgICBbT2JqQ0xlZ2FjeVVubmFtZWRQYXJh
bWV0ZXJzXSB2b2lkIHNldEF0dHJpYnV0ZShpbiBbT3B0aW9uYWw9RGVmYXVsdElzVW5kZWZpbmVk
XSBET01TdHJpbmcgbmFtZSwKQEAgLTQzLDcgKzQzLDcgQEAKIAogI2lmICFkZWZpbmVkKExBTkdV
QUdFX09CSkVDVElWRV9DKQogICAgIC8vIEZvciBPYmpDIHRoaXMgaXMgZGVmaW5lZCBvbiBOb2Rl
IGZvciBsZWdhY3kgc3VwcG9ydC4KLSAgICByZWFkb25seSBhdHRyaWJ1dGUgTmFtZWROb2RlTWFw
ICAgICBhdHRyaWJ1dGVzOworICAgIFtWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBOYW1lZE5vZGVNYXAgICAgIGF0dHJpYnV0ZXM7CiAgICAgYm9vbGVhbiAgICAgICAgICAg
IGhhc0F0dHJpYnV0ZXMoKTsKICNlbmRpZgogCkBAIC02NywyMyArNjcsMjMgQEAKICAgICBbT2Jq
Q0xlZ2FjeVVubmFtZWRQYXJhbWV0ZXJzXSBib29sZWFuIGhhc0F0dHJpYnV0ZU5TKGluIFtUcmVh
dE51bGxBcz1OdWxsU3RyaW5nLE9wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gRE9NU3RyaW5n
IG5hbWVzcGFjZVVSSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIFtPcHRpb25hbD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBsb2NhbE5hbWUpOwog
Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIENTU1N0eWxlRGVjbGFyYXRpb24gc3R5bGU7CisgICAg
W1Y4UGVyV29ybGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIENTU1N0eWxlRGVjbGFyYXRp
b24gc3R5bGU7CiAKICAgICAvLyBDb21tb24gZXh0ZW5zaW9ucwogCi0gICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgb2Zmc2V0TGVmdDsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBvZmZz
ZXRUb3A7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgb2Zmc2V0V2lkdGg7Ci0gICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGxvbmcgb2Zmc2V0SGVpZ2h0OwotICAgIFtJbXBsZW1lbnRlZEFzPWJp
bmRpbmdzT2Zmc2V0UGFyZW50XSByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCBvZmZzZXRQYXJl
bnQ7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgY2xpZW50TGVmdDsKLSAgICByZWFkb25s
eSBhdHRyaWJ1dGUgbG9uZyBjbGllbnRUb3A7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcg
Y2xpZW50V2lkdGg7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgY2xpZW50SGVpZ2h0Owot
ICAgICAgICAgICAgIGF0dHJpYnV0ZSBsb25nIHNjcm9sbExlZnQ7Ci0gICAgICAgICAgICAgYXR0
cmlidXRlIGxvbmcgc2Nyb2xsVG9wOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHNjcm9s
bFdpZHRoOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHNjcm9sbEhlaWdodDsKKyAgICBb
VjhQZXJXb3JsZEJpbmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBvZmZzZXRMZWZ0Owor
ICAgIFtWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG9mZnNldFRv
cDsKKyAgICBbVjhQZXJXb3JsZEJpbmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBvZmZz
ZXRXaWR0aDsKKyAgICBbVjhQZXJXb3JsZEJpbmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgbG9u
ZyBvZmZzZXRIZWlnaHQ7CisgICAgW0ltcGxlbWVudGVkQXM9YmluZGluZ3NPZmZzZXRQYXJlbnQs
IFY4UGVyV29ybGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgb2Zmc2V0UGFy
ZW50OworICAgIFtWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGNs
aWVudExlZnQ7CisgICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIGxv
bmcgY2xpZW50VG9wOworICAgIFtWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBsb25nIGNsaWVudFdpZHRoOworICAgIFtWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBsb25nIGNsaWVudEhlaWdodDsKKyAgICAgICAgICAgICBbVjhQZXJXb3JsZEJpbmRp
bmdzXSBhdHRyaWJ1dGUgbG9uZyBzY3JvbGxMZWZ0OworICAgICAgICAgICAgIFtWOFBlcldvcmxk
QmluZGluZ3NdIGF0dHJpYnV0ZSBsb25nIHNjcm9sbFRvcDsKKyAgICBbVjhQZXJXb3JsZEJpbmRp
bmdzXSByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBzY3JvbGxXaWR0aDsKKyAgICBbVjhQZXJXb3Js
ZEJpbmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBzY3JvbGxIZWlnaHQ7CiAKICAgICB2
b2lkIGZvY3VzKCk7CiAgICAgdm9pZCBibHVyKCk7CkBAIC05OCwxMSArOTgsMTEgQEAKICAgICAv
LyBIVE1MIDUKICAgICBOb2RlTGlzdCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGluIFtPcHRpb25h
bD1EZWZhdWx0SXNVbmRlZmluZWRdIERPTVN0cmluZyBuYW1lKTsKIAotICAgIFtSZWZsZWN0PWNs
YXNzXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNsYXNzTmFtZTsKLSAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NVG9rZW5MaXN0IGNsYXNzTGlzdDsKKyAgICBbUmVmbGVjdD1jbGFzcywgVjhQZXJXb3Js
ZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNsYXNzTmFtZTsKKyAgICBbVjhQZXJXb3Js
ZEJpbmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NVG9rZW5MaXN0IGNsYXNzTGlzdDsKIAog
I2lmIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAot
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdNYXAgZGF0YXNldDsKKyAgICBbVjhQZXJX
b3JsZEJpbmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nTWFwIGRhdGFzZXQ7CiAj
ZW5kaWYKIAogICAgIC8vIE5vZGVTZWxlY3RvciAtIFNlbGVjdG9yIEFQSQpAQCAtMTE2LDE3ICsx
MTYsMTcgQEAKICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAvLyBFbGVtZW50
VHJhdmVyc2FsIEFQSQotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IGZpcnN0RWxlbWVu
dENoaWxkOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IGxhc3RFbGVtZW50Q2hpbGQ7
Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgcHJldmlvdXNFbGVtZW50U2libGluZzsK
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCBuZXh0RWxlbWVudFNpYmxpbmc7Ci0gICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgY2hpbGRFbGVtZW50Q291bnQ7CisgICAg
W1Y4UGVyV29ybGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgZmlyc3RFbGVt
ZW50Q2hpbGQ7CisgICAgW1Y4UGVyV29ybGRCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIEVs
ZW1lbnQgbGFzdEVsZW1lbnRDaGlsZDsKKyAgICBbVjhQZXJXb3JsZEJpbmRpbmdzXSByZWFkb25s
eSBhdHRyaWJ1dGUgRWxlbWVudCBwcmV2aW91c0VsZW1lbnRTaWJsaW5nOworICAgIFtWOFBlcldv
cmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IG5leHRFbGVtZW50U2libGlu
ZzsKKyAgICBbVjhQZXJXb3JsZEJpbmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQg
bG9uZyBjaGlsZEVsZW1lbnRDb3VudDsKIAogICAgIC8vIFNoYWRvd0F3YXJlIEFQSQogI2lmIGRl
ZmluZWQoRU5BQkxFX1NIQURPV19ET00pICYmIEVOQUJMRV9TSEFET1dfRE9NICYmIGRlZmluZWQo
TEFOR1VBR0VfSkFWQVNDUklQVCkgJiYgTEFOR1VBR0VfSkFWQVNDUklQVAotICAgIFtSZWZsZWN0
PXBzZXVkbywgVjhFbmFibGVkQXRSdW50aW1lPXNoYWRvd0RPTSwgSW1wbGVtZW50ZWRBcz1wc2V1
ZG9dIGF0dHJpYnV0ZSBET01TdHJpbmcgd2Via2l0UHNldWRvOworICAgIFtSZWZsZWN0PXBzZXVk
bywgVjhFbmFibGVkQXRSdW50aW1lPXNoYWRvd0RPTSwgSW1wbGVtZW50ZWRBcz1wc2V1ZG8sIFY4
UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIERPTVN0cmluZyB3ZWJraXRQc2V1ZG87CiAgICAg
W1Y4RW5hYmxlZEF0UnVudGltZT1zaGFkb3dET00sIEltcGxlbWVudGVkQXM9Y3JlYXRlU2hhZG93
Um9vdF0gU2hhZG93Um9vdCB3ZWJraXRDcmVhdGVTaGFkb3dSb290KCkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7Ci0gICAgW1Y4RW5hYmxlZEF0UnVudGltZT1zaGFkb3dET00sIEltcGxlbWVudGVkQXM9
c2hhZG93Um9vdF0gcmVhZG9ubHkgYXR0cmlidXRlIFNoYWRvd1Jvb3Qgd2Via2l0U2hhZG93Um9v
dDsKKyAgICBbVjhFbmFibGVkQXRSdW50aW1lPXNoYWRvd0RPTSwgSW1wbGVtZW50ZWRBcz1zaGFk
b3dSb290LCBWOFBlcldvcmxkQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJpYnV0ZSBTaGFkb3dSb290
IHdlYmtpdFNoYWRvd1Jvb3Q7CiAjZW5kaWYKIAogICAgIC8vIERPTSA0CkBAIC0xNDEsNyArMTQx
LDcgQEAKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICYmIExBTkdVQUdFX09C
SkVDVElWRV9DCiAgICAgLy8gT2JqZWN0aXZlLUMgZXh0ZW5zaW9ucwotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgaW5uZXJUZXh0OworICAgIFtWOFBlcldvcmxkQmluZGluZ3NdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaW5uZXJUZXh0OwogI2VuZGlmCiAKICNpZiBkZWZp
bmVkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJCkBAIC0x
NTYsNDEgKzE1Niw0MSBAQAogICAgIFtDb25kaXRpb25hbD1QT0lOVEVSX0xPQ0tdIHZvaWQgd2Vi
a2l0UmVxdWVzdFBvaW50ZXJMb2NrKCk7CiAKICAgICAvLyBDU1MgUmVnaW9ucyBBUEkKLSAgICBb
Q29uZGl0aW9uYWw9Q1NTX1JFR0lPTlMsIFY4RW5hYmxlZEF0UnVudGltZT1jc3NSZWdpb25zXSBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdlYmtpdFJlZ2lvbk92ZXJzZXQ7CisgICAgW0Nv
bmRpdGlvbmFsPUNTU19SRUdJT05TLCBWOEVuYWJsZWRBdFJ1bnRpbWU9Y3NzUmVnaW9ucywgVjhQ
ZXJXb3JsZEJpbmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdlYmtpdFJlZ2lv
bk92ZXJzZXQ7CiAgICAgW0NvbmRpdGlvbmFsPUNTU19SRUdJT05TLCBWOEVuYWJsZWRBdFJ1bnRp
bWU9Y3NzUmVnaW9uc10gc2VxdWVuY2U8UmFuZ2U+IHdlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMo
KTsKIAogI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JK
RUNUSVZFX0MKICAgICAvLyBFdmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1dGVzCi0gICAgW05vdEVu
dW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7Ci0gICAgW05vdEVudW1l
cmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYmx1cjsKLSAgICBbTm90RW51bWVyYWJs
ZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jaGFuZ2U7Ci0gICAgW05vdEVudW1lcmFibGVd
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2xpY2s7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY29udGV4dG1lbnU7Ci0gICAgW05vdEVudW1lcmFibGVd
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZGJsY2xpY2s7Ci0gICAgW05vdEVudW1lcmFibGVd
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZHJhZzsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kcmFnZW5kOwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRyYWdlbnRlcjsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kcmFnbGVhdmU7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZHJhZ292ZXI7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZHJhZ3N0YXJ0OwotICAgIFtOb3RFbnVtZXJhYmxlXSBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRyb3A7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9uZm9jdXM7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9uaW5wdXQ7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9uaW52YWxpZDsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb25rZXlkb3duOwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRM
aXN0ZW5lciBvbmtleXByZXNzOwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRM
aXN0ZW5lciBvbmtleXVwOwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbmxvYWQ7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9ubW91c2Vkb3duOwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbm1vdXNlbW92ZTsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25tb3VzZW91dDsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25tb3VzZW92ZXI7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3Rl
bmVyIG9ubW91c2V1cDsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25tb3VzZXdoZWVsOwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbnNjcm9sbDsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25zZWxlY3Q7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9uc3VibWl0OworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29y
bGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25ibHVyOworICAgIFtOb3RFbnVt
ZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY2hh
bmdlOworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9uY2xpY2s7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5k
aW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jb250ZXh0bWVudTsKKyAgICBbTm90RW51
bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRi
bGNsaWNrOworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9uZHJhZzsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJp
bmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRyYWdlbmQ7CisgICAgW05vdEVudW1l
cmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kcmFn
ZW50ZXI7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25kcmFnbGVhdmU7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29y
bGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kcmFnb3ZlcjsKKyAgICBbTm90
RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBv
bmRyYWdzdGFydDsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRyb3A7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29y
bGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKKyAgICBbTm90RW51
bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmZv
Y3VzOworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9uaW5wdXQ7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5k
aW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25pbnZhbGlkOworICAgIFtOb3RFbnVtZXJh
YmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ua2V5ZG93
bjsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbmtleXByZXNzOworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmlu
ZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ua2V5dXA7CisgICAgW05vdEVudW1lcmFi
bGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25sb2FkOwor
ICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9ubW91c2Vkb3duOworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGlu
Z3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubW91c2Vtb3ZlOworICAgIFtOb3RFbnVtZXJh
YmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubW91c2Vv
dXQ7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25tb3VzZW92ZXI7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRC
aW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tb3VzZXVwOworICAgIFtOb3RFbnVt
ZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubW91
c2V3aGVlbDsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbnNjcm9sbDsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3Js
ZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnNlbGVjdDsKKyAgICBbTm90RW51
bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnN1
Ym1pdDsKIAogICAgIC8vIGF0dHJpYnV0ZSBbTm90RW51bWVyYWJsZV0gRXZlbnRMaXN0ZW5lciBv
bmNhbnBsYXk7CiAgICAgLy8gYXR0cmlidXRlIFtOb3RFbnVtZXJhYmxlXSBFdmVudExpc3RlbmVy
IG9uY2FucGxheXRocm91Z2g7CkBAIC0yMTYsMjEgKzIxNiwyMSBAQAogICAgIC8vIGF0dHJpYnV0
ZSBbTm90RW51bWVyYWJsZV0gRXZlbnRMaXN0ZW5lciBvbndhaXRpbmc7CiAKICAgICAvLyBXZWJL
aXQgZXh0ZW5zaW9ucwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbmJlZm9yZWN1dDsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25jdXQ7Ci0gICAgW05vdEVudW1lcmFibGVdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
YmVmb3JlY29weTsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b25jb3B5OwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmJl
Zm9yZXBhc3RlOwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBv
bnBhc3RlOwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJl
c2V0OwotICAgIFtOb3RFbnVtZXJhYmxlXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnNlYXJj
aDsKLSAgICBbTm90RW51bWVyYWJsZV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25zZWxlY3Rz
dGFydDsKLSAgICBbTm90RW51bWVyYWJsZSxDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsVjhFbmFi
bGVkQXRSdW50aW1lPXRvdWNoXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnRvdWNoc3RhcnQ7
Ci0gICAgW05vdEVudW1lcmFibGUsQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLFY4RW5hYmxlZEF0
UnVudGltZT10b3VjaF0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb250b3VjaG1vdmU7Ci0gICAg
W05vdEVudW1lcmFibGUsQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLFY4RW5hYmxlZEF0UnVudGlt
ZT10b3VjaF0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb250b3VjaGVuZDsKLSAgICBbTm90RW51
bWVyYWJsZSxDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsVjhFbmFibGVkQXRSdW50aW1lPXRvdWNo
XSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnRvdWNoY2FuY2VsOwotICAgIFtOb3RFbnVtZXJh
YmxlLCBDb25kaXRpb25hbD1GVUxMU0NSRUVOX0FQSV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b253ZWJraXRmdWxsc2NyZWVuY2hhbmdlOwotICAgIFtOb3RFbnVtZXJhYmxlLCBDb25kaXRpb25h
bD1GVUxMU0NSRUVOX0FQSV0gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb253ZWJraXRmdWxsc2Ny
ZWVuZXJyb3I7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25iZWZvcmVjdXQ7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVy
V29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jdXQ7CisgICAgW05vdEVu
dW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25i
ZWZvcmVjb3B5OworICAgIFtOb3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9uY29weTsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3Js
ZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmJlZm9yZXBhc3RlOworICAgIFtO
b3RFbnVtZXJhYmxlLCBWOFBlcldvcmxkQmluZGluZ3NdIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9ucGFzdGU7CisgICAgW05vdEVudW1lcmFibGUsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25yZXNldDsKKyAgICBbTm90RW51bWVyYWJsZSwgVjhQZXJXb3Js
ZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnNlYXJjaDsKKyAgICBbTm90RW51
bWVyYWJsZSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnNl
bGVjdHN0YXJ0OworICAgIFtOb3RFbnVtZXJhYmxlLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxW
OEVuYWJsZWRBdFJ1bnRpbWU9dG91Y2gsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb250b3VjaHN0YXJ0OworICAgIFtOb3RFbnVtZXJhYmxlLENvbmRpdGlvbmFs
PVRPVUNIX0VWRU5UUyxWOEVuYWJsZWRBdFJ1bnRpbWU9dG91Y2gsIFY4UGVyV29ybGRCaW5kaW5n
c10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb250b3VjaG1vdmU7CisgICAgW05vdEVudW1lcmFi
bGUsQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLFY4RW5hYmxlZEF0UnVudGltZT10b3VjaCwgVjhQ
ZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnRvdWNoZW5kOworICAg
IFtOb3RFbnVtZXJhYmxlLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxWOEVuYWJsZWRBdFJ1bnRp
bWU9dG91Y2gsIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb250
b3VjaGNhbmNlbDsKKyAgICBbTm90RW51bWVyYWJsZSwgQ29uZGl0aW9uYWw9RlVMTFNDUkVFTl9B
UEksIFY4UGVyV29ybGRCaW5kaW5nc10gYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb253ZWJraXRm
dWxsc2NyZWVuY2hhbmdlOworICAgIFtOb3RFbnVtZXJhYmxlLCBDb25kaXRpb25hbD1GVUxMU0NS
RUVOX0FQSSwgVjhQZXJXb3JsZEJpbmRpbmdzXSBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbndl
YmtpdGZ1bGxzY3JlZW5lcnJvcjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaWRsCmluZGV4IDVl
ZTNiMDcyOWYzZGM5N2JjYjZjNWNmN2YwOTZiM2E1MjIwN2ZlYzMuLjZiNWQ0OTNlN2JkOWI1MzE3
ZGI3ZGI1MGU1ODcxMjcxMGQzYzBlNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKQEAgLTQ5LDIwICs0OSwy
MCBAQAogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICAgICAgRE9DVU1FTlRfRlJBR01FTlRfTk9E
RSAgICAgICAgID0gMTE7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgICAgICBOT1RBVElPTl9O
T0RFICAgICAgICAgICAgICAgICAgPSAxMjsKIAotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVHJl
YXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsXSBET01TdHJpbmcgICAgICAgIG5vZGVOYW1lOwor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsLCBW
OFBlcldvcmxkQmluZGluZ3NdIERPTVN0cmluZyAgICAgICAgbm9kZU5hbWU7CiAKICAgICAgICAg
ICAgICAvLyBGSVhNRTogdGhlIHNwZWMgc2F5cyB0aGlzIGNhbiBhbHNvIHJhaXNlIG9uIHJldHJp
ZXZhbC4KLSAgICAgICAgICAgICBhdHRyaWJ1dGUgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9
TnVsbCwgVHJlYXROdWxsQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgICBub2RlVmFsdWUK
KyAgICAgICAgICAgICBhdHRyaWJ1dGUgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbCwg
VHJlYXROdWxsQXM9TnVsbFN0cmluZywgVjhQZXJXb3JsZEJpbmRpbmdzXSBET01TdHJpbmcgICAg
ICAgIG5vZGVWYWx1ZQogICAgICAgICAgICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CiAKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgICBub2RlVHlwZTsK
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSAgICAgICAgICAgICBwYXJlbnROb2RlOwotICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlTGlzdCAgICAgICAgIGNoaWxkTm9kZXM7Ci0gICAgcmVh
ZG9ubHkgYXR0cmlidXRlIE5vZGUgICAgICAgICAgICAgZmlyc3RDaGlsZDsKLSAgICByZWFkb25s
eSBhdHRyaWJ1dGUgTm9kZSAgICAgICAgICAgICBsYXN0Q2hpbGQ7Ci0gICAgcmVhZG9ubHkgYXR0
cmlidXRlIE5vZGUgICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nOwotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBOb2RlICAgICAgICAgICAgIG5leHRTaWJsaW5nOwotICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBEb2N1bWVudCAgICAgICAgIG93bmVyRG9jdW1lbnQ7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFtWOFBlcldvcmxkQmluZGluZ3NdIHVuc2lnbmVkIHNob3J0ICAgbm9kZVR5cGU7CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFtWOFBlcldvcmxkQmluZGluZ3NdIE5vZGUgICAgICAgICAgICAg
cGFyZW50Tm9kZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4UGVyV29ybGRCaW5kaW5nc10g
Tm9kZUxpc3QgICAgICAgICBjaGlsZE5vZGVzOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhQ
ZXJXb3JsZEJpbmRpbmdzXSBOb2RlICAgICAgICAgICAgIGZpcnN0Q2hpbGQ7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFtWOFBlcldvcmxkQmluZGluZ3NdIE5vZGUgICAgICAgICAgICAgbGFzdENo
aWxkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVjhQZXJXb3JsZEJpbmRpbmdzXSBOb2RlICAg
ICAgICAgICAgIHByZXZpb3VzU2libGluZzsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Y4UGVy
V29ybGRCaW5kaW5nc10gTm9kZSAgICAgICAgICAgICBuZXh0U2libGluZzsKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgW1Y4UGVyV29ybGRCaW5kaW5nc10gRG9jdW1lbnQgICAgICAgICBvd25lckRv
Y3VtZW50OwogCiAgICAgW09iakNMZWdhY3lVbm5hbWVkUGFyYW1ldGVycywgQ3VzdG9tXSBOb2Rl
IGluc2VydEJlZm9yZShpbiBbQ3VzdG9tUmV0dXJuXSBOb2RlIG5ld0NoaWxkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gTm9k
ZSByZWZDaGlsZCkKQEAgLTg0LDIzICs4NCwyMyBAQAogICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBh
cmFtZXRlcnNdIGJvb2xlYW4gaXNTdXBwb3J0ZWQoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVm
aW5lZF0gRE9NU3RyaW5nIGZlYXR1cmUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsT3B0aW9uYWw9RGVmYXVsdElzVW5k
ZWZpbmVkXSBET01TdHJpbmcgdmVyc2lvbik7CiAKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgW1Ry
ZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVsbF0gRE9NU3RyaW5nICAgICAgICBuYW1lc3BhY2VV
Ukk7Ci0gICAgICAgICAgICAgYXR0cmlidXRlIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51
bGwsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmddIERPTVN0cmluZyAgICAgICAgcHJlZml4CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGwsIFY4UGVy
V29ybGRCaW5kaW5nc10gRE9NU3RyaW5nICAgICAgICBuYW1lc3BhY2VVUkk7CisgICAgICAgICAg
ICAgYXR0cmlidXRlIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPU51bGwsIFRyZWF0TnVsbEFz
PU51bGxTdHJpbmcsIFY4UGVyV29ybGRCaW5kaW5nc10gRE9NU3RyaW5nICAgICAgICBwcmVmaXgK
ICAgICAgICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsXSBET01TdHJpbmcg
ICAgICAgIGxvY2FsTmFtZTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgW1RyZWF0UmV0dXJuZWRO
dWxsU3RyaW5nQXM9TnVsbCwgVjhQZXJXb3JsZEJpbmRpbmdzXSBET01TdHJpbmcgICAgICAgIGxv
Y2FsTmFtZTsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpCi0gICAgcmVhZG9u
bHkgYXR0cmlidXRlIE5hbWVkTm9kZU1hcCAgICAgYXR0cmlidXRlczsKKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgW1Y4UGVyV29ybGRCaW5kaW5nc10gTmFtZWROb2RlTWFwICAgICBhdHRyaWJ1dGVz
OwogICAgIGJvb2xlYW4gICAgICAgICAgICBoYXNBdHRyaWJ1dGVzKCk7CiAjZW5kaWYKIAogCiAg
ICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMzoKIAotICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1OdWxsXSBET01TdHJpbmcgICAgICAgYmFzZVVS
STsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVs
bCwgVjhQZXJXb3JsZEJpbmRpbmdzXSBET01TdHJpbmcgICAgICAgYmFzZVVSSTsKIAogICAgICAg
ICAgICAgIC8vIEZJWE1FOiB0aGUgc3BlYyBzYXlzIHRoaXMgY2FuIGFsc28gcmFpc2Ugb24gcmV0
cmlldmFsLgotICAgICAgICAgICAgIGF0dHJpYnV0ZSBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdB
cz1OdWxsLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAgdGV4dENvbnRl
bnQKKyAgICAgICAgICAgICBhdHRyaWJ1dGUgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9TnVs
bCwgVHJlYXROdWxsQXM9TnVsbFN0cmluZywgVjhQZXJXb3JsZEJpbmRpbmdzXSBET01TdHJpbmcg
ICAgICAgdGV4dENvbnRlbnQKICAgICAgICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNl
cHRpb24pOwogCiAgICAgYm9vbGVhbiAgICAgICAgICAgIGlzU2FtZU5vZGUoaW4gW09wdGlvbmFs
PURlZmF1bHRJc1VuZGVmaW5lZF0gTm9kZSBvdGhlcik7CkBAIC0xMjMsMTEgKzEyMywxMSBAQAog
ICAgIGJvb2xlYW4gY29udGFpbnMoaW4gW09wdGlvbmFsPURlZmF1bHRJc1VuZGVmaW5lZF0gTm9k
ZSBvdGhlcik7CiAKICAgICAvLyBJRSBleHRlbnNpb25zCi0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IEVsZW1lbnQgICAgICAgICAgcGFyZW50RWxlbWVudDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
W1Y4UGVyV29ybGRCaW5kaW5nc10gRWxlbWVudCAgICAgICAgICBwYXJlbnRFbGVtZW50OwogCiAj
aWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MK
ICAgICAvLyBPYmplY3RpdmUtQyBleHRlbnNpb25zCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGJv
b2xlYW4gICAgICAgICAgaXNDb250ZW50RWRpdGFibGU7CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFtWOFBlcldvcmxkQmluZGluZ3NdIGJvb2xlYW4gICAgICAgICAgaXNDb250ZW50RWRpdGFibGU7
CiAKICAgICB2b2lkIGluc3BlY3QoKTsKICNlbmRpZiAvKiBkZWZpbmVkKExBTkdVQUdFX09CSkVD
VElWRV9DKSAqLwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>