<?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>99129</bug_id>
          
          <creation_ts>2012-10-11 19:45:08 -0700</creation_ts>
          <short_desc>[V8] PerContextEnabled methods should be installed when the constructor is created</short_desc>
          <delta_ts>2012-10-14 18:42:16 -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>DOM</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>99279</dependson>
          <blocked>98884</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zarvai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>740550</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-10-11 19:45:08 -0700</bug_when>
    <thetext>Currently PerContextEnabled methods are installed for each wrapper instead of for each prototype object,
even though the method is installed into the prototype.
This can be a performance waste when there are many wrappers for a same prototype object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740637</commentid>
    <comment_count>1</comment_count>
      <attachid>168362</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-10-11 22:51:13 -0700</bug_when>
    <thetext>Created attachment 168362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740638</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-10-11 22:51:33 -0700</bug_when>
    <thetext>Haraken, could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740667</commentid>
    <comment_count>3</comment_count>
      <attachid>168362</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-12 00:17:47 -0700</bug_when>
    <thetext>Comment on attachment 168362
Patch

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

The overall approach looks good.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2066
&gt; +WrapperTypeInfo V8${implClassName}Constructor::info = { V8${implClassName}Constructor::GetTemplate, V8${implClassName}::derefObject, V8${implClassName}::toActiveDOMObject, 0, V8${implClassName}::installPerContextPrototypeProperties, 0, WrapperTypeObjectPrototype };

Can&apos;t you pass 0 instead of passing an empty function? Then you can avoid generating empty functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740673</commentid>
    <comment_count>4</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-10-12 00:22:00 -0700</bug_when>
    <thetext>Hi Haraken, thanks for reviewing!

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2066
&gt; &gt; +WrapperTypeInfo V8${implClassName}Constructor::info = { V8${implClassName}Constructor::GetTemplate, V8${implClassName}::derefObject, V8${implClassName}::toActiveDOMObject, 0, V8${implClassName}::installPerContextPrototypeProperties, 0, WrapperTypeObjectPrototype };
&gt; 
&gt; Can&apos;t you pass 0 instead of passing an empty function? Then you can avoid generating empty functions.
I cannot. In precise, I can do so for this patch. But I have another patch which make it harder, unfortunately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740703</commentid>
    <comment_count>5</comment_count>
      <attachid>168362</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-12 01:02:57 -0700</bug_when>
    <thetext>Comment on attachment 168362
Patch

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

This patch will affect the performance of toV8Slow(). Before landing, please confirm that this patch (+ other patches you&apos;re trying to land) won&apos;t regress performance of Bindings/create-element.html and Dromaeo DOM tests.

&gt; Source/WebCore/ChangeLog:16
&gt; +        generated method, which is desined to be called for each time when the prototype

Nit: desined =&gt; designed.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:845
&gt; +    if ($implClassName eq &quot;DOMWindow&quot;) {
&gt; +        push(@implContentDecls, &lt;&lt;END);
&gt; +    return perContextData-&gt;constructorForType(WrapperTypeInfo::unwrap(data), V8DOMWindow::toNative(info.Holder())-&gt;document());
&gt; +END
&gt; +    } elsif ($implClassName eq &quot;WorkerContext&quot;) {
&gt; +        push(@implContentDecls, &lt;&lt;END);
&gt; +    return perContextData-&gt;constructorForType(WrapperTypeInfo::unwrap(data), V8WorkerContext::toNative(info.Holder()));
&gt; +END
&gt; +    } else {
&gt; +        die &quot;Unknown Context ${implClassName}&quot;
&gt; +    }
&gt; +    push(@implContentDecls, &lt;&lt;END);
&gt; +}

Nit: I would prefer push(@implContentDecls, &quot;...&quot;) rather than here documents for one-line code.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2066
&gt;&gt; +WrapperTypeInfo V8${implClassName}Constructor::info = { V8${implClassName}Constructor::GetTemplate, V8${implClassName}::derefObject, V8${implClassName}::toActiveDOMObject, 0, V8${implClassName}::installPerContextPrototypeProperties, 0, WrapperTypeObjectPrototype };
&gt; 
&gt; Can&apos;t you pass 0 instead of passing an empty function? Then you can avoid generating empty functions.

I discussed with morrita-san offline. I understood why you want to pass an empty function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740716</commentid>
    <comment_count>6</comment_count>
      <attachid>168376</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-10-12 01:30:18 -0700</bug_when>
    <thetext>Created attachment 168376
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740717</commentid>
    <comment_count>7</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-10-12 01:31:22 -0700</bug_when>
    <thetext>Hi Haraken, thanks for quick review!

(In reply to comment #5)
&gt; (From update of attachment 168362 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=168362&amp;action=review
&gt; 
&gt; This patch will affect the performance of toV8Slow(). Before landing, please confirm that this patch (+ other patches you&apos;re trying to land) won&apos;t regress performance of Bindings/create-element.html and Dromaeo DOM tests.

Done. I don&apos;t see any slowdown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740750</commentid>
    <comment_count>8</comment_count>
      <attachid>168376</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-12 02:29:19 -0700</bug_when>
    <thetext>Comment on attachment 168376
Patch for landing

Rejecting attachment 168376 from commit-queue.

New failing tests:
fast/notifications/notifications-with-permission.html
Full output: http://queues.webkit.org/results/14266248</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740770</commentid>
    <comment_count>9</comment_count>
      <attachid>168384</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-10-12 02:59:22 -0700</bug_when>
    <thetext>Created attachment 168384
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740779</commentid>
    <comment_count>10</comment_count>
      <attachid>168384</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-12 03:29:21 -0700</bug_when>
    <thetext>Comment on attachment 168384
Patch for landing

Clearing flags on attachment: 168384

Committed r131167: &lt;http://trac.webkit.org/changeset/131167&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740780</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-12 03:29:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740832</commentid>
    <comment_count>12</comment_count>
    <who name="Zoltan Arvai">zarvai</who>
    <bug_when>2012-10-12 05:12:27 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 168384 [details])
&gt; Clearing flags on attachment: 168384
&gt; 
&gt; Committed r131167: &lt;http://trac.webkit.org/changeset/131167&gt;


Bindings-tests failed on multiple bots after the patch:

Unknown Context TestObj at WebCore/bindings/scripts/CodeGeneratorV8.pm line 839.

gcc: error trying to exec &apos;cc1obj&apos;: execvp: No such file or directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740837</commentid>
    <comment_count>13</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-12 05:15:28 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; gcc: error trying to exec &apos;cc1obj&apos;: execvp: No such file or directory

I would guess you need to install gobjc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740841</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-12 05:26:13 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; gcc: error trying to exec &apos;cc1obj&apos;: execvp: No such file or directory
&gt; 
&gt; I would guess you need to install gobjc.

Hm? What changed why we need one more dependency?
I haven&apos;t seen a heads-up mail on webkit-dev about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740844</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-12 05:28:28 -0700</bug_when>
    <thetext>Otherwise bindings tests fail on _all_ bots: Chromium, Mac, Qt, ...
Could you update the result please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740846</commentid>
    <comment_count>16</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-12 05:28:47 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; gcc: error trying to exec &apos;cc1obj&apos;: execvp: No such file or directory
&gt; &gt; 
&gt; &gt; I would guess you need to install gobjc.
&gt; 
&gt; Hm? What changed why we need one more dependency?
&gt; I haven&apos;t seen a heads-up mail on webkit-dev about it.

Nothing changed. I think the error is not related to this change. I&apos;ve observed the error when I&apos;ve not installed gobjc.

On what bots is the error happening?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740848</commentid>
    <comment_count>17</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-12 05:32:31 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Bindings-tests failed on multiple bots after the patch:
&gt; 
&gt; Unknown Context TestObj at WebCore/bindings/scripts/CodeGeneratorV8.pm line 839.

On the other hand, this is undoubtedly the error caused by this patch. Let me check it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740851</commentid>
    <comment_count>18</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-12 05:37:32 -0700</bug_when>
    <thetext>The &quot;gcc: error trying to exec &apos;cc1obj&apos;: execvp: No such file or directory&quot; error message isn&apos;t related to this patch, it is present long time ago. (at least on the Qt bot)

But the &quot;Unknown Context TestObj at WebCore/bindings/scripts/CodeGeneratorV8.pm line 839.&quot; error message introduced in r131167 on all platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740855</commentid>
    <comment_count>19</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-12 05:39:34 -0700</bug_when>
    <thetext>Makes sense.

&gt; But the &quot;Unknown Context TestObj at WebCore/bindings/scripts/CodeGeneratorV8.pm line 839.&quot; error message introduced in r131167 on all platform.

This will be fixed in minutes.

&gt; The &quot;gcc: error trying to exec &apos;cc1obj&apos;: execvp: No such file or directory&quot; error message isn&apos;t related to this patch, it is present long time ago. (at least on the Qt bot)

This will be fixed by installing gobjc to the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740864</commentid>
    <comment_count>20</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-12 05:47:01 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Makes sense.
&gt; 
&gt; &gt; But the &quot;Unknown Context TestObj at WebCore/bindings/scripts/CodeGeneratorV8.pm line 839.&quot; error message introduced in r131167 on all platform.
&gt; 
&gt; This will be fixed in minutes.

Fixed in r131180. Sorry for the trouble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740865</commentid>
    <comment_count>21</comment_count>
      <attachid>168384</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-12 05:49:00 -0700</bug_when>
    <thetext>Comment on attachment 168384
Patch for landing

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:840
&gt; +    } else {
&gt; +        die &quot;Unknown Context ${implClassName}&quot;
&gt; +    }

morrita-san: In r131180, as a quick fix, I commented out this code to hide a run-bindings-tests failure for TestObj.idl (which contains methods with [V8EnabledPerContext]). Please fix the code in a more reasonable way.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168362</attachid>
            <date>2012-10-11 22:51:13 -0700</date>
            <delta_ts>2012-10-12 01:30:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99129-20121012145009.patch</filename>
            <type>text/plain</type>
            <size>55023</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzlkZTA2NzU3MWE3NTBl
ZWM1YmRmNDQzZjM4NzRkOTJhOTIyODQ1Yi4uYjU0ODdiNTRiN2ZiOTk2Mzc4NzU0OWQ5MTJlMTVk
ZjE3ZmQ5NzFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxMi0xMC0xMSAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbVjhdIFBlckNvbnRl
eHRFbmFibGVkIG1ldGhvZHMgc2hvdWxkIGJlIGluc3RhbGxlZCB3aGVuIHRoZSBjb25zdHJ1Y3Rv
ciBpcyBjcmVhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05OTEyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEJlZm9yZSB0aGlzIGNoYW5nZSwgZ2VuZXJhdGVkIGluc3RhbGxQZXJDb250ZXh0UHJvcGVy
dGllcygpIG1ldGhvZAorICAgICAgICBpbmplY3RlZCBib3RoIHBlci1jb250ZXh0IGF0dHJpYnV0
ZXMgYW5kIGZ1bmN0aW9ucywgYW5kIGZ1bmN0aW9ucworICAgICAgICB3ZXJlIGluamVjdGVkIGlu
dG8gdGhlIHByb3RvdHllIG9iamVjdC4gIFRoaXMgbWVhbnMgdGhhdCB0aGUKKyAgICAgICAgZnVu
Y3Rpb25zIGFyZSBpbmplY3RlZCBpbnRvIHRoZSBwcm90b3R5cGUgcmVwZWF0ZWRseSBmb3IgZWFj
aAorICAgICAgICBpbnRhbmNlIGNyZWF0aW9uLiAgVGhpcyBpbmplY3Rpb24gY2FuIGJlIGhhcHBl
bmVkIG9ubHkgb25jZSBwZXIKKyAgICAgICAgcHJvdG90eXBlIG9iamVjdCwgd2hpY2ggaXMgY2xl
YXJlciBhbmQgaXMgZmFzdGVyLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgaW5z
dGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKCkKKyAgICAgICAgZ2VuZXJhdGVkIG1l
dGhvZCwgd2hpY2ggaXMgZGVzaW5lZCB0byBiZSBjYWxsZWQgZm9yIGVhY2ggdGltZSB3aGVuIHRo
ZSBwcm90b3R5cGUKKyAgICAgICAgb2JqZWN0IGlzIGNyZWF0ZWQuCisKKyAgICAgICAgVG8gZG8g
dGhhdCwgV3JhcHBlclR5cGVJbmZvIGlzIGV4dGVuZGVkIHRvIGhvbGQgYW4gYWRkaXRpb25hbAor
ICAgICAgICBmdW5jdGlvbiBwb2ludGVyIHRvIGFuIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBl
UHJvcGVydGllcygpCisgICAgICAgIGltcGxlbWVudGF0aW9uIHNvIHRoYXQgd2UgY2FsbCBpdCBm
cm9tIFY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKCksCisgICAg
ICAgIHdoZXJlIHRoZSBwcm90b3R5cGUgaW5zdGFuY2UgaXMgY3JlYXRlZC4KKworICAgICAgICBP
dGhlciBjaGFuZ2VzOgorICAgICAgICAtIEFkZGVkIHNvbWUgbW9kaWZpY2F0aW9uIHRvIHBhc3Mg
YXJvdW5kIHRoZSBwYXJhbWV0ZXIgdG8gY29uc3RydWN0b3JGb3JUeXBlU2xvd0Nhc2UoKS4KKyAg
ICAgICAgLSBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMoKSBhcmUgbm93IGFsd2F5cyBnZW5l
cmF0ZWQgZm9yIHNpbXBsaWNpdHkuIEVtcHR5IGltcGxlbWVudGF0aW9ucyBhcmUgaW5saW5lZCB0
aHVzCisgICAgICAgICAgbm8gc3BlZWQgcGVuYWx0eS4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAg
KEdlbmVyYXRlQ29uc3RydWN0b3JHZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVOYW1lZENvbnN0
cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6IEV4dHJh
Y3RlZCBwZXItY29udGV4dCBmdW5jdGlvbiBhZGRpdGlvbnMgdG8gbmV3IGluc3RhbGxQZXJDb250
ZXh0UHJvdG90eXBlUHJvcGVydGllcygpIGZ1bmN0aW9uLgorICAgICAgICAoR2VuZXJhdGVUb1Y4
Q29udmVydGVycyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2
NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9h
dDY0QXJyYXk6OndyYXBTbG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhGbG9hdDY0QXJyYXkuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RmxvYXQ2NEFycmF5OjppbnN0
YWxsUGVyQ29udGV4dFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJy
YXk6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6d3Jh
cFNsb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVE
T01PYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6aW5z
dGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2
ZURPTU9iamVjdDo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1l
ZEdldHRlcjo6d3JhcFNsb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RDdXN0b21OYW1lZEdldHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXI6Omluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OndyYXBTbG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6aW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6Omluc3RhbGxQZXJDb250
ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VjhUZXN0RXZlbnRUYXJnZXQ6OndyYXBTbG93KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4VGVzdEV2ZW50VGFyZ2V0OjppbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRUYXJnZXQ6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBl
UHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4
Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEV4Y2VwdGlvbjo6d3JhcFNsb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RFeGNlcHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV4Y2VwdGlvbjo6
aW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV4
Y2VwdGlvbjo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50ZXJmYWNlOjp3cmFwU2xvdyk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50ZXJmYWNlOjppbnN0YWxsUGVyQ29udGV4dFByb3Bl
cnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50ZXJmYWNlOjppbnN0YWxsUGVyQ29u
dGV4dFByb3RvdHlwZVByb3BlcnRpZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6d3JhcFNs
b3cpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyOjppbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OndyYXBTbG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6aW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5hbWVkQ29uc3RydWN0b3I6Omluc3RhbGxQZXJDb250
ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3ROb2RlOjp3cmFwU2xvdyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6Omluc3RhbGxQ
ZXJDb250ZXh0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjppbnN0
YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2U6OndyYXBTbG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Omluc3RhbGxQ
ZXJDb250ZXh0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGll
cyk6CisgICAgICAgICogYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpucE9iamVjdFR5cGVJbmZvKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRv
d1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6Omluc3RhbGxE
T01XaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhQZXJDb250ZXh0RGF0YTo6Y3JlYXRlV3JhcHBlckZyb21DYWNoZVNsb3dDYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNl
KTogTm93IGludm9rZXMgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKCkKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmg6CisgICAgICAgIChXZWJDb3Jl
OjpWOFBlckNvbnRleHREYXRhOjpjcmVhdGVXcmFwcGVyRnJvbUNhY2hlKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZSk6CisgICAgICAgIChW
OFBlckNvbnRleHREYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhl
Y3V0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dEV4ZWN1dGlv
blByb3h5Ojppbml0aWFsaXplSWZOZWVkZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dyYXBw
ZXJUeXBlSW5mby5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXcmFw
cGVyVHlwZUluZm86Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6IEFkZGVk
LgorICAgICAgICAoV3JhcHBlclR5cGVJbmZvKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisKIDIwMTItMTAtMTEgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IEV4cG9zZSBoaWdoLXJlc29sdXRpb24gb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGNhbGxiYWNr
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtCmluZGV4IGM0NDIzY2I5NWM0NDljNzg4NWJlYWE1ZmE4ZWZjY2QwMTliNjU3MTYuLmMwZWE4
ZGQwNmRkNjJmZmQyZDcxYmNlNmRmOWEyOTk1M2Y4ZmJlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC00MDIsNyArNDAy
LDcgQEAgRU5ECiBFTkQKICAgICB9CiAKLSAgICBteSBAZW5hYmxlZFBlckNvbnRleHQ7CisgICAg
bXkgQGVuYWJsZWRQZXJDb250ZXh0RnVuY3Rpb25zOwogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9u
IChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICBteSAkYXR0ckV4dCA9ICRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXM7CkBAIC00MTYsNyArNDE2LDcgQEAgRU5ECiAgICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJp
bmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCRh
dHRyRXh0LT57IlY4RW5hYmxlZFBlckNvbnRleHQifSkgewotICAgICAgICAgICAgcHVzaChAZW5h
YmxlZFBlckNvbnRleHQsICRmdW5jdGlvbik7CisgICAgICAgICAgICBwdXNoKEBlbmFibGVkUGVy
Q29udGV4dEZ1bmN0aW9ucywgJGZ1bmN0aW9uKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDI2
LDYgKzQyNiw3IEBAIEVORAogRU5ECiAgICAgfQogCisgICAgbXkgQGVuYWJsZWRQZXJDb250ZXh0
QXR0cmlidXRlczsKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRy
aWJ1dGVzfSkgewogICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFt
ZTsKICAgICAgICAgbXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlczsKQEAgLTQ0OSw3ICs0NTAsNyBAQCBFTkQKICAgICAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25k
aXRpb25hbFN0cmluZzsKICAgICAgICAgfQogICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhFbmFi
bGVkUGVyQ29udGV4dCJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBlbmFibGVkUGVyQ29udGV4dCwg
JGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBwdXNoKEBlbmFibGVkUGVyQ29udGV4dEF0dHJpYnV0
ZXMsICRhdHRyaWJ1dGUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00NjQsOSArNDY1LDIzIEBA
IEVORAogRU5ECiAgICAgfQogCi0gICAgaWYgKEBlbmFibGVkUGVyQ29udGV4dCkgeworICAgIGlm
IChAZW5hYmxlZFBlckNvbnRleHRBdHRyaWJ1dGVzKSB7CisgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsIDw8RU5EKTsKKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRp
ZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgJHtuYXRpdmVUeXBlfSopOworRU5ECisgICAgfSBl
bHNlIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOworICAgIHN0YXRpYyB2
b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCAk
e25hdGl2ZVR5cGV9KikgeyB9CitFTkQKKyAgICB9CisKKyAgICBpZiAoQGVuYWJsZWRQZXJDb250
ZXh0RnVuY3Rpb25zKSB7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKKyAg
ICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworRU5ECisgICAgfSBl
bHNlIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwotICAgIHN0YXRpYyB2
b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCAk
e2ltcGxDbGFzc05hbWV9Kik7CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90
b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKSB7IH0KIEVORAogICAgIH0KIApAQCAtODEzLDkgKzgyOCwyMSBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+ICR7aW1wbENsYXNzTmFtZX1Db25zdHJ1Y3RvckdldHRlcih2ODo6
TG9jYWw8djg6OlN0cgogICAgIFY4UGVyQ29udGV4dERhdGEqIHBlckNvbnRleHREYXRhID0gVjhQ
ZXJDb250ZXh0RGF0YTo6ZnJvbShpbmZvLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSk7CiAg
ICAgaWYgKCFwZXJDb250ZXh0RGF0YSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Ci0g
ICAgcmV0dXJuIHBlckNvbnRleHREYXRhLT5jb25zdHJ1Y3RvckZvclR5cGUoV3JhcHBlclR5cGVJ
bmZvOjp1bndyYXAoZGF0YSkpOwotfQorRU5ECiAKKyAgICBpZiAoJGltcGxDbGFzc05hbWUgZXEg
IkRPTVdpbmRvdyIpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwor
ICAgIHJldHVybiBwZXJDb250ZXh0RGF0YS0+Y29uc3RydWN0b3JGb3JUeXBlKFdyYXBwZXJUeXBl
SW5mbzo6dW53cmFwKGRhdGEpLCBWOERPTVdpbmRvdzo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSkt
PmRvY3VtZW50KCkpOworRU5ECisgICAgfSBlbHNpZiAoJGltcGxDbGFzc05hbWUgZXEgIldvcmtl
ckNvbnRleHQiKSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKKyAg
ICByZXR1cm4gcGVyQ29udGV4dERhdGEtPmNvbnN0cnVjdG9yRm9yVHlwZShXcmFwcGVyVHlwZUlu
Zm86OnVud3JhcChkYXRhKSwgVjhXb3JrZXJDb250ZXh0Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KSk7CitFTkQKKyAgICB9IGVsc2UgeworICAgICAgICBkaWUgIlVua25vd24gQ29udGV4dCAke2lt
cGxDbGFzc05hbWV9IgorICAgIH0KKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7
Cit9CiBFTkQKIH0KIApAQCAtMjAzNiwxMiArMjA2MywxMiBAQCBzdWIgR2VuZXJhdGVOYW1lZENv
bnN0cnVjdG9yQ2FsbGJhY2sKIAogICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJBY3RpdmVET01PYmplY3QifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxF
TkQpOwotV3JhcHBlclR5cGVJbmZvIFY4JHtpbXBsQ2xhc3NOYW1lfUNvbnN0cnVjdG9yOjppbmZv
ID0geyBWOCR7aW1wbENsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIFY4JHtpbXBs
Q2xhc3NOYW1lfTo6ZGVyZWZPYmplY3QsIFY4JHtpbXBsQ2xhc3NOYW1lfTo6dG9BY3RpdmVET01P
YmplY3QsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CitXcmFwcGVyVHlwZUlu
Zm8gVjgke2ltcGxDbGFzc05hbWV9Q29uc3RydWN0b3I6OmluZm8gPSB7IFY4JHtpbXBsQ2xhc3NO
YW1lfUNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSwgVjgke2ltcGxDbGFzc05hbWV9OjpkZXJlZk9i
amVjdCwgVjgke2ltcGxDbGFzc05hbWV9Ojp0b0FjdGl2ZURPTU9iamVjdCwgMCwgVjgke2ltcGxD
bGFzc05hbWV9OjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBw
ZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CiAKIEVORAogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci1XcmFwcGVyVHlwZUluZm8gVjgke2ltcGxDbGFzc05h
bWV9Q29uc3RydWN0b3I6OmluZm8gPSB7IFY4JHtpbXBsQ2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpH
ZXRUZW1wbGF0ZSwgMCwgMCwgMCwgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKK1dy
YXBwZXJUeXBlSW5mbyBWOCR7aW1wbENsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6aW5mbyA9IHsgVjgk
e2ltcGxDbGFzc05hbWV9Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlLCAwLCAwLCAwLCBWOCR7aW1w
bENsYXNzTmFtZX06Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcywgMCwgV3Jh
cHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKIAogRU5ECiAgICAgfQpAQCAtMjU1MCw2ICsyNTc3
LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBteSAkdmlzaWJsZUludGVyZmFj
ZU5hbWUgPSAkY29kZUdlbmVyYXRvci0+R2V0VmlzaWJsZUludGVyZmFjZU5hbWUoJGRhdGFOb2Rl
KTsKICAgICBteSAkY2xhc3NOYW1lID0gIlY4JGludGVyZmFjZU5hbWUiOwogICAgIG15ICRpbXBs
Q2xhc3NOYW1lID0gJGludGVyZmFjZU5hbWU7CisgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRp
dmVUeXBlRm9yQ29udmVyc2lvbnMoJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAKICAgICAj
IC0gQWRkIGRlZmF1bHQgaGVhZGVyIHRlbXBsYXRlCiAgICAgcHVzaChAaW1wbEZpeGVkSGVhZGVy
LCBHZW5lcmF0ZUltcGxlbWVudGF0aW9uQ29udGVudEhlYWRlcigkZGF0YU5vZGUpKTsKQEAgLTI1
ODAsNyArMjYwOCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICBteSAkV3Jh
cHBlclR5cGVQcm90b3R5cGUgPSAkZGF0YU5vZGUtPmlzRXhjZXB0aW9uID8gIldyYXBwZXJUeXBl
RXJyb3JQcm90b3R5cGUiIDogIldyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIjsKIAotICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICJXcmFwcGVyVHlwZUluZm8gJHtjbGFzc05hbWV9OjppbmZv
ID0geyAke2NsYXNzTmFtZX06OkdldFRlbXBsYXRlLCAke2NsYXNzTmFtZX06OmRlcmVmT2JqZWN0
LCAkdG9BY3RpdmUsICRkb21WaXNpdG9yLCAkcGFyZW50Q2xhc3NJbmZvLCAkV3JhcHBlclR5cGVQ
cm90b3R5cGUgfTtcblxuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIldyYXBwZXJU
eXBlSW5mbyAke2NsYXNzTmFtZX06OmluZm8gPSB7ICR7Y2xhc3NOYW1lfTo6R2V0VGVtcGxhdGUs
ICR7Y2xhc3NOYW1lfTo6ZGVyZWZPYmplY3QsICR0b0FjdGl2ZSwgJGRvbVZpc2l0b3IsICR7Y2xh
c3NOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAkcGFyZW50Q2xh
c3NJbmZvLCAkV3JhcHBlclR5cGVQcm90b3R5cGUgfTtcblxuIik7CiAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIm5hbWVzcGFjZSAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbCB7XG5cbiIp
OwogCiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgInRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2
b2lkIFY4X1VTRShUKSB7IH1cblxuIik7CkBAIC0yOTkwLDcgKzMwMTgsNiBAQCBFTkQKIEVORAog
ICAgIH0KIAotICAgIG15ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZUZvckNvbnZlcnNpb25z
KCRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOwogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVO
RCk7CiAKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKQEAgLTMwMzIsNTIgKzMwNTks
NTkgQEAgYm9vbCAke2NsYXNzTmFtZX06Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSkKIAogRU5ECiAKLSAgICBpZiAoQGVuYWJsZWRQZXJDb250ZXh0QXR0cmlidXRlcyBv
ciBAZW5hYmxlZFBlckNvbnRleHRGdW5jdGlvbnMpIHsKKyAgICBpZiAoQGVuYWJsZWRQZXJDb250
ZXh0QXR0cmlidXRlcykgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotdm9p
ZCAke2NsYXNzTmFtZX06Omluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGluc3RhbmNlLCAke2ltcGxDbGFzc05hbWV9KiBpbXBsKQordm9pZCAke2NsYXNz
TmFtZX06Omluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGluc3RhbmNlLCAke25hdGl2ZVR5cGV9KiBpbXBsKQogewogICAgIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBwcm90byA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChpbnN0YW5jZS0+R2V0UHJv
dG90eXBlKCkpOwogICAgIC8vIFdoZW4gYnVpbGRpbmcgUXRXZWJraXQgd2l0aCBWOCB0aGlzIHZh
cmlhYmxlIGlzIHVudXNlZCB3aGVuIG5vbmUgb2YgdGhlIGZlYXR1cmVzIGFyZSBlbmFibGVkLgog
ICAgIFVOVVNFRF9QQVJBTShwcm90byk7CiBFTkQKIAotICAgICAgICBpZiAoQGVuYWJsZWRQZXJD
b250ZXh0QXR0cmlidXRlcykgewotICAgICAgICAgICAgIyBTZXR1cCB0aGUgZW5hYmxlLWJ5LXNl
dHRpbmdzIGF0dHJzIGlmIHdlIGhhdmUgdGhlbQotICAgICAgICAgICAgZm9yZWFjaCBteSAkcnVu
dGltZUF0dHIgKEBlbmFibGVkUGVyQ29udGV4dEF0dHJpYnV0ZXMpIHsKLSAgICAgICAgICAgICAg
ICBteSAkZW5hYmxlRnVuY3Rpb24gPSBHZXRDb250ZXh0RW5hYmxlRnVuY3Rpb24oJHJ1bnRpbWVB
dHRyLT5zaWduYXR1cmUpOwotICAgICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9
ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRydW50aW1lQXR0ci0+
c2lnbmF0dXJlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2lmICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCR7ZW5hYmxlRnVuY3Rpb259KGltcGwt
PmRvY3VtZW50KCkpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0
ZSBhdHRyRGF0YSA9XFxcbiIpOwotICAgICAgICAgICAgICAgIEdlbmVyYXRlU2luZ2xlQmF0Y2hl
ZEF0dHJpYnV0ZSgkaW50ZXJmYWNlTmFtZSwgJHJ1bnRpbWVBdHRyLCAiOyIsICIgICAgIik7Ci0g
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKyAgICAgICAgIyBTZXR1
cCB0aGUgZW5hYmxlLWJ5LXNldHRpbmdzIGF0dHJzIGlmIHdlIGhhdmUgdGhlbQorICAgICAgICBm
b3JlYWNoIG15ICRydW50aW1lQXR0ciAoQGVuYWJsZWRQZXJDb250ZXh0QXR0cmlidXRlcykgewor
ICAgICAgICAgICAgbXkgJGVuYWJsZUZ1bmN0aW9uID0gR2V0Q29udGV4dEVuYWJsZUZ1bmN0aW9u
KCRydW50aW1lQXR0ci0+c2lnbmF0dXJlKTsKKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0
cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRydW50aW1l
QXR0ci0+c2lnbmF0dXJlKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jaWYg
JHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgke2VuYWJsZUZ1bmN0aW9ufShpbXBsLT5k
b2N1bWVudCgpKSkge1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBhdHRy
RGF0YSA9XFxcbiIpOworICAgICAgICAgICAgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRl
KCRpbnRlcmZhY2VOYW1lLCAkcnVudGltZUF0dHIsICI7IiwgIiAgICAiKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAgICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6
Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEpOwogRU5ECi0gICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIH1cbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKICAgICAgICAgfQorICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworfQorRU5E
CisgICAgfQogCisgICAgaWYgKEBlbmFibGVkUGVyQ29udGV4dEZ1bmN0aW9ucykgeworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwordm9pZCAke2NsYXNzTmFtZX06Omluc3RhbGxQ
ZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHByb3Rv
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIFVOVVNFRF9QQVJBTShw
cm90byk7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworRU5ECiAgICAgICAgICMgU2V0dXAg
dGhlIGVuYWJsZS1ieS1zZXR0aW5ncyBmdW5jdGlvbnMgaWYgd2UgaGF2ZSB0aGVtCi0gICAgICAg
IGlmIChAZW5hYmxlZFBlckNvbnRleHRGdW5jdGlvbnMpIHsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAgPDxFTkQpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsK
ICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZSA9IHY4OjpTaWdu
YXR1cmU6Ok5ldyhHZXRUZW1wbGF0ZSgpKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25h
dHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiBFTkQKIAotICAg
ICAgICAgICAgZm9yZWFjaCBteSAkcnVudGltZUZ1bmMgKEBlbmFibGVkUGVyQ29udGV4dEZ1bmN0
aW9ucykgewotICAgICAgICAgICAgICAgIG15ICRlbmFibGVGdW5jdGlvbiA9IEdldENvbnRleHRF
bmFibGVGdW5jdGlvbigkcnVudGltZUZ1bmMtPnNpZ25hdHVyZSk7Ci0gICAgICAgICAgICAgICAg
bXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9u
YWxTdHJpbmcoJHJ1bnRpbWVGdW5jLT5zaWduYXR1cmUpOwotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
JHtlbmFibGVGdW5jdGlvbn0oaW1wbC0+ZG9jdW1lbnQoKSkpIHtcbiIpOwotICAgICAgICAgICAg
ICAgIG15ICRuYW1lID0gJHJ1bnRpbWVGdW5jLT5zaWduYXR1cmUtPm5hbWU7Ci0gICAgICAgICAg
ICAgICAgbXkgJGNhbGxiYWNrID0gR2V0RnVuY3Rpb25UZW1wbGF0ZUNhbGxiYWNrTmFtZSgkcnVu
dGltZUZ1bmMsICRpbnRlcmZhY2VOYW1lKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgPDxFTkQpOworICAgICAgICBmb3JlYWNoIG15ICRydW50aW1lRnVuYyAoQGVuYWJsZWRQ
ZXJDb250ZXh0RnVuY3Rpb25zKSB7CisgICAgICAgICAgICBteSAkZW5hYmxlRnVuY3Rpb24gPSBH
ZXRDb250ZXh0RW5hYmxlRnVuY3Rpb24oJHJ1bnRpbWVGdW5jLT5zaWduYXR1cmUpOworICAgICAg
ICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29u
ZGl0aW9uYWxTdHJpbmcoJHJ1bnRpbWVGdW5jLT5zaWduYXR1cmUpOworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGNv
bnRleHQgJiYgY29udGV4dC0+aXNEb2N1bWVudCgpICYmICR7ZW5hYmxlRnVuY3Rpb259KHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4oY29udGV4dCkpKSB7XG4iKTsKKyAgICAgICAgICAgIG15ICRuYW1l
ID0gJHJ1bnRpbWVGdW5jLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgICAgICBteSAkY2FsbGJh
Y2sgPSBHZXRGdW5jdGlvblRlbXBsYXRlQ2FsbGJhY2tOYW1lKCRydW50aW1lRnVuYywgJGludGVy
ZmFjZU5hbWUpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKICAgICAg
ICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIiR7bmFtZX0iKSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldygke2NhbGxiYWNrfSwgdjhVbmRlZmluZWQoKSwgZGVmYXVsdFNpZ25h
dHVyZSktPkdldEZ1bmN0aW9uKCkpOwogRU5ECi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgfVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIj
ZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25h
bFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQogCiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CkBAIC0zNDI0LDE5ICszNDU4LDkgQEAgRU5ECiAK
ICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gd3Jh
cHBlcjsKLUVORAogCi0gICAgbXkgJGhhc0VuYWJsZWRQZXJDb250ZXh0RnVuY3Rpb25zID0gMDsK
LSAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30pIHsKLSAg
ICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhF
bmFibGVkUGVyQ29udGV4dCJ9KSB7Ci0gICAgICAgICAgICAkaGFzRW5hYmxlZFBlckNvbnRleHRG
dW5jdGlvbnMgPSAxOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmICgkaGFzRW5hYmxlZFBlckNv
bnRleHRGdW5jdGlvbnMpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKICAg
ICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7CiBFTkQK
LSAgICB9CiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBl
ckZvciR7ZG9tTWFwTmFtZX0oaW1wbCwgd3JhcHBlciwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5
LmNwcAppbmRleCBkY2YzNTkwZDg0YmQ0MjYyZjhjYTJkY2UyZjA1ZDZjNzJjOTE2OTA4Li5hMmYw
YTUxMWJlZDBkM2JiNjUxYjQ3ZTM1ZTdlODM1Njc4OTBlM2MyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5j
cHAKQEAgLTQyLDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XcmFwcGVyVHlw
ZUluZm8gVjhGbG9hdDY0QXJyYXk6OmluZm8gPSB7IFY4RmxvYXQ2NEFycmF5OjpHZXRUZW1wbGF0
ZSwgVjhGbG9hdDY0QXJyYXk6OmRlcmVmT2JqZWN0LCAwLCAwLCAmVjhBcnJheUJ1ZmZlclZpZXc6
OmluZm8sIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CitXcmFwcGVyVHlwZUluZm8gVjhG
bG9hdDY0QXJyYXk6OmluZm8gPSB7IFY4RmxvYXQ2NEFycmF5OjpHZXRUZW1wbGF0ZSwgVjhGbG9h
dDY0QXJyYXk6OmRlcmVmT2JqZWN0LCAwLCAwLCBWOEZsb2F0NjRBcnJheTo6aW5zdGFsbFBlckNv
bnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAmVjhBcnJheUJ1ZmZlclZpZXc6OmluZm8sIFdyYXBw
ZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CiAKIG5hbWVzcGFjZSBGbG9hdDY0QXJyYXlWOEludGVy
bmFsIHsKIApAQCAtMTY5LDYgKzE2OSw4IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhGbG9h
dDY0QXJyYXk6OndyYXBTbG93KFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBpbXBsLCB2CiAKICAg
ICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gd3JhcHBl
cjsKKworICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgp
KTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01X
cmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbCwgd3JhcHBlciwgaXNvbGF0ZSk7
CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5N
YXJrSW5kZXBlbmRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKaW5kZXggYzBmZTk3MjA4NWViODFmZTMz
MjMyZDgyOTJhMmNlOTllYjQ3MWI0Yi4uNjgxOWM3M2NiODVmNDVjNzk4NTZmNjdmNDk2N2Q5ZmZl
MWVlODlmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAg
IHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gaW5mbzsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogICAgIHN0
YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZhdWx0V3JhcHBlckludGVy
bmFsRmllbGRDb3VudCArIDA7CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm9w
ZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIEZsb2F0NjRBcnJheSopIHsgfQorICAgIHN0
YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgeyB9CiBwcml2YXRlOgogICAg
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KFBhc3NSZWZQdHI8RmxvYXQ2
NEFycmF5Piwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCAzZTJiMWE5
NzQ2M2RhMzg4NjZjODZiNWJiOWUzMzZmZjk2ZTRlYWIzLi5iNTkyNGZmY2ZlOTg2MDZhMjZlOGNi
NTE2MGJlNzJlNTY1NzJkN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApA
QCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdyYXBwZXJUeXBlSW5m
byBWOFRlc3RBY3RpdmVET01PYmplY3Q6OmluZm8gPSB7IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6
R2V0VGVtcGxhdGUsIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6ZGVyZWZPYmplY3QsIDAsIDAsIDAs
IFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CitXcmFwcGVyVHlwZUluZm8gVjhUZXN0QWN0
aXZlRE9NT2JqZWN0OjppbmZvID0geyBWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRl
LCBWOFRlc3RBY3RpdmVET01PYmplY3Q6OmRlcmVmT2JqZWN0LCAwLCAwLCBWOFRlc3RBY3RpdmVE
T01PYmplY3Q6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcywgMCwgV3JhcHBl
clR5cGVPYmplY3RQcm90b3R5cGUgfTsKIAogbmFtZXNwYWNlIFRlc3RBY3RpdmVET01PYmplY3RW
OEludGVybmFsIHsKIApAQCAtMTk3LDYgKzE5Nyw4IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
VjhUZXN0QWN0aXZlRE9NT2JqZWN0Ojp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RBY3RpdmVET01P
CiAKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4g
d3JhcHBlcjsKKworICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBs
LmdldCgpKTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0g
VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbCwgd3JhcHBlciwgaXNv
bGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBlckhh
bmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaAppbmRl
eCAyNTgwM2E0NTE5MjYxOWJmYzg0NzRjNTViMjVhNWExYWFlZDY2Mjk2Li5hZGE1OTE5OTExMzli
NzVkZmU3MzA4ZGVlODc5MzdjN2NlZTY2NjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVj
dC5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVy
bmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwog
ICAgIHN0YXRpYyBib29sIG5hbWVkU2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4g
aG9zdCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4ga2V5LCB2ODo6QWNjZXNzVHlwZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gZGF0YSk7CiAgICAgc3RhdGljIGJvb2wgaW5kZXhlZFNlY3VyaXR5Q2hlY2so
djg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHVpbnQzMl90IGluZGV4LCB2ODo6QWNjZXNzVHlw
ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGF0YSk7CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBl
ckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRlc3RBY3RpdmVET01P
YmplY3QqKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVBy
b3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
IHsgfQogcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xv
dyhQYXNzUmVmUHRyPFRlc3RBY3RpdmVET01PYmplY3Q+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmNwcAppbmRleCBhYjViNWJiODE0NGUzYWJhNzZlNjQ2OTkyOTNjODFhNWE3
NTIzOWQ4Li5lZWY0NDNiNjFiMzJmNmM2ZTk2NTQzZjU5MDJmOTVmMzI5Mzc2MmRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1XcmFwcGVyVHlwZUluZm8gVjhUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXI6OmluZm8gPSB7IFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRUZW1wbGF0ZSwgVjhUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXI6OmRlcmVmT2JqZWN0LCAwLCAwLCAwLCBXcmFwcGVyVHlwZU9iamVj
dFByb3RvdHlwZSB9OworV3JhcHBlclR5cGVJbmZvIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpp
bmZvID0geyBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6R2V0VGVtcGxhdGUsIFY4VGVzdEN1c3Rv
bU5hbWVkR2V0dGVyOjpkZXJlZk9iamVjdCwgMCwgMCwgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6
Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcywgMCwgV3JhcHBlclR5cGVPYmpl
Y3RQcm90b3R5cGUgfTsKIAogbmFtZXNwYWNlIFRlc3RDdXN0b21OYW1lZEdldHRlclY4SW50ZXJu
YWwgewogCkBAIC0xMzEsNiArMTMxLDggQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RD
dXN0b21OYW1lZEdldHRlcjo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0Q3VzdG9tTmEKIAogICAg
IGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVy
OworCisgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkp
OwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdy
YXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVyLCBpc29sYXRlKTsK
ICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1h
cmtJbmRlcGVuZGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAppbmRleCA0
NzM4NThmMmVmZmMxMGE4N2VhNzAyYzM1Mzc0ZTgwOTFlZWQxOWE3Li4xMTQ4YjI1YzE1MzJkNDU3
N2IwMjMyNDc2NjJkNWI5MDI2NzRkOTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIuaApAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5m
byBpbmZvOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbmFtZWRQcm9wZXJ0eUdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4sIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mKTsKICAg
ICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJ
bnRlcm5hbEZpZWxkQ291bnQgKyAwOworICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0
UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIq
KSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRp
ZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIHsgfQog
cHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNz
UmVmUHRyPFRlc3RDdXN0b21OYW1lZEdldHRlcj4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0
cnVjdG9yLmNwcAppbmRleCAwYjk1YzE3ODk4NDc5MmI5NWM3YmFlOWJlNTgxMDAwOWE2YmEwNWUy
Li43MzY5MTFhZWYwNDMwYjJlN2Q1MGExOTBmOWU2MmQwOWJiMDJmNWM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotV3JhcHBlclR5cGVJbmZvIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmluZm8g
PSB7IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlLCBWOFRlc3RFdmVudENvbnN0
cnVjdG9yOjpkZXJlZk9iamVjdCwgMCwgMCwgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUg
fTsKK1dyYXBwZXJUeXBlSW5mbyBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjppbmZvID0geyBWOFRl
c3RFdmVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSwgVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
ZGVyZWZPYmplY3QsIDAsIDAsIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6Omluc3RhbGxQZXJDb250
ZXh0UHJvdG90eXBlUHJvcGVydGllcywgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsK
IAogbmFtZXNwYWNlIFRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbCB7CiAKQEAgLTE2OCw2
ICsxNjgsOCBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6
OndyYXBTbG93KFBhc3NSZWZQdHI8VGVzdEV2ZW50Q29ucwogCiAgICAgaWYgKFVOTElLRUxZKHdy
YXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisKKyAgICBpbnN0YWxs
UGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7CiAgICAgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFw
cGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVw
ZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaAppbmRleCA2OTI2Y2ViZDRiZDk5M2M2NzJi
N2JkNTYxYWNhYjQ1ZTEzOWRhZWMwLi45Yzk5MzQ0YzFhMzI4OTZkNTI3MThkNTg5M2JjY2E3MjRi
NmE1ZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKQEAgLTQ4LDYgKzQ4LDgg
QEAgcHVibGljOgogICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gaW5mbzsKICAgICBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYpOwogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZh
dWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CisgICAgc3RhdGljIHZvaWQgaW5zdGFs
bFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRlc3RFdmVudENv
bnN0cnVjdG9yKikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5
cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKSB7IH0KIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cFNsb3coUGFzc1JlZlB0cjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4sIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRU
YXJnZXQuY3BwCmluZGV4IDFlMTFmNGQ3NDVjYmFkN2UyNDU3ZGE4NDc1OTEzNjM2NzhhYTJlNWYu
LjUxNzk4NGQ4ZjFjOGM1ZWE4ZjI3YWM3ZDgyNzU5MDkwYWQ3YTg1ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2
ZW50VGFyZ2V0LmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVdyYXBwZXJUeXBlSW5mbyBWOFRlc3RFdmVudFRhcmdldDo6aW5mbyA9IHsgVjhUZXN0RXZlbnRU
YXJnZXQ6OkdldFRlbXBsYXRlLCBWOFRlc3RFdmVudFRhcmdldDo6ZGVyZWZPYmplY3QsIDAsIDAs
IDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CitXcmFwcGVyVHlwZUluZm8gVjhUZXN0
RXZlbnRUYXJnZXQ6OmluZm8gPSB7IFY4VGVzdEV2ZW50VGFyZ2V0OjpHZXRUZW1wbGF0ZSwgVjhU
ZXN0RXZlbnRUYXJnZXQ6OmRlcmVmT2JqZWN0LCAwLCAwLCBWOFRlc3RFdmVudFRhcmdldDo6aW5z
dGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVjdFBy
b3RvdHlwZSB9OwogCiBuYW1lc3BhY2UgVGVzdEV2ZW50VGFyZ2V0VjhJbnRlcm5hbCB7CiAKQEAg
LTE5Miw2ICsxOTIsOCBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEV2ZW50VGFyZ2V0
Ojp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RFdmVudFRhcmdldD4gaQogCiAgICAgaWYgKFVOTElL
RUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisKKyAgICBp
bnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7CiAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6c2V0
SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICgh
aGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5k
ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oCmluZGV4IDYxODJiMjc1OGVkMGQ4NDcyNzkxMDE5
MTFmZjdlZWQyMGI0NGE5M2YuLmVhNTMwN2JiODZmODZjZmE4YjE5NGE1ODlkN2RhMDMwYzAwNTZi
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oCkBAIC00OSw2ICs0OSw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVkUHJvcGVydHlHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJik7CiAgICAgc3RhdGljIGNv
bnN0IGludCBldmVudExpc3RlbmVyQ2FjaGVJbmRleCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5h
bEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50
ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7CisgICAgc3RhdGljIHZv
aWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRl
c3RFdmVudFRhcmdldCopIHsgfQorICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJv
dG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikgeyB9CiBwcml2YXRlOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBTbG93KFBhc3NSZWZQdHI8VGVzdEV2ZW50VGFyZ2V0Piwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9u
LmNwcAppbmRleCA1NTg5NmU4YzhiYzM0OGM4MDkyNTExM2ExMjRjNmE4MTY3YTIyZDNiLi41NjNk
MDg0YTdmYTM0YTg5Y2RjZjM5NDFjZTcyNTI4OTNkMDMxZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9u
LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdyYXBwZXJU
eXBlSW5mbyBWOFRlc3RFeGNlcHRpb246OmluZm8gPSB7IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVt
cGxhdGUsIFY4VGVzdEV4Y2VwdGlvbjo6ZGVyZWZPYmplY3QsIDAsIDAsIDAsIFdyYXBwZXJUeXBl
RXJyb3JQcm90b3R5cGUgfTsKK1dyYXBwZXJUeXBlSW5mbyBWOFRlc3RFeGNlcHRpb246OmluZm8g
PSB7IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUsIFY4VGVzdEV4Y2VwdGlvbjo6ZGVyZWZP
YmplY3QsIDAsIDAsIFY4VGVzdEV4Y2VwdGlvbjo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQ
cm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZUVycm9yUHJvdG90eXBlIH07CiAKIG5hbWVzcGFjZSBU
ZXN0RXhjZXB0aW9uVjhJbnRlcm5hbCB7CiAKQEAgLTEyMiw2ICsxMjIsOCBAQCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IFY4VGVzdEV4Y2VwdGlvbjo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0RXhj
ZXB0aW9uPiBpbXBsLAogCiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAg
ICAgICAgcmV0dXJuIHdyYXBwZXI7CisKKyAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMo
d3JhcHBlciwgaW1wbC5nZXQoKSk7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3Jh
cHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGws
IHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAg
ICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKaW5k
ZXggNmYyMDEwZGFjZTRlNzg1N2I2ZmUxYTJjOTNmMWFiMjI3ZmNjMWU3My4uMGUzYzFmZTU5Zjhl
NmIwZjcwYzUyY2M3MWFmZjFmZGUzNDg3MTU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaApAQCAtNDYs
NiArNDYsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRET01XcmFwcGVyKERPTURh
dGFTdG9yZSosIHZvaWQqLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pik7CiAgICAgc3RhdGlj
IFdyYXBwZXJUeXBlSW5mbyBpbmZvOwogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVs
ZENvdW50ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CisgICAgc3Rh
dGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4sIFRlc3RFeGNlcHRpb24qKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4
dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopIHsgfQogcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RFeGNlcHRpb24+LCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZh
Y2UuY3BwCmluZGV4IDFmMWM0YzlkMDFmYjE0NjUzNDkxYWJmOTcyODgxMzA3Y2ZkMTBjNzAuLjE3
M2MyMzNiMzIwMWE5ZWJlZTFhMzA1NWQxOTYxMTFjMTAzYjVlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZh
Y2UuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV3JhcHBl
clR5cGVJbmZvIFY4VGVzdEludGVyZmFjZTo6aW5mbyA9IHsgVjhUZXN0SW50ZXJmYWNlOjpHZXRU
ZW1wbGF0ZSwgVjhUZXN0SW50ZXJmYWNlOjpkZXJlZk9iamVjdCwgVjhUZXN0SW50ZXJmYWNlOjp0
b0FjdGl2ZURPTU9iamVjdCwgMCwgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKK1dy
YXBwZXJUeXBlSW5mbyBWOFRlc3RJbnRlcmZhY2U6OmluZm8gPSB7IFY4VGVzdEludGVyZmFjZTo6
R2V0VGVtcGxhdGUsIFY4VGVzdEludGVyZmFjZTo6ZGVyZWZPYmplY3QsIFY4VGVzdEludGVyZmFj
ZTo6dG9BY3RpdmVET01PYmplY3QsIDAsIFY4VGVzdEludGVyZmFjZTo6aW5zdGFsbFBlckNvbnRl
eHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9Owog
CiBuYW1lc3BhY2UgVGVzdEludGVyZmFjZVY4SW50ZXJuYWwgewogCkBAIC0zNjEsNiArMzYxLDgg
QEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RJbnRlcmZhY2U6OndyYXBTbG93KFBhc3NS
ZWZQdHI8VGVzdEludGVyZmFjZT4gaW1wbCwKIAogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklz
RW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOworCisgICAgaW5zdGFsbFBlckNvbnRl
eHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFj
dGl2ZURPTU9iamVjdChpbXBsLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVu
ZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEludGVyZmFjZS5oCmluZGV4IGE3MjExODIyMzkwZjA4YjUzMDM3OWI4ZmYxMTA0YTIxNjhh
ZjkwMzQuLmU0ZjU4OTliYmY3NzlkZmQzNDg5MDJjNTNhMTA3NDRmZDUwNmQ1ZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
SW50ZXJmYWNlLmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7
CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuYW1lZFByb3BlcnR5U2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4sIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mKTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4
RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOworICAgIHN0YXRpYyB2b2lkIGlu
c3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBUZXN0SW50
ZXJmYWNlKikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQ
cm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KSB7IH0KIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcFNs
b3coUGFzc1JlZlB0cjxUZXN0SW50ZXJmYWNlPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IGFmOTYxN2NiZDAwYjQ0ZWZkYTUzMDE1OWJiOTY3
ZDQ1MmUzOTA1YmQuLmMzZmNhMDQ3NjM2ZmVhZmRhZTFhNDg0OWEyNDMxYjcwN2E5ZTc4ZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XcmFwcGVyVHlwZUluZm8gVjhUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW5mbyA9IHsgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcjo6R2V0VGVtcGxhdGUsIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmRlcmVmT2Jq
ZWN0LCAwLCAwLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OworV3JhcHBlclR5cGVJ
bmZvIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmluZm8gPSB7IFY4VGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXI6OkdldFRlbXBsYXRlLCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
OjpkZXJlZk9iamVjdCwgMCwgMCwgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW5zdGFs
bFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3Rv
dHlwZSB9OwogCiBuYW1lc3BhY2UgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJWOEludGVybmFs
IHsKIApAQCAtMTMxLDYgKzEzMSw4IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0TWVkCiAKICAgICBp
ZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsK
KworICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsK
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFw
cGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbCwgd3JhcHBlciwgaXNvbGF0ZSk7CiAg
ICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJr
SW5kZXBlbmRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5o
CmluZGV4IGFkZjM0NWVkODU0MzAwYzJmOGFjYTNkOTdmN2MyOTg5ZmY1ODMwODUuLmQ5ODU2MGRi
ZTA2Nzk0MjY4Y2Q0MTM0MGRjOWI4MjAzNjUyZWZkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuaApAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgdmlzaXRET01XcmFwcGVyKERPTURhdGFTdG9yZSosIHZvaWQqLCB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0Pik7CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBpbmZvOwogICAg
IHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZhdWx0V3JhcHBlcklu
dGVybmFsRmllbGRDb3VudCArIDA7CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQ
cm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyKikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9w
ZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7
IH0KIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcFNsb3co
UGFzc1JlZlB0cjxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4sIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RO
YW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCBmNTk4ZDU4ODdjMzRlMTZlNDlmY2MyZTY4ZmViZTYx
YzljYWU1OWFhLi5mMmVkODE5ZGYwODAxYzE1ZDZiZjZmMDQ5OTVlODc1NGM3OWFhMTVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotV3JhcHBlclR5cGVJbmZvIFY4VGVzdE5hbWVkQ29uc3RydWN0
b3I6OmluZm8gPSB7IFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlLCBWOFRlc3RO
YW1lZENvbnN0cnVjdG9yOjpkZXJlZk9iamVjdCwgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6dG9B
Y3RpdmVET01PYmplY3QsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CitXcmFw
cGVyVHlwZUluZm8gVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsgVjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OmRlcmVmT2Jq
ZWN0LCBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjp0b0FjdGl2ZURPTU9iamVjdCwgMCwgVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvcjo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAw
LCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OwogCiBuYW1lc3BhY2UgVGVzdE5hbWVkQ29u
c3RydWN0b3JWOEludGVybmFsIHsKIApAQCAtNDAsNyArNDAsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3ROYW1lZENvbnN0
cnVjdG9yVjhJbnRlcm5hbAogCi1XcmFwcGVyVHlwZUluZm8gVjhUZXN0TmFtZWRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yOjppbmZvID0geyBWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6
OkdldFRlbXBsYXRlLCBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpkZXJlZk9iamVjdCwgVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvcjo6dG9BY3RpdmVET01PYmplY3QsIDAsIDAsIFdyYXBwZXJUeXBlT2Jq
ZWN0UHJvdG90eXBlIH07CitXcmFwcGVyVHlwZUluZm8gVjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yOjppbmZvID0geyBWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6Okdl
dFRlbXBsYXRlLCBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpkZXJlZk9iamVjdCwgVjhUZXN0TmFt
ZWRDb25zdHJ1Y3Rvcjo6dG9BY3RpdmVET01PYmplY3QsIDAsIFY4VGVzdE5hbWVkQ29uc3RydWN0
b3I6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcywgMCwgV3JhcHBlclR5cGVP
YmplY3RQcm90b3R5cGUgfTsKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RO
YW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewpAQCAtMTcxLDYgKzE3MSw4IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvcjo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0TmFtZWRDb25zCiAKICAg
ICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gd3JhcHBl
cjsKKworICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgp
KTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01X
cmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3QoaW1wbCwgd3JhcHBlciwgaXNv
bGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBlckhh
bmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCmlu
ZGV4IGUxNmUyMTEwNDMwMzFmNmJhYWEwMjYxY2I3NTBlZWYwYTdjYjcxMzQuLmJlMmM4ZjdiOWE0
Y2ExNWU0MzZhYmY4OTExZmM5ZDQyMGI0YmNjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3Ry
dWN0b3IuaApAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdyYXBwZXJUeXBl
SW5mbyBpbmZvOwogICAgIHN0YXRpYyBBY3RpdmVET01PYmplY3QqIHRvQWN0aXZlRE9NT2JqZWN0
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxG
aWVsZENvdW50ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CisgICAg
c3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4sIFRlc3ROYW1lZENvbnN0cnVjdG9yKikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFs
bFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7IH0KIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4s
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3ROb2RlLmNwcAppbmRleCBhZjc3MmQ0MGRhZmQyYmM5OGYzYzU1NWMxM2JmY2Y0YzcxMzk2
Njk0Li40NzBjMzgyYzg5MmJlNWRkYjI5MzUzNDcxZDNlMzE2OWMzZDM2OGY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUu
Y3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV3JhcHBlclR5
cGVJbmZvIFY4VGVzdE5vZGU6OmluZm8gPSB7IFY4VGVzdE5vZGU6OkdldFRlbXBsYXRlLCBWOFRl
c3ROb2RlOjpkZXJlZk9iamVjdCwgMCwgMCwgJlY4Tm9kZTo6aW5mbywgV3JhcHBlclR5cGVPYmpl
Y3RQcm90b3R5cGUgfTsKK1dyYXBwZXJUeXBlSW5mbyBWOFRlc3ROb2RlOjppbmZvID0geyBWOFRl
c3ROb2RlOjpHZXRUZW1wbGF0ZSwgVjhUZXN0Tm9kZTo6ZGVyZWZPYmplY3QsIDAsIDAsIFY4VGVz
dE5vZGU6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcywgJlY4Tm9kZTo6aW5m
bywgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKIAogbmFtZXNwYWNlIFRlc3ROb2RlVjhJ
bnRlcm5hbCB7CiAKQEAgLTEzMiw2ICsxMzIsOCBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4
VGVzdE5vZGU6OndyYXBTbG93KFBhc3NSZWZQdHI8VGVzdE5vZGU+IGltcGwsIHY4OjpIYW5kbAog
CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdy
YXBwZXI7CisKKyAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5n
ZXQoKSk7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4
RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NTm9kZShpbXBsLCB3cmFwcGVyLCBpc29sYXRl
KTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxl
Lk1hcmtJbmRlcGVuZGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgKaW5kZXggNDJhNWM1NGU4NTFhNTJkMTE1N2I0NTZj
Y2JkY2QxZDhjZTc4NmViMS4uZGRlM2I1NWExYzg5OWU3OGQ0NGIwZmQ2OThjNWE0YTRiMTAxM2Qx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Tm9kZS5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV3JhcHBl
clR5cGVJbmZvIGluZm87CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1
Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKICAgICBzdGF0aWMgY29uc3QgaW50
IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQg
KyAwOworICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+LCBUZXN0Tm9kZSopIHsgfQorICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQ
ZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KikgeyB9CiBwcml2YXRlOgogICAgIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBTbG93KFBhc3NSZWZQdHI8VGVzdE5vZGU+LCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4
IDc3ODRlNjViNjZkNzA3OTA3NDI2MzRhYTlhYzRiY2NkZGI4ZTQ3MGMuLjE1M2UwOWQ3NjdkNzE3
YzUyNDJjMjU2NDI2NjJlNGEzMmM2YTRiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV3JhcHBlclR5cGVJbmZvIFY4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6aW5mbyA9IHsgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSwgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlOjpkZXJlZk9iamVjdCwgMCwgMCwgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsK
K1dyYXBwZXJUeXBlSW5mbyBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Omlu
Zm8gPSB7IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0VGVtcGxhdGUs
IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6ZGVyZWZPYmplY3QsIDAsIDAs
IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6aW5zdGFsbFBlckNvbnRleHRQ
cm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OwogCiBu
YW1lc3BhY2UgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWwgewog
CkBAIC0zMTQsNiArMzE0LDggQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OndyYXBTbG93KFBhc3NSZWZQdHIKIAogICAgIGlmIChV
TkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOworCisg
ICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwogICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6
OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBp
ZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRl
cGVuZGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5oCmluZGV4IGI4YzNjZGIxOWEyNDg4OThjM2NjYTkxZjVjMDhkMTVlMmQ4YjI0
NDYuLjQzYjFjYzc4ZWNlNDU5OTdkMmIwNWE4NmY4YTk5OGNjNjk3ZDdiODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKQEAgLTQ5
LDYgKzQ5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gaW5mbzsKICAg
ICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYpOwogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50
ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CisgICAgc3RhdGljIHZv
aWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBp
bnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIHsgfQogcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2U+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4
dCwgdjg6Oklzb2xhdGUqKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9OUFY4T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmpl
Y3QuY3BwCmluZGV4IDA2MzE0ZjMzODI3YWRmMmRjZjhmMmMzY2I4NDgzZjNjMzgyZjhlNGQuLmU2
NTg5NjQxNzA3OTIxOGU1OWQ4OGM0OTE0YmM2NDM0Y2JhODk2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV3JhcHBlclR5cGVJbmZvKiBucE9iamVjdFR5cGVJbmZvKCkKIHsKLSAgICBz
dGF0aWMgV3JhcHBlclR5cGVJbmZvIHR5cGVJbmZvID0geyAwLCAwLCAwLCAwLCAwLCBXcmFwcGVy
VHlwZU9iamVjdFByb3RvdHlwZSB9OworICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gdHlwZUlu
Zm8gPSB7IDAsIDAsIDAsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CiAg
ICAgcmV0dXJuICZ0eXBlSW5mbzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdpbmRvd1NoZWxsLmNwcAppbmRleCAxOTM2YWU4ZDBhNGI4M2RhMTA0YmNkMWU1Yzk0
NTJjYTNjNzM5NDg4Li5lM2VjYjQ2MzUxMjVlM2MyN2FhNjg3ZjExYTZjNDkxYmNhMzU1YmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApA
QCAtNDMzLDggKzQzMyw5IEBAIHZvaWQgVjhET01XaW5kb3dTaGVsbDo6Y3JlYXRlQ29udGV4dCgp
CiAKIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5zdGFsbERPTVdpbmRvdygpCiB7Ci0gICAgRE9N
V2luZG93KiB3aW5kb3cgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKLSAgICB2
ODo6TG9jYWw8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IFY4T2JqZWN0Q29uc3RydWN0b3I6
Om5ld0luc3RhbmNlKFY4UGVyQ29udGV4dERhdGE6OmZyb20obV9jb250ZXh0LmdldCgpKS0+Y29u
c3RydWN0b3JGb3JUeXBlKCZWOERPTVdpbmRvdzo6aW5mbykpOworICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgRE9NV2luZG93KiB3aW5kb3cgPSBkb2N1
bWVudC0+ZG9tV2luZG93KCk7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBw
ZXIgPSBWOE9iamVjdENvbnN0cnVjdG9yOjpuZXdJbnN0YW5jZShWOFBlckNvbnRleHREYXRhOjpm
cm9tKG1fY29udGV4dC5nZXQoKSktPmNvbnN0cnVjdG9yRm9yVHlwZSgmVjhET01XaW5kb3c6Omlu
Zm8sIGRvY3VtZW50KSk7CiAgICAgaWYgKHdpbmRvd1dyYXBwZXIuSXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuY3BwCmluZGV4IGZlYmFlNzVhMWFmM2Y1NjZmYTM2MzQ5NTEzMDVlZGYzMmFhMGNlYTAuLmZi
YjlmZDJjOTNlM2IwZDVmOGEwNDBmMzZjZWVkZDIxYzhkYjVlODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QoRG9jdW1l
bnQqIGRvY3VtZW50LCBXcmFwCiAgICAgZWxzZQogICAgICAgICBwZXJDb250ZXh0RGF0YSA9IFY4
UGVyQ29udGV4dERhdGE6OmZyb20odjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKSk7CiAKLSAgICB2
ODo6TG9jYWw8djg6Ok9iamVjdD4gaW5zdGFuY2UgPSBwZXJDb250ZXh0RGF0YSA/IHBlckNvbnRl
eHREYXRhLT5jcmVhdGVXcmFwcGVyRnJvbUNhY2hlKHR5cGUpIDogVjhPYmplY3RDb25zdHJ1Y3Rv
cjo6bmV3SW5zdGFuY2UodHlwZS0+Z2V0VGVtcGxhdGUoKS0+R2V0RnVuY3Rpb24oKSk7CisgICAg
djg6OkxvY2FsPHY4OjpPYmplY3Q+IGluc3RhbmNlID0gcGVyQ29udGV4dERhdGEgPyBwZXJDb250
ZXh0RGF0YS0+Y3JlYXRlV3JhcHBlckZyb21DYWNoZSh0eXBlLCBkb2N1bWVudCkgOiBWOE9iamVj
dENvbnN0cnVjdG9yOjpuZXdJbnN0YW5jZSh0eXBlLT5nZXRUZW1wbGF0ZSgpLT5HZXRGdW5jdGlv
bigpKTsKIAogICAgIC8vIEF2b2lkIHNldHRpbmcgdGhlIERPTSB3cmFwcGVyIGZvciBmYWlsZWQg
YWxsb2NhdGlvbnMuCiAgICAgaWYgKGluc3RhbmNlLklzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHAKaW5kZXggNjI1NDM5ZGEyM2Qw
NTIwMjQ1YTRhOWQxZmQzNmYwNjJlMDkzYWNhMi4uMTVlZmU1YTk1ZDk2ZTdjNTE1N2Y5MWFkZWQy
MmQ3YmU2NTA3MGI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQ
ZXJDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJD
b250ZXh0RGF0YS5jcHAKQEAgLTEwMCwxMyArMTAwLDEzIEBAIGJvb2wgVjhQZXJDb250ZXh0RGF0
YTo6aW5pdCgpCiAKICN1bmRlZiBWOF9TVE9SRV9QUklNT1JESUFMCiAKLXY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBWOFBlckNvbnRleHREYXRhOjpjcmVhdGVXcmFwcGVyRnJvbUNhY2hlU2xvd0Nhc2Uo
V3JhcHBlclR5cGVJbmZvKiB0eXBlKQordjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4UGVyQ29udGV4
dERhdGE6OmNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZShXcmFwcGVyVHlwZUluZm8qIHR5
cGUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKCFtX2Vy
cm9yUHJvdG90eXBlLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX29iamVjdFByb3RvdHlwZS5p
c0VtcHR5KCkpOwogCiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKG1fY29udGV4dCk7Ci0g
ICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBjb25zdHJ1Y3RvckZvclR5cGUo
dHlwZSk7CisgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBjb25zdHJ1Y3Rv
ckZvclR5cGUodHlwZSwgY29udGV4dCk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGluc3Rh
bmNlID0gVjhPYmplY3RDb25zdHJ1Y3Rvcjo6bmV3SW5zdGFuY2UoZnVuY3Rpb24pOwogICAgIGlm
ICghaW5zdGFuY2UuSXNFbXB0eSgpKSB7CiAgICAgICAgIG1fd3JhcHBlckJvaWxlcnBsYXRlcy5z
ZXQodHlwZSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhpbnN0YW5jZSkpOwpAQCAt
MTE1LDcgKzExNSw3IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBWOFBlckNvbnRleHREYXRhOjpj
cmVhdGVXcmFwcGVyRnJvbUNhY2hlU2xvd0Nhc2UoV3JhcHBlclR5CiAgICAgcmV0dXJuIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PigpOwogfQogCi12ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOFBlckNv
bnRleHREYXRhOjpjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZShXcmFwcGVyVHlwZUluZm8qIHR5
cGUpCit2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOFBlckNvbnRleHREYXRhOjpjb25zdHJ1Y3Rv
ckZvclR5cGVTbG93Q2FzZShXcmFwcGVyVHlwZUluZm8qIHR5cGUsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKCFtX2Vycm9yUHJvdG90eXBlLmlzRW1wdHko
KSk7CiAgICAgQVNTRVJUKCFtX29iamVjdFByb3RvdHlwZS5pc0VtcHR5KCkpOwpAQCAtMTI5LDEx
ICsxMjksMTIgQEAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gVjhQZXJDb250ZXh0RGF0YTo6Y29u
c3RydWN0b3JGb3JUeXBlU2xvd0Nhc2UoV3JhcHBlclR5cGUKICAgICAgICAgcmV0dXJuIHY4OjpM
b2NhbDx2ODo6RnVuY3Rpb24+KCk7CiAKICAgICBmdW5jdGlvbi0+U2V0UHJvdG90eXBlKG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKTsKLQotICAgIGlmICh0eXBlLT53cmFwcGVyVHlwZVByb3RvdHlw
ZSA9PSBXcmFwcGVyVHlwZUVycm9yUHJvdG90eXBlKSB7Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHByb3RvdHlwZVZhbHVlID0gZnVuY3Rpb24tPkdldCh2ODo6U3RyaW5nOjpOZXdTeW1i
b2woInByb3RvdHlwZSIpKTsKLSAgICAgICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5Jc0VtcHR5KCkg
JiYgcHJvdG90eXBlVmFsdWUtPklzT2JqZWN0KCkpCi0gICAgICAgICAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdD46OkNhc3QocHJvdG90eXBlVmFsdWUpLT5TZXRQcm90b3R5cGUobV9lcnJvclByb3Rv
dHlwZS5nZXQoKSk7CisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcHJvdG90eXBlVmFsdWUgPSBm
dW5jdGlvbi0+R2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgicHJvdG90eXBlIikpOworICAgIGlm
ICghcHJvdG90eXBlVmFsdWUuSXNFbXB0eSgpICYmIHByb3RvdHlwZVZhbHVlLT5Jc09iamVjdCgp
KSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBwcm90b3R5cGVPYmplY3QgPSB2ODo6
TG9jYWw8djg6Ok9iamVjdD46OkNhc3QocHJvdG90eXBlVmFsdWUpOworICAgICAgICB0eXBlLT5p
bnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMocHJvdG90eXBlT2JqZWN0LCBjb250
ZXh0KTsKKyAgICAgICAgaWYgKHR5cGUtPndyYXBwZXJUeXBlUHJvdG90eXBlID09IFdyYXBwZXJU
eXBlRXJyb3JQcm90b3R5cGUpCisgICAgICAgICAgICBwcm90b3R5cGVPYmplY3QtPlNldFByb3Rv
dHlwZShtX2Vycm9yUHJvdG90eXBlLmdldCgpKTsKICAgICB9CiAKICAgICBtX2NvbnN0cnVjdG9y
TWFwLnNldCh0eXBlLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb24+OjpOZXcoZnVuY3Rpb24p
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuaAppbmRl
eCA4YzNjNDM3ZTI4YzA4MzFkZDAzMTU5MTQ2MDI3NTBmYjY1M2Y1MjA0Li4zNTU3YWRlNmQ1YWYx
ZmY0MTQ4MmQ2ZTQ2ZGRhMTVhY2IzZWE5YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQZXJDb250ZXh0RGF0YS5oCkBAIC02MywxOCArNjMsMTggQEAgcHVibGljOgogICAg
IC8vIFRvIGNyZWF0ZSBKUyBXcmFwcGVyIG9iamVjdHMsIHdlIGNyZWF0ZSBhIGNhY2hlIG9mIGEg
J2JvaWxlciBwbGF0ZScKICAgICAvLyBvYmplY3QsIGFuZCB0aGVuIHNpbXBseSBDbG9uZSB0aGF0
IG9iamVjdCBlYWNoIHRpbWUgd2UgbmVlZCBhIG5ldyBvbmUuCiAgICAgLy8gVGhpcyBpcyBmYXN0
ZXIgdGhhbiBnb2luZyB0aHJvdWdoIHRoZSBmdWxsIG9iamVjdCBjcmVhdGlvbiBwcm9jZXNzLgot
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyRnJvbUNhY2hlKFdyYXBwZXJU
eXBlSW5mbyogdHlwZSkKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlckZy
b21DYWNoZShXcmFwcGVyVHlwZUluZm8qIHR5cGUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCiAgICAgewogICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBib2lsZXJw
bGF0ZSA9IG1fd3JhcHBlckJvaWxlcnBsYXRlcy5nZXQodHlwZSk7Ci0gICAgICAgIHJldHVybiAh
Ym9pbGVycGxhdGUuSXNFbXB0eSgpID8gYm9pbGVycGxhdGUtPkNsb25lKCkgOiBjcmVhdGVXcmFw
cGVyRnJvbUNhY2hlU2xvd0Nhc2UodHlwZSk7CisgICAgICAgIHJldHVybiAhYm9pbGVycGxhdGUu
SXNFbXB0eSgpID8gYm9pbGVycGxhdGUtPkNsb25lKCkgOiBjcmVhdGVXcmFwcGVyRnJvbUNhY2hl
U2xvd0Nhc2UodHlwZSwgY29udGV4dCk7CiAgICAgfQogCi0gICAgdjg6OkxvY2FsPHY4OjpGdW5j
dGlvbj4gY29uc3RydWN0b3JGb3JUeXBlKFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKKyAgICB2ODo6
TG9jYWw8djg6OkZ1bmN0aW9uPiBjb25zdHJ1Y3RvckZvclR5cGUoV3JhcHBlclR5cGVJbmZvKiB0
eXBlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIHsKICAgICAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IG1fY29uc3RydWN0b3JNYXAuZ2V0
KHR5cGUpOwogICAgICAgICBpZiAoIWZ1bmN0aW9uLklzRW1wdHkoKSkKICAgICAgICAgICAgIHJl
dHVybiB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6TmV3KGZ1bmN0aW9uKTsKLSAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKHR5cGUpOworICAgICAgICByZXR1cm4gY29u
c3RydWN0b3JGb3JUeXBlU2xvd0Nhc2UodHlwZSwgY29udGV4dCk7CiAgICAgfQogCiAgICAgVjhO
UE9iamVjdE1hcCogdjhOUE9iamVjdE1hcCgpCkBAIC05MCw4ICs5MCw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGRpc3Bvc2UoKTsKIAotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVX
cmFwcGVyRnJvbUNhY2hlU2xvd0Nhc2UoV3JhcHBlclR5cGVJbmZvKik7Ci0gICAgdjg6OkxvY2Fs
PHY4OjpGdW5jdGlvbj4gY29uc3RydWN0b3JGb3JUeXBlU2xvd0Nhc2UoV3JhcHBlclR5cGVJbmZv
Kik7CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGVTbG93
Q2FzZShXcmFwcGVyVHlwZUluZm8qLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdjg6
OkxvY2FsPHY4OjpGdW5jdGlvbj4gY29uc3RydWN0b3JGb3JUeXBlU2xvd0Nhc2UoV3JhcHBlclR5
cGVJbmZvKiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgLy8gRm9yIGVhY2ggcG9z
c2libGUgdHlwZSBvZiB3cmFwcGVyLCB3ZSBrZWVwIGEgYm9pbGVycGxhdGUgb2JqZWN0LgogICAg
IC8vIFRoZSBib2lsZXJwbGF0ZSBpcyB1c2VkIHRvIGNyZWF0ZSBhZGRpdGlvbmFsIHdyYXBwZXJz
IG9mIHRoZSBzYW1lIHR5cGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcAppbmRleCA5NjExZDQ3ZjM3YTM5
NDNkN2YwY2NjMjkwNzMyZGI5MDRjY2E1NjZjLi5iY2IzNDhlNGM0NjNlZjViN2Q5NDcwZDg2NTc3
ZWZkMWYzYzQ0Mzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBi
b29sIFdvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eTo6aW5pdGlhbGl6ZUlmTmVlZGVkKCkKICAg
ICBpZiAoIW1fd29ya2VyQ29udGV4dC0+aXNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KCkpCiAgICAg
ICAgIGNvbnRleHRUeXBlID0gJlY4U2hhcmVkV29ya2VyQ29udGV4dDo6aW5mbzsKICNlbmRpZgot
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiB3b3JrZXJDb250ZXh0Q29uc3RydWN0b3IgPSBt
X3BlckNvbnRleHREYXRhLT5jb25zdHJ1Y3RvckZvclR5cGUoY29udGV4dFR5cGUpOworICAgIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiB3b3JrZXJDb250ZXh0Q29uc3RydWN0b3IgPSBtX3BlckNv
bnRleHREYXRhLT5jb25zdHJ1Y3RvckZvclR5cGUoY29udGV4dFR5cGUsIG1fd29ya2VyQ29udGV4
dCk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGpzV29ya2VyQ29udGV4dCA9IFY4T2JqZWN0
Q29uc3RydWN0b3I6Om5ld0luc3RhbmNlKHdvcmtlckNvbnRleHRDb25zdHJ1Y3Rvcik7CiAgICAg
Ly8gQmFpbCBvdXQgaWYgYWxsb2NhdGlvbiBmYWlsZWQuCiAgICAgaWYgKGpzV29ya2VyQ29udGV4
dC5Jc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dy
YXBwZXJUeXBlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJ
bmZvLmgKaW5kZXggNjQzYzBiYzI2MDk4YzU5OWFkYmRjY2JmMDNkOGY1MGNkOTA1NjVlYy4uM2M0
YmVmYWE4YmZiZThhYWM3MjljNjkzMDhlNDRiMTZkYjRiNGRjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKQEAgLTM3LDcgKzM3LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIAogICAgIGNsYXNzIEFjdGl2ZURPTU9iamVjdDsKICAgICBjbGFz
cyBET01EYXRhU3RvcmU7Ci0gICAgCisgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
KwogICAgIHN0YXRpYyBjb25zdCBpbnQgdjhET01XcmFwcGVyVHlwZUluZGV4ID0gMDsKICAgICBz
dGF0aWMgY29uc3QgaW50IHY4RE9NV3JhcHBlck9iamVjdEluZGV4ID0gMTsKICAgICBzdGF0aWMg
Y29uc3QgaW50IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgPSAyOwpAQCAtNDgs
NiArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdHlwZWRlZiB2b2lkICgqRGVyZWZP
YmplY3RGdW5jdGlvbikodm9pZCopOwogICAgIHR5cGVkZWYgQWN0aXZlRE9NT2JqZWN0KiAoKlRv
QWN0aXZlRE9NT2JqZWN0RnVuY3Rpb24pKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwogICAgIHR5
cGVkZWYgdm9pZCAoKkRPTVdyYXBwZXJWaXNpdG9yRnVuY3Rpb24pKERPTURhdGFTdG9yZSosIHZv
aWQqLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pik7CisgICAgdHlwZWRlZiB2b2lkICgqSW5z
dGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzRnVuY3Rpb24pKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIGVudW0gV3JhcHBlclR5
cGVQcm90b3R5cGUgewogICAgICAgICBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSwKQEAgLTg4
LDYgKzkwLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICBkZXJlZk9i
amVjdEZ1bmN0aW9uKG9iamVjdCk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHZvaWQg
aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gcHJvdG8sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXNGdW5jdGlv
bikKKyAgICAgICAgICAgICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXNG
dW5jdGlvbihwcm90bywgY29udGV4dCk7CisgICAgICAgIH0KKwogICAgICAgICBBY3RpdmVET01P
YmplY3QqIHRvQWN0aXZlRE9NT2JqZWN0KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQog
ICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIXRvQWN0aXZlRE9NT2JqZWN0RnVuY3Rpb24pCkBA
IC0xMDUsNiArMTEzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBEZXJl
Zk9iamVjdEZ1bmN0aW9uIGRlcmVmT2JqZWN0RnVuY3Rpb247CiAgICAgICAgIGNvbnN0IFRvQWN0
aXZlRE9NT2JqZWN0RnVuY3Rpb24gdG9BY3RpdmVET01PYmplY3RGdW5jdGlvbjsKICAgICAgICAg
Y29uc3QgRE9NV3JhcHBlclZpc2l0b3JGdW5jdGlvbiBkb21XcmFwcGVyVmlzaXRvckZ1bmN0aW9u
OworICAgICAgICBjb25zdCBJbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXNGdW5j
dGlvbiBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXNGdW5jdGlvbjsKICAgICAg
ICAgY29uc3QgV3JhcHBlclR5cGVJbmZvKiBwYXJlbnRDbGFzczsKICAgICAgICAgY29uc3QgV3Jh
cHBlclR5cGVQcm90b3R5cGUgd3JhcHBlclR5cGVQcm90b3R5cGU7CiAgICAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
SW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDYwYTg0YTBjYjljOTgxYjM3NzMwYjQ3
MTFiNmQ4YmFkN2MzY2U4ZTEuLjI1NmM5ZDM3ZTQxMWNmZTcwYTZlMzYzNzgyYTM2NjNhMDQ0NTNk
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJ
bWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcApAQCAtNDMsNyArNDMs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdyYXBwZXJUeXBlSW5mbyBWOEhUTUxJbWFn
ZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsgVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0
b3I6OkdldFRlbXBsYXRlLCAwLCAwLCAwLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9
OworV3JhcHBlclR5cGVJbmZvIFY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjppbmZvID0g
eyBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIDAsIDAsIDAsIFY4
SFRNTEltYWdlRWxlbWVudDo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAw
LCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168376</attachid>
            <date>2012-10-12 01:30:18 -0700</date>
            <delta_ts>2012-10-12 02:59:18 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-99129-20121012172914.patch</filename>
            <type>text/plain</type>
            <size>55010</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzlkZTA2NzU3MWE3NTBl
ZWM1YmRmNDQzZjM4NzRkOTJhOTIyODQ1Yi4uNGQxNzdhMDA0MWVkYzUxM2MzNmMyMjQ4YjQ1NDM3
ZDRkODg3ZWYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxMi0xMC0xMSAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbVjhdIFBlckNvbnRl
eHRFbmFibGVkIG1ldGhvZHMgc2hvdWxkIGJlIGluc3RhbGxlZCB3aGVuIHRoZSBjb25zdHJ1Y3Rv
ciBpcyBjcmVhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05OTEyOQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnRhcm8gSGFyYS4KKworICAgICAg
ICBCZWZvcmUgdGhpcyBjaGFuZ2UsIGdlbmVyYXRlZCBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRp
ZXMoKSBtZXRob2QKKyAgICAgICAgaW5qZWN0ZWQgYm90aCBwZXItY29udGV4dCBhdHRyaWJ1dGVz
IGFuZCBmdW5jdGlvbnMsIGFuZCBmdW5jdGlvbnMKKyAgICAgICAgd2VyZSBpbmplY3RlZCBpbnRv
IHRoZSBwcm90b3R5ZSBvYmplY3QuICBUaGlzIG1lYW5zIHRoYXQgdGhlCisgICAgICAgIGZ1bmN0
aW9ucyBhcmUgaW5qZWN0ZWQgaW50byB0aGUgcHJvdG90eXBlIHJlcGVhdGVkbHkgZm9yIGVhY2gK
KyAgICAgICAgaW50YW5jZSBjcmVhdGlvbi4gIFRoaXMgaW5qZWN0aW9uIGNhbiBiZSBoYXBwZW5l
ZCBvbmx5IG9uY2UgcGVyCisgICAgICAgIHByb3RvdHlwZSBvYmplY3QsIHdoaWNoIGlzIGNsZWFy
ZXIgYW5kIGlzIGZhc3Rlci4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIGluc3Rh
bGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcygpCisgICAgICAgIGdlbmVyYXRlZCBtZXRo
b2QsIHdoaWNoIGlzIGRlc2lnbmVkIHRvIGJlIGNhbGxlZCBmb3IgZWFjaCB0aW1lIHdoZW4gdGhl
IHByb3RvdHlwZQorICAgICAgICBvYmplY3QgaXMgY3JlYXRlZC4KKworICAgICAgICBUbyBkbyB0
aGF0LCBXcmFwcGVyVHlwZUluZm8gaXMgZXh0ZW5kZWQgdG8gaG9sZCBhbiBhZGRpdGlvbmFsCisg
ICAgICAgIGZ1bmN0aW9uIHBvaW50ZXIgdG8gYW4gaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQ
cm9wZXJ0aWVzKCkKKyAgICAgICAgaW1wbGVtZW50YXRpb24gc28gdGhhdCB3ZSBjYWxsIGl0IGZy
b20gVjhQZXJDb250ZXh0RGF0YTo6Y29uc3RydWN0b3JGb3JUeXBlU2xvd0Nhc2UoKSwKKyAgICAg
ICAgd2hlcmUgdGhlIHByb3RvdHlwZSBpbnN0YW5jZSBpcyBjcmVhdGVkLgorCisgICAgICAgIE90
aGVyIGNoYW5nZXM6CisgICAgICAgIC0gQWRkZWQgc29tZSBtb2RpZmljYXRpb24gdG8gcGFzcyBh
cm91bmQgdGhlIHBhcmFtZXRlciB0byBjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZSgpLgorICAg
ICAgICAtIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcygpIGFyZSBub3cgYWx3YXlzIGdlbmVy
YXRlZCBmb3Igc2ltcGxpY2l0eS4gRW1wdHkgaW1wbGVtZW50YXRpb25zIGFyZSBpbmxpbmVkIHRo
dXMKKyAgICAgICAgICBubyBzcGVlZCBwZW5hbHR5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAo
R2VuZXJhdGVDb25zdHJ1Y3RvckdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZU5hbWVkQ29uc3Ry
dWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKTogRXh0cmFj
dGVkIHBlci1jb250ZXh0IGZ1bmN0aW9uIGFkZGl0aW9ucyB0byBuZXcgaW5zdGFsbFBlckNvbnRl
eHRQcm90b3R5cGVQcm9wZXJ0aWVzKCkgZnVuY3Rpb24uCisgICAgICAgIChHZW5lcmF0ZVRvVjhD
b252ZXJ0ZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0
QXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEZsb2F0
NjRBcnJheTo6d3JhcFNsb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OEZsb2F0NjRBcnJheS5oOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJyYXk6Omluc3Rh
bGxQZXJDb250ZXh0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpWOEZsb2F0NjRBcnJh
eTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9NT2JqZWN0Ojp3cmFw
U2xvdyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURP
TU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9NT2JqZWN0OjppbnN0
YWxsUGVyQ29udGV4dFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZl
RE9NT2JqZWN0OjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEN1c3RvbU5hbWVk
R2V0dGVyOjp3cmFwU2xvdyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21O
YW1lZEdldHRlcjo6aW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVBy
b3BlcnRpZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6d3JhcFNsb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RFdmVudENvbnN0cnVjdG9yOjppbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6aW5zdGFsbFBlckNvbnRl
eHRQcm90b3R5cGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOFRlc3RFdmVudFRhcmdldDo6d3JhcFNsb3cpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0RXZlbnRUYXJnZXQ6Omluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3RFdmVudFRhcmdldDo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhj
ZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
RXhjZXB0aW9uOjp3cmFwU2xvdyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV4Y2VwdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXhjZXB0aW9uOjpp
bnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXhj
ZXB0aW9uOjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6OndyYXBTbG93KToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6Omluc3RhbGxQZXJDb250ZXh0UHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6Omluc3RhbGxQZXJDb250
ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjp3cmFwU2xv
dyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6Omluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVBy
b3BlcnRpZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1l
ZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6d3JhcFNsb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjppbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6aW5zdGFsbFBlckNvbnRl
eHRQcm90b3R5cGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4VGVzdE5vZGU6OndyYXBTbG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Tm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Tm9kZTo6aW5zdGFsbFBl
ckNvbnRleHRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6Omluc3Rh
bGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZTo6d3JhcFNsb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6aW5zdGFsbFBl
ckNvbnRleHRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVz
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9OUFY4T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om5wT2JqZWN0VHlwZUluZm8pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93
U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6aW5zdGFsbERP
TVdpbmRvdyk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdCk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFBlckNvbnRleHREYXRhOjpjcmVhdGVXcmFwcGVyRnJvbUNhY2hlU2xvd0Nhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhQZXJDb250ZXh0RGF0YTo6Y29uc3RydWN0b3JGb3JUeXBlU2xvd0Nhc2Up
OiBOb3cgaW52b2tlcyBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMoKQorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4UGVyQ29udGV4dERhdGE6OmNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhQZXJDb250ZXh0RGF0YTo6Y29uc3RydWN0b3JGb3JUeXBlKToKKyAgICAgICAgKFY4
UGVyQ29udGV4dERhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHk6OmluaXRpYWxpemVJZk5lZWRlZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvV3JhcHBl
clR5cGVJbmZvLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldyYXBw
ZXJUeXBlSW5mbzo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKTogQWRkZWQu
CisgICAgICAgIChXcmFwcGVyVHlwZUluZm8pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KwogMjAxMi0xMC0xMSAgTmF0IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
RXhwb3NlIGhpZ2gtcmVzb2x1dGlvbiBvbiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgY2FsbGJhY2sK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgu
cG0KaW5kZXggYzQ0MjNjYjk1YzQ0OWM3ODg1YmVhYTVmYThlZmNjZDAxOWI2NTcxNi4uMzJkYmZh
MjE3ZWNjNjE2YTc4ZmEzODMwOTY5MTc0YmM3MmJiMmQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTQwMiw3ICs0MDIs
NyBAQCBFTkQKIEVORAogICAgIH0KIAotICAgIG15IEBlbmFibGVkUGVyQ29udGV4dDsKKyAgICBt
eSBAZW5hYmxlZFBlckNvbnRleHRGdW5jdGlvbnM7CiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24g
KEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgIG15ICRhdHRyRXh0ID0gJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKQEAgLTQxNiw3ICs0MTYsNyBAQCBFTkQKICAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmlu
Z31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQogICAgICAgICBpZiAoJGF0
dHJFeHQtPnsiVjhFbmFibGVkUGVyQ29udGV4dCJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBlbmFi
bGVkUGVyQ29udGV4dCwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIHB1c2goQGVuYWJsZWRQZXJD
b250ZXh0RnVuY3Rpb25zLCAkZnVuY3Rpb24pOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MjYs
NiArNDI2LDcgQEAgRU5ECiBFTkQKICAgICB9CiAKKyAgICBteSBAZW5hYmxlZFBlckNvbnRleHRB
dHRyaWJ1dGVzOwogICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskZGF0YU5vZGUtPmF0dHJp
YnV0ZXN9KSB7CiAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1l
OwogICAgICAgICBteSAkYXR0ckV4dCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzOwpAQCAtNDQ5LDcgKzQ1MCw3IEBAIEVORAogICAgICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOwogICAgICAgICB9CiAgICAgICAgIGlmICgkYXR0ckV4dC0+eyJWOEVuYWJs
ZWRQZXJDb250ZXh0In0pIHsKLSAgICAgICAgICAgIHB1c2goQGVuYWJsZWRQZXJDb250ZXh0LCAk
YXR0cmlidXRlKTsKKyAgICAgICAgICAgIHB1c2goQGVuYWJsZWRQZXJDb250ZXh0QXR0cmlidXRl
cywgJGF0dHJpYnV0ZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ2NCw5ICs0NjUsMjMgQEAg
RU5ECiBFTkQKICAgICB9CiAKLSAgICBpZiAoQGVuYWJsZWRQZXJDb250ZXh0KSB7CisgICAgaWYg
KEBlbmFibGVkUGVyQ29udGV4dEF0dHJpYnV0ZXMpIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgPDxFTkQpOworICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGll
cyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCAke25hdGl2ZVR5cGV9Kik7CitFTkQKKyAgICB9IGVs
c2UgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CisgICAgc3RhdGljIHZv
aWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sICR7
bmF0aXZlVHlwZX0qKSB7IH0KK0VORAorICAgIH0KKworICAgIGlmIChAZW5hYmxlZFBlckNvbnRl
eHRGdW5jdGlvbnMpIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOworICAg
IHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CitFTkQKKyAgICB9IGVs
c2UgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7Ci0gICAgc3RhdGljIHZv
aWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sICR7
aW1wbENsYXNzTmFtZX0qKTsKKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3Rv
dHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopIHsgfQogRU5ECiAgICAgfQogCkBAIC04MTMsOSArODI4LDE4IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gJHtpbXBsQ2xhc3NOYW1lfUNvbnN0cnVjdG9yR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyCiAgICAgVjhQZXJDb250ZXh0RGF0YSogcGVyQ29udGV4dERhdGEgPSBWOFBl
ckNvbnRleHREYXRhOjpmcm9tKGluZm8uSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpKTsKICAg
ICBpZiAoIXBlckNvbnRleHREYXRhKQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKLSAg
ICByZXR1cm4gcGVyQ29udGV4dERhdGEtPmNvbnN0cnVjdG9yRm9yVHlwZShXcmFwcGVyVHlwZUlu
Zm86OnVud3JhcChkYXRhKSk7Ci19CitFTkQKIAorICAgIGlmICgkaW1wbENsYXNzTmFtZSBlcSAi
RE9NV2luZG93IikgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHJldHVy
biBwZXJDb250ZXh0RGF0YS0+Y29uc3RydWN0b3JGb3JUeXBlKFdyYXBwZXJUeXBlSW5mbzo6dW53
cmFwKGRhdGEpLCBWOERPTVdpbmRvdzo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSktPmRvY3VtZW50
KCkpO1xuIik7CitFTkQKKyAgICB9IGVsc2lmICgkaW1wbENsYXNzTmFtZSBlcSAiV29ya2VyQ29u
dGV4dCIpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICByZXR1cm4gcGVy
Q29udGV4dERhdGEtPmNvbnN0cnVjdG9yRm9yVHlwZShXcmFwcGVyVHlwZUluZm86OnVud3JhcChk
YXRhKSwgVjhXb3JrZXJDb250ZXh0Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKSk7XG4iKQorICAg
IH0gZWxzZSB7CisgICAgICAgIGRpZSAiVW5rbm93biBDb250ZXh0ICR7aW1wbENsYXNzTmFtZX0i
CisgICAgfQorICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKK30KIEVORAogfQog
CkBAIC0yMDM2LDEyICsyMDYwLDEyIEBAIHN1YiBHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3JDYWxs
YmFjawogCiAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkFjdGl2ZURP
TU9iamVjdCJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci1XcmFwcGVy
VHlwZUluZm8gVjgke2ltcGxDbGFzc05hbWV9Q29uc3RydWN0b3I6OmluZm8gPSB7IFY4JHtpbXBs
Q2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSwgVjgke2ltcGxDbGFzc05hbWV9Ojpk
ZXJlZk9iamVjdCwgVjgke2ltcGxDbGFzc05hbWV9Ojp0b0FjdGl2ZURPTU9iamVjdCwgMCwgMCwg
V3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKK1dyYXBwZXJUeXBlSW5mbyBWOCR7aW1wbENs
YXNzTmFtZX1Db25zdHJ1Y3Rvcjo6aW5mbyA9IHsgVjgke2ltcGxDbGFzc05hbWV9Q29uc3RydWN0
b3I6OkdldFRlbXBsYXRlLCBWOCR7aW1wbENsYXNzTmFtZX06OmRlcmVmT2JqZWN0LCBWOCR7aW1w
bENsYXNzTmFtZX06OnRvQWN0aXZlRE9NT2JqZWN0LCAwLCBWOCR7aW1wbENsYXNzTmFtZX06Omlu
c3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcywgMCwgV3JhcHBlclR5cGVPYmplY3RQ
cm90b3R5cGUgfTsKIAogRU5ECiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsIDw8RU5EKTsKLVdyYXBwZXJUeXBlSW5mbyBWOCR7aW1wbENsYXNzTmFtZX1Db25zdHJ1Y3Rv
cjo6aW5mbyA9IHsgVjgke2ltcGxDbGFzc05hbWV9Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlLCAw
LCAwLCAwLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OworV3JhcHBlclR5cGVJbmZv
IFY4JHtpbXBsQ2xhc3NOYW1lfUNvbnN0cnVjdG9yOjppbmZvID0geyBWOCR7aW1wbENsYXNzTmFt
ZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIDAsIDAsIDAsIFY4JHtpbXBsQ2xhc3NOYW1lfTo6
aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVj
dFByb3RvdHlwZSB9OwogCiBFTkQKICAgICB9CkBAIC0yNTUwLDYgKzI1NzQsNyBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIG15ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSA9ICRjb2Rl
R2VuZXJhdG9yLT5HZXRWaXNpYmxlSW50ZXJmYWNlTmFtZSgkZGF0YU5vZGUpOwogICAgIG15ICRj
bGFzc05hbWUgPSAiVjgkaW50ZXJmYWNlTmFtZSI7CiAgICAgbXkgJGltcGxDbGFzc05hbWUgPSAk
aW50ZXJmYWNlTmFtZTsKKyAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGVGb3JDb252
ZXJzaW9ucygkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lKTsKIAogICAgICMgLSBBZGQgZGVmYXVs
dCBoZWFkZXIgdGVtcGxhdGUKICAgICBwdXNoKEBpbXBsRml4ZWRIZWFkZXIsIEdlbmVyYXRlSW1w
bGVtZW50YXRpb25Db250ZW50SGVhZGVyKCRkYXRhTm9kZSkpOwpAQCAtMjU4MCw3ICsyNjA1LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgIG15ICRXcmFwcGVyVHlwZVByb3Rv
dHlwZSA9ICRkYXRhTm9kZS0+aXNFeGNlcHRpb24gPyAiV3JhcHBlclR5cGVFcnJvclByb3RvdHlw
ZSIgOiAiV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUiOwogCi0gICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIldyYXBwZXJUeXBlSW5mbyAke2NsYXNzTmFtZX06OmluZm8gPSB7ICR7Y2xhc3NO
YW1lfTo6R2V0VGVtcGxhdGUsICR7Y2xhc3NOYW1lfTo6ZGVyZWZPYmplY3QsICR0b0FjdGl2ZSwg
JGRvbVZpc2l0b3IsICRwYXJlbnRDbGFzc0luZm8sICRXcmFwcGVyVHlwZVByb3RvdHlwZSB9O1xu
XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiV3JhcHBlclR5cGVJbmZvICR7Y2xh
c3NOYW1lfTo6aW5mbyA9IHsgJHtjbGFzc05hbWV9OjpHZXRUZW1wbGF0ZSwgJHtjbGFzc05hbWV9
OjpkZXJlZk9iamVjdCwgJHRvQWN0aXZlLCAkZG9tVmlzaXRvciwgJHtjbGFzc05hbWV9OjppbnN0
YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsICRwYXJlbnRDbGFzc0luZm8sICRXcmFw
cGVyVHlwZVByb3RvdHlwZSB9O1xuXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
bmFtZXNwYWNlICR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsIHtcblxuIik7CiAKICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAidGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNFKFQp
IHsgfVxuXG4iKTsKQEAgLTI5OTAsNyArMzAxNSw2IEBAIEVORAogRU5ECiAgICAgfQogCi0gICAg
bXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlRm9yQ29udmVyc2lvbnMoJGRhdGFOb2RlLCAk
aW50ZXJmYWNlTmFtZSk7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAogICAgIC8v
IEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQpAQCAtMzAzMiw1MiArMzA1Niw1OSBAQCBib29sICR7
Y2xhc3NOYW1lfTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQogCiBF
TkQKIAotICAgIGlmIChAZW5hYmxlZFBlckNvbnRleHRBdHRyaWJ1dGVzIG9yIEBlbmFibGVkUGVy
Q29udGV4dEZ1bmN0aW9ucykgeworICAgIGlmIChAZW5hYmxlZFBlckNvbnRleHRBdHRyaWJ1dGVz
KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci12b2lkICR7Y2xhc3NOYW1l
fTo6aW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5z
dGFuY2UsICR7aW1wbENsYXNzTmFtZX0qIGltcGwpCit2b2lkICR7Y2xhc3NOYW1lfTo6aW5zdGFs
bFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5zdGFuY2UsICR7
bmF0aXZlVHlwZX0qIGltcGwpCiB7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHByb3RvID0g
djg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KGluc3RhbmNlLT5HZXRQcm90b3R5cGUoKSk7CiAg
ICAgLy8gV2hlbiBidWlsZGluZyBRdFdlYmtpdCB3aXRoIFY4IHRoaXMgdmFyaWFibGUgaXMgdW51
c2VkIHdoZW4gbm9uZSBvZiB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQuCiAgICAgVU5VU0VEX1BB
UkFNKHByb3RvKTsKIEVORAogCi0gICAgICAgIGlmIChAZW5hYmxlZFBlckNvbnRleHRBdHRyaWJ1
dGVzKSB7Ci0gICAgICAgICAgICAjIFNldHVwIHRoZSBlbmFibGUtYnktc2V0dGluZ3MgYXR0cnMg
aWYgd2UgaGF2ZSB0aGVtCi0gICAgICAgICAgICBmb3JlYWNoIG15ICRydW50aW1lQXR0ciAoQGVu
YWJsZWRQZXJDb250ZXh0QXR0cmlidXRlcykgewotICAgICAgICAgICAgICAgIG15ICRlbmFibGVG
dW5jdGlvbiA9IEdldENvbnRleHRFbmFibGVGdW5jdGlvbigkcnVudGltZUF0dHItPnNpZ25hdHVy
ZSk7Ci0gICAgICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0
b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJHJ1bnRpbWVBdHRyLT5zaWduYXR1cmUpOwot
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0
cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoJHtlbmFibGVGdW5jdGlvbn0oaW1wbC0+ZG9jdW1lbnQoKSkp
IHtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzdGF0
aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhID1c
XFxuIik7Ci0gICAgICAgICAgICAgICAgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlKCRp
bnRlcmZhY2VOYW1lLCAkcnVudGltZUF0dHIsICI7IiwgIiAgICAiKTsKLSAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgICAgICAjIFNldHVwIHRoZSBlbmFibGUt
Ynktc2V0dGluZ3MgYXR0cnMgaWYgd2UgaGF2ZSB0aGVtCisgICAgICAgIGZvcmVhY2ggbXkgJHJ1
bnRpbWVBdHRyIChAZW5hYmxlZFBlckNvbnRleHRBdHRyaWJ1dGVzKSB7CisgICAgICAgICAgICBt
eSAkZW5hYmxlRnVuY3Rpb24gPSBHZXRDb250ZXh0RW5hYmxlRnVuY3Rpb24oJHJ1bnRpbWVBdHRy
LT5zaWduYXR1cmUpOworICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVH
ZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJHJ1bnRpbWVBdHRyLT5zaWduYXR1
cmUpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNpZiAke2NvbmRpdGlvbmFs
U3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKCR7ZW5hYmxlRnVuY3Rpb259KGltcGwtPmRvY3VtZW50KCkpKSB7
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzdGF0aWMgY29u
c3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhID1cXFxuIik7
CisgICAgICAgICAgICBHZW5lcmF0ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUoJGludGVyZmFjZU5h
bWUsICRydW50aW1lQXR0ciwgIjsiLCAiICAgICIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsIDw8RU5EKTsKICAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVBdHRy
aWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSk7CiBFTkQKLSAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgfVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZiAvLyAk
e2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9
CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Cit9CitFTkQKKyAgICB9CiAKKyAg
ICBpZiAoQGVuYWJsZWRQZXJDb250ZXh0RnVuY3Rpb25zKSB7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCA8PEVORCk7Cit2b2lkICR7Y2xhc3NOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90
b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG8sIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb3RvKTsKKyAgICBV
TlVTRURfUEFSQU0oY29udGV4dCk7CitFTkQKICAgICAgICAgIyBTZXR1cCB0aGUgZW5hYmxlLWJ5
LXNldHRpbmdzIGZ1bmN0aW9ucyBpZiB3ZSBoYXZlIHRoZW0KLSAgICAgICAgaWYgKEBlbmFibGVk
UGVyQ29udGV4dEZ1bmN0aW9ucykgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8
PEVORCk7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwogICAgIHY4OjpMb2Nh
bDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KEdl
dFRlbXBsYXRlKCkpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4g
c29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KIEVORAogCi0gICAgICAgICAgICBmb3Jl
YWNoIG15ICRydW50aW1lRnVuYyAoQGVuYWJsZWRQZXJDb250ZXh0RnVuY3Rpb25zKSB7Ci0gICAg
ICAgICAgICAgICAgbXkgJGVuYWJsZUZ1bmN0aW9uID0gR2V0Q29udGV4dEVuYWJsZUZ1bmN0aW9u
KCRydW50aW1lRnVuYy0+c2lnbmF0dXJlKTsKLSAgICAgICAgICAgICAgICBteSAkY29uZGl0aW9u
YWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkcnVu
dGltZUZ1bmMtPnNpZ25hdHVyZSk7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwot
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgke2VuYWJsZUZ1bmN0
aW9ufShpbXBsLT5kb2N1bWVudCgpKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgbXkgJG5hbWUg
PSAkcnVudGltZUZ1bmMtPnNpZ25hdHVyZS0+bmFtZTsKLSAgICAgICAgICAgICAgICBteSAkY2Fs
bGJhY2sgPSBHZXRGdW5jdGlvblRlbXBsYXRlQ2FsbGJhY2tOYW1lKCRydW50aW1lRnVuYywgJGlu
dGVyZmFjZU5hbWUpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7
CisgICAgICAgIGZvcmVhY2ggbXkgJHJ1bnRpbWVGdW5jIChAZW5hYmxlZFBlckNvbnRleHRGdW5j
dGlvbnMpIHsKKyAgICAgICAgICAgIG15ICRlbmFibGVGdW5jdGlvbiA9IEdldENvbnRleHRFbmFi
bGVGdW5jdGlvbigkcnVudGltZUZ1bmMtPnNpZ25hdHVyZSk7CisgICAgICAgICAgICBteSAkY29u
ZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmlu
ZygkcnVudGltZUZ1bmMtPnNpZ25hdHVyZSk7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoY29udGV4dCAmJiBjb250
ZXh0LT5pc0RvY3VtZW50KCkgJiYgJHtlbmFibGVGdW5jdGlvbn0oc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihjb250ZXh0KSkpIHtcbiIpOworICAgICAgICAgICAgbXkgJG5hbWUgPSAkcnVudGltZUZ1
bmMtPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgICAgIG15ICRjYWxsYmFjayA9IEdldEZ1bmN0
aW9uVGVtcGxhdGVDYWxsYmFja05hbWUoJHJ1bnRpbWVGdW5jLCAkaW50ZXJmYWNlTmFtZSk7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogICAgICAgICBwcm90by0+U2V0
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiJHtuYW1lfSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KCR7Y2FsbGJhY2t9LCB2OFVuZGVmaW5lZCgpLCBkZWZhdWx0U2lnbmF0dXJlKS0+R2V0RnVu
Y3Rpb24oKSk7CiBFTkQKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9
XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZiAvLyAke2Nv
bmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CiAKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsIDw8RU5EKTsKQEAgLTM0MjQsMTkgKzM0NTUsOSBAQCBFTkQKIAogICAgIGlmIChVTkxJ
S0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwotRU5ECiAK
LSAgICBteSAkaGFzRW5hYmxlZFBlckNvbnRleHRGdW5jdGlvbnMgPSAwOwotICAgIGZvcmVhY2gg
bXkgJGZ1bmN0aW9uIChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkgewotICAgICAgICBpZiAoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEVuYWJsZWRQZXJDb250
ZXh0In0pIHsKLSAgICAgICAgICAgICRoYXNFbmFibGVkUGVyQ29udGV4dEZ1bmN0aW9ucyA9IDE7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCRoYXNFbmFibGVkUGVyQ29udGV4dEZ1bmN0aW9u
cykgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogICAgIGluc3RhbGxQZXJD
b250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKIEVORAotICAgIH0KIAogICAg
IHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yJHtkb21NYXBO
YW1lfShpbXBsLCB3cmFwcGVyLCBpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCmluZGV4IGRj
ZjM1OTBkODRiZDQyNjJmOGNhMmRjZTJmMDVkNmM3MmM5MTY5MDguLmEyZjBhNTExYmVkMGQzYmI2
NTFiNDdlMzVlN2U4MzU2Nzg5MGUzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApAQCAtNDIsNyAr
NDIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdyYXBwZXJUeXBlSW5mbyBWOEZsb2F0
NjRBcnJheTo6aW5mbyA9IHsgVjhGbG9hdDY0QXJyYXk6OkdldFRlbXBsYXRlLCBWOEZsb2F0NjRB
cnJheTo6ZGVyZWZPYmplY3QsIDAsIDAsICZWOEFycmF5QnVmZmVyVmlldzo6aW5mbywgV3JhcHBl
clR5cGVPYmplY3RQcm90b3R5cGUgfTsKK1dyYXBwZXJUeXBlSW5mbyBWOEZsb2F0NjRBcnJheTo6
aW5mbyA9IHsgVjhGbG9hdDY0QXJyYXk6OkdldFRlbXBsYXRlLCBWOEZsb2F0NjRBcnJheTo6ZGVy
ZWZPYmplY3QsIDAsIDAsIFY4RmxvYXQ2NEFycmF5OjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlw
ZVByb3BlcnRpZXMsICZWOEFycmF5QnVmZmVyVmlldzo6aW5mbywgV3JhcHBlclR5cGVPYmplY3RQ
cm90b3R5cGUgfTsKIAogbmFtZXNwYWNlIEZsb2F0NjRBcnJheVY4SW50ZXJuYWwgewogCkBAIC0x
NjksNiArMTY5LDggQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEZsb2F0NjRBcnJheTo6d3Jh
cFNsb3coUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IGltcGwsIHYKIAogICAgIGlmIChVTkxJS0VM
WSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOworCisgICAgaW5z
dGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwogICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OnNldEpT
V3JhcHBlckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhh
c0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVu
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4RmxvYXQ2NEFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhGbG9hdDY0QXJyYXkuaAppbmRleCBjMGZlOTcyMDg1ZWI4MWZlMzMyMzJkODI5MmEyY2U5
OWViNDcxYjRiLi42ODE5YzczY2I4NWY0NWM3OTg1NmY2N2Y0OTY3ZDlmZmUxZWU4OWYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0
QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhG
bG9hdDY0QXJyYXkuaApAQCAtNDgsNiArNDgsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdyYXBw
ZXJUeXBlSW5mbyBpbmZvOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3Ry
dWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7CiAgICAgc3RhdGljIGNvbnN0IGlu
dCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50
ICsgMDsKKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiwgRmxvYXQ2NEFycmF5KikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5z
dGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4s
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7IH0KIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcFNsb3coUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+LCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDNlMmIxYTk3NDYzZGEzODg2NmM4
NmI1YmI5ZTMzNmZmOTZlNGVhYjMuLmI1OTI0ZmZjZmU5ODYwNmEyNmU4Y2I1MTYwYmU3MmU1NjU3
MmQ3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0zMyw3ICszMyw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV3JhcHBlclR5cGVJbmZvIFY4VGVzdEFjdGl2
ZURPTU9iamVjdDo6aW5mbyA9IHsgVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRUZW1wbGF0ZSwg
VjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpkZXJlZk9iamVjdCwgMCwgMCwgMCwgV3JhcHBlclR5cGVP
YmplY3RQcm90b3R5cGUgfTsKK1dyYXBwZXJUeXBlSW5mbyBWOFRlc3RBY3RpdmVET01PYmplY3Q6
OmluZm8gPSB7IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVtcGxhdGUsIFY4VGVzdEFjdGl2
ZURPTU9iamVjdDo6ZGVyZWZPYmplY3QsIDAsIDAsIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6aW5z
dGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVjdFBy
b3RvdHlwZSB9OwogCiBuYW1lc3BhY2UgVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWwgewog
CkBAIC0xOTcsNiArMTk3LDggQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RBY3RpdmVE
T01PYmplY3Q6OndyYXBTbG93KFBhc3NSZWZQdHI8VGVzdEFjdGl2ZURPTU8KIAogICAgIGlmIChV
TkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOworCisg
ICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwogICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6
OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBp
ZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRl
cGVuZGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCmluZGV4IDI1ODAzYTQ1MTky
NjE5YmZjODQ3NGM1NWIyNWE1YTFhYWVkNjYyOTYuLmFkYTU5MTk5MTEzOWI3NWRmZTczMDhkZWU4
NzkzN2M3Y2VlNjY2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKQEAgLTQ4LDYg
KzQ4LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50
ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CiAgICAgc3RhdGljIGJv
b2wgbmFtZWRTZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB2ODo6TG9j
YWw8djg6OlZhbHVlPiBrZXksIHY4OjpBY2Nlc3NUeXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPiBk
YXRhKTsKICAgICBzdGF0aWMgYm9vbCBpbmRleGVkU2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6
Ok9iamVjdD4gaG9zdCwgdWludDMyX3QgaW5kZXgsIHY4OjpBY2Nlc3NUeXBlLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiBkYXRhKTsKKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3Bl
cnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdEFjdGl2ZURPTU9iamVjdCopIHsgfQor
ICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgeyB9CiBwcml2YXRl
OgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KFBhc3NSZWZQdHI8
VGVzdEFjdGl2ZURPTU9iamVjdD4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
Y3BwCmluZGV4IGFiNWI1YmI4MTQ0ZTNhYmE3NmU2NDY5OTI5M2M4MWE1YTc1MjM5ZDguLmVlZjQ0
M2I2MWIzMmY2YzZlOTY1NDNmNTkwMmY5NWYzMjkzNzYyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVdyYXBwZXJUeXBlSW5mbyBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6aW5mbyA9IHsg
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OkdldFRlbXBsYXRlLCBWOFRlc3RDdXN0b21OYW1lZEdl
dHRlcjo6ZGVyZWZPYmplY3QsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07
CitXcmFwcGVyVHlwZUluZm8gVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmluZm8gPSB7IFY4VGVz
dEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRUZW1wbGF0ZSwgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6
OmRlcmVmT2JqZWN0LCAwLCAwLCBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6aW5zdGFsbFBlckNv
bnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9
OwogCiBuYW1lc3BhY2UgVGVzdEN1c3RvbU5hbWVkR2V0dGVyVjhJbnRlcm5hbCB7CiAKQEAgLTEz
MSw2ICsxMzEsOCBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEN1c3RvbU5hbWVkR2V0
dGVyOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RDdXN0b21OYQogCiAgICAgaWYgKFVOTElLRUxZ
KHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisKKyAgICBpbnN0
YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7CiAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6c2V0SlNX
cmFwcGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFz
RGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCmluZGV4IDQ3Mzg1OGYyZWZmYzEw
YTg3ZWE3MDJjMzUzNzRlODA5MWVlZDE5YTcuLjExNDhiMjVjMTUzMmQ0NTc3YjAyMzI0NzY2MmQ1
YjkwMjY3NGQ5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCkBAIC00Nyw2
ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiAgICAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYpOwogICAgIHN0YXRpYyBjb25z
dCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRD
b3VudCArIDA7CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRlc3RDdXN0b21OYW1lZEdldHRlciopIHsgfQorICAgIHN0
YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgeyB9CiBwcml2YXRlOgogICAg
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KFBhc3NSZWZQdHI8VGVzdEN1
c3RvbU5hbWVkR2V0dGVyPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmlu
ZGV4IDBiOTVjMTc4OTg0NzkyYjk1YzdiYWU5YmU1ODEwMDA5YTZiYTA1ZTIuLjczNjkxMWFlZjA0
MzBiMmU3ZDUwYTE5MGY5ZTYyZDA5YmIwMmY1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1X
cmFwcGVyVHlwZUluZm8gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsgVjhUZXN0RXZl
bnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmRlcmVm
T2JqZWN0LCAwLCAwLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OworV3JhcHBlclR5
cGVJbmZvIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmluZm8gPSB7IFY4VGVzdEV2ZW50Q29uc3Ry
dWN0b3I6OkdldFRlbXBsYXRlLCBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpkZXJlZk9iamVjdCwg
MCwgMCwgVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQ
cm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OwogCiBuYW1lc3BhY2Ug
VGVzdEV2ZW50Q29uc3RydWN0b3JWOEludGVybmFsIHsKIApAQCAtMTY4LDYgKzE2OCw4IEBAIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6d3JhcFNsb3coUGFz
c1JlZlB0cjxUZXN0RXZlbnRDb25zCiAKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5
KCkpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKKworICAgIGluc3RhbGxQZXJDb250ZXh0UHJv
cGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmpl
Y3QoaW1wbCwgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGlt
ZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5oCmluZGV4IDY5MjZjZWJkNGJkOTkzYzY3MmI3YmQ1NjFhY2FiNDVl
MTM5ZGFlYzAuLjljOTkzNDRjMWEzMjg5NmQ1MjcxOGQ1ODkzYmNjYTcyNGI2YTVkN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaApAQCAtNDgsNiArNDgsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBpbmZvOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7CiAgICAg
c3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50
ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFBy
b3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdEV2ZW50Q29uc3RydWN0b3IqKSB7
IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMo
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIHsgfQogcHJp
dmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNzUmVm
UHRyPFRlc3RFdmVudENvbnN0cnVjdG9yPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKaW5k
ZXggMWUxMWY0ZDc0NWNiYWQ3ZTI0NTdkYTg0NzU5MTM2MzY3OGFhMmU1Zi4uNTE3OTg0ZDhmMWM4
YzVlYThmMjdhYzdkODI3NTkwOTBhZDdhODVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3Bw
CkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV3JhcHBlclR5cGVJ
bmZvIFY4VGVzdEV2ZW50VGFyZ2V0OjppbmZvID0geyBWOFRlc3RFdmVudFRhcmdldDo6R2V0VGVt
cGxhdGUsIFY4VGVzdEV2ZW50VGFyZ2V0OjpkZXJlZk9iamVjdCwgMCwgMCwgMCwgV3JhcHBlclR5
cGVPYmplY3RQcm90b3R5cGUgfTsKK1dyYXBwZXJUeXBlSW5mbyBWOFRlc3RFdmVudFRhcmdldDo6
aW5mbyA9IHsgVjhUZXN0RXZlbnRUYXJnZXQ6OkdldFRlbXBsYXRlLCBWOFRlc3RFdmVudFRhcmdl
dDo6ZGVyZWZPYmplY3QsIDAsIDAsIFY4VGVzdEV2ZW50VGFyZ2V0OjppbnN0YWxsUGVyQ29udGV4
dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CiAK
IG5hbWVzcGFjZSBUZXN0RXZlbnRUYXJnZXRWOEludGVybmFsIHsKIApAQCAtMTkyLDYgKzE5Miw4
IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRUYXJnZXQ6OndyYXBTbG93KFBh
c3NSZWZQdHI8VGVzdEV2ZW50VGFyZ2V0PiBpCiAKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5J
c0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKKworICAgIGluc3RhbGxQZXJDb250
ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKICAgICB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JE
T01PYmplY3QoaW1wbCwgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRM
aWZldGltZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50VGFyZ2V0LmgKaW5kZXggNjE4MmIyNzU4ZWQwZDg0NzI3OTEwMTkxMWZmN2VlZDIwYjQ0
YTkzZi4uZWE1MzA3YmI4NmY4NmNmYThiMTk0YTU4OWQ3ZGEwMzBjMDA1NmIwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFy
Z2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50VGFyZ2V0LmgKQEAgLTQ5LDYgKzQ5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gbmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4sIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mKTsKICAgICBzdGF0aWMgY29uc3QgaW50IGV2ZW50
TGlzdGVuZXJDYWNoZUluZGV4ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCAr
IDA7CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRX
cmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTsKKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVy
Q29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdEV2ZW50VGFyZ2V0
KikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0
aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7IH0K
IHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcFNsb3coUGFz
c1JlZlB0cjxUZXN0RXZlbnRUYXJnZXQ+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9u
Q29udGV4dCwgdjg6Oklzb2xhdGUqKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCmluZGV4IDU1
ODk2ZThjOGJjMzQ4YzgwOTI1MTEzYTEyNGM2YTgxNjdhMjJkM2IuLjU2M2QwODRhN2ZhMzRhODlj
ZGNmMzk0MWNlNzI1Mjg5M2QwMzFmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCkBAIC0zMSw3
ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV3JhcHBlclR5cGVJbmZvIFY4VGVz
dEV4Y2VwdGlvbjo6aW5mbyA9IHsgVjhUZXN0RXhjZXB0aW9uOjpHZXRUZW1wbGF0ZSwgVjhUZXN0
RXhjZXB0aW9uOjpkZXJlZk9iamVjdCwgMCwgMCwgMCwgV3JhcHBlclR5cGVFcnJvclByb3RvdHlw
ZSB9OworV3JhcHBlclR5cGVJbmZvIFY4VGVzdEV4Y2VwdGlvbjo6aW5mbyA9IHsgVjhUZXN0RXhj
ZXB0aW9uOjpHZXRUZW1wbGF0ZSwgVjhUZXN0RXhjZXB0aW9uOjpkZXJlZk9iamVjdCwgMCwgMCwg
VjhUZXN0RXhjZXB0aW9uOjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAs
IFdyYXBwZXJUeXBlRXJyb3JQcm90b3R5cGUgfTsKIAogbmFtZXNwYWNlIFRlc3RFeGNlcHRpb25W
OEludGVybmFsIHsKIApAQCAtMTIyLDYgKzEyMiw4IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
VjhUZXN0RXhjZXB0aW9uOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RFeGNlcHRpb24+IGltcGws
CiAKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4g
d3JhcHBlcjsKKworICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBs
LmdldCgpKTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0g
VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbCwgd3JhcHBlciwgaXNv
bGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBlckhh
bmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaAppbmRleCA2ZjIwMTBkYWNl
NGU3ODU3YjZmZTFhMmM5M2YxYWIyMjdmY2MxZTczLi4wZTNjMWZlNTlmOGU2YjBmNzBjNTJjYzcx
YWZmMWZkZTM0ODcxNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCkBAIC00Niw2ICs0Niw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiwgdm9p
ZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJ
bmZvIGluZm87CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERl
ZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICBzdGF0aWMgdm9pZCBpbnN0
YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdEV4Y2Vw
dGlvbiopIHsgfQorICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJv
cGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kikg
eyB9CiBwcml2YXRlOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93
KFBhc3NSZWZQdHI8VGVzdEV4Y2VwdGlvbj4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKaW5kZXgg
MWYxYzRjOWQwMWZiMTQ2NTM0OTFhYmY5NzI4ODEzMDdjZmQxMGM3MC4uMTczYzIzM2IzMjAxYTll
YmVlMWEzMDU1ZDE5NjExMWMxMDNiNWUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKQEAgLTQw
LDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XcmFwcGVyVHlwZUluZm8gVjhU
ZXN0SW50ZXJmYWNlOjppbmZvID0geyBWOFRlc3RJbnRlcmZhY2U6OkdldFRlbXBsYXRlLCBWOFRl
c3RJbnRlcmZhY2U6OmRlcmVmT2JqZWN0LCBWOFRlc3RJbnRlcmZhY2U6OnRvQWN0aXZlRE9NT2Jq
ZWN0LCAwLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OworV3JhcHBlclR5cGVJbmZv
IFY4VGVzdEludGVyZmFjZTo6aW5mbyA9IHsgVjhUZXN0SW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSwg
VjhUZXN0SW50ZXJmYWNlOjpkZXJlZk9iamVjdCwgVjhUZXN0SW50ZXJmYWNlOjp0b0FjdGl2ZURP
TU9iamVjdCwgMCwgVjhUZXN0SW50ZXJmYWNlOjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVBy
b3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CiAKIG5hbWVzcGFjZSBU
ZXN0SW50ZXJmYWNlVjhJbnRlcm5hbCB7CiAKQEAgLTM2MSw2ICszNjEsOCBAQCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IFY4VGVzdEludGVyZmFjZTo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0SW50
ZXJmYWNlPiBpbXBsLAogCiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAg
ICAgICAgcmV0dXJuIHdyYXBwZXI7CisKKyAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMo
d3JhcHBlciwgaW1wbC5nZXQoKSk7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3Jh
cHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NT2JqZWN0
KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUp
CiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNl
LmgKaW5kZXggYTcyMTE4MjIzOTBmMDhiNTMwMzc5YjhmZjExMDRhMjE2OGFmOTAzNC4uZTRmNTg5
OWJiZjc3OWRmZDM0ODkwMmM1M2ExMDc0NGZkNTA2ZDVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaApA
QCAtNTEsNiArNTEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKICAgICBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVkUHJvcGVydHlTZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+LCB2ODo6TG9jYWw8djg6OlZhbHVlPiwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYpOwog
ICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZhdWx0V3JhcHBl
ckludGVybmFsRmllbGRDb3VudCArIDA7CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRl
eHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRlc3RJbnRlcmZhY2UqKSB7IH0K
KyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIHsgfQogcHJpdmF0
ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNzUmVmUHRy
PFRlc3RJbnRlcmZhY2U+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwg
djg6Oklzb2xhdGUqKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5jcHAKaW5kZXggYWY5NjE3Y2JkMDBiNDRlZmRhNTMwMTU5YmI5NjdkNDUyZTM5MDViZC4u
YzNmY2EwNDc2MzZmZWFmZGFlMWE0ODQ5YTI0MzFiNzA3YTllNzhkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdyYXBwZXJUeXBlSW5mbyBWOFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyOjppbmZvID0geyBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpHZXRUZW1w
bGF0ZSwgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6ZGVyZWZPYmplY3QsIDAsIDAsIDAs
IFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CitXcmFwcGVyVHlwZUluZm8gVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW5mbyA9IHsgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cjo6R2V0VGVtcGxhdGUsIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmRlcmVmT2JqZWN0
LCAwLCAwLCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjppbnN0YWxsUGVyQ29udGV4dFBy
b3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CiAKIG5h
bWVzcGFjZSBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclY4SW50ZXJuYWwgewogCkBAIC0xMzEs
NiArMTMxLDggQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RNZWQKIAogICAgIGlmIChVTkxJS0VMWSh3
cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOworCisgICAgaW5zdGFs
bFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwogICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OnNldEpTV3Jh
cHBlckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0Rl
cGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKaW5kZXggYWRmMzQ1
ZWQ4NTQzMDBjMmY4YWNhM2Q5N2Y3YzI5ODlmZjU4MzA4NS4uZDk4NTYwZGJlMDY3OTQyNjhjZDQx
MzQwZGM5YjgyMDM2NTJlZmRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5oCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCB2aXNp
dERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiwgdm9pZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+KTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiAgICAgc3RhdGljIGNvbnN0
IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENv
dW50ICsgMDsKKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqKSB7IH0KKyAg
ICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIHsgfQogcHJpdmF0ZToK
ICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNzUmVmUHRyPFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0
b3IuY3BwCmluZGV4IGY1OThkNTg4N2MzNGUxNmU0OWZjYzJlNjhmZWJlNjFjOWNhZTU5YWEuLmYy
ZWQ4MTlkZjA4MDFjMTVkNmJmNmYwNDk5NWU4NzU0Yzc5YWExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1XcmFwcGVyVHlwZUluZm8gVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsg
VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIFY4VGVzdE5hbWVkQ29uc3RydWN0
b3I6OmRlcmVmT2JqZWN0LCBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjp0b0FjdGl2ZURPTU9iamVj
dCwgMCwgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKK1dyYXBwZXJUeXBlSW5mbyBW
OFRlc3ROYW1lZENvbnN0cnVjdG9yOjppbmZvID0geyBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpH
ZXRUZW1wbGF0ZSwgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6ZGVyZWZPYmplY3QsIFY4VGVzdE5h
bWVkQ29uc3RydWN0b3I6OnRvQWN0aXZlRE9NT2JqZWN0LCAwLCBWOFRlc3ROYW1lZENvbnN0cnVj
dG9yOjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBl
T2JqZWN0UHJvdG90eXBlIH07CiAKIG5hbWVzcGFjZSBUZXN0TmFtZWRDb25zdHJ1Y3RvclY4SW50
ZXJuYWwgewogCkBAIC00MCw3ICs0MCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIFY4
X1VTRShUKSB7IH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdE5hbWVkQ29uc3RydWN0b3JWOEludGVy
bmFsCiAKLVdyYXBwZXJUeXBlSW5mbyBWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6
OmluZm8gPSB7IFY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUs
IFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OmRlcmVmT2JqZWN0LCBWOFRlc3ROYW1lZENvbnN0cnVj
dG9yOjp0b0FjdGl2ZURPTU9iamVjdCwgMCwgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUg
fTsKK1dyYXBwZXJUeXBlSW5mbyBWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6Omlu
Zm8gPSB7IFY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIFY4
VGVzdE5hbWVkQ29uc3RydWN0b3I6OmRlcmVmT2JqZWN0LCBWOFRlc3ROYW1lZENvbnN0cnVjdG9y
Ojp0b0FjdGl2ZURPTU9iamVjdCwgMCwgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6aW5zdGFsbFBl
ckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlw
ZSB9OwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE5hbWVkQ29uc3RydWN0
b3JDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CkBAIC0x
NzEsNiArMTcxLDggQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3ROYW1lZENvbnN0cnVj
dG9yOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3ROYW1lZENvbnMKIAogICAgIGlmIChVTkxJS0VM
WSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOworCisgICAgaW5z
dGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwogICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OnNldEpT
V3JhcHBlckZvckFjdGl2ZURPTU9iamVjdChpbXBsLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBp
ZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRl
cGVuZGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgKaW5kZXggZTE2ZTIxMTA0
MzAzMWY2YmFhYTAyNjFjYjc1MGVlZjBhN2NiNzEzNC4uYmUyYzhmN2I5YTRjYTE1ZTQzNmFiZjg5
MTFmYzlkNDIwYjRiY2NiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCkBAIC01
Myw2ICs1Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiAg
ICAgc3RhdGljIEFjdGl2ZURPTU9iamVjdCogdG9BY3RpdmVET01PYmplY3Qodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pik7CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2
OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICBzdGF0aWMgdm9pZCBp
bnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdE5h
bWVkQ29uc3RydWN0b3IqKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFBy
b3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopIHsgfQogcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3ROYW1lZENvbnN0cnVjdG9yPiwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3Bw
CmluZGV4IGFmNzcyZDQwZGFmZDJiYzk4ZjNjNTU1YzEzYmZjZjRjNzEzOTY2OTQuLjQ3MGMzODJj
ODkyYmU1ZGRiMjkzNTM0NzFkM2UzMTY5YzNkMzY4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKQEAgLTMyLDcg
KzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XcmFwcGVyVHlwZUluZm8gVjhUZXN0
Tm9kZTo6aW5mbyA9IHsgVjhUZXN0Tm9kZTo6R2V0VGVtcGxhdGUsIFY4VGVzdE5vZGU6OmRlcmVm
T2JqZWN0LCAwLCAwLCAmVjhOb2RlOjppbmZvLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9
OworV3JhcHBlclR5cGVJbmZvIFY4VGVzdE5vZGU6OmluZm8gPSB7IFY4VGVzdE5vZGU6OkdldFRl
bXBsYXRlLCBWOFRlc3ROb2RlOjpkZXJlZk9iamVjdCwgMCwgMCwgVjhUZXN0Tm9kZTo6aW5zdGFs
bFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAmVjhOb2RlOjppbmZvLCBXcmFwcGVyVHlw
ZU9iamVjdFByb3RvdHlwZSB9OwogCiBuYW1lc3BhY2UgVGVzdE5vZGVWOEludGVybmFsIHsKIApA
QCAtMTMyLDYgKzEzMiw4IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0Tm9kZTo6d3Jh
cFNsb3coUGFzc1JlZlB0cjxUZXN0Tm9kZT4gaW1wbCwgdjg6OkhhbmRsCiAKICAgICBpZiAoVU5M
SUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKKworICAg
IGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpz
ZXRKU1dyYXBwZXJGb3JET01Ob2RlKGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICgh
aGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5k
ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE5vZGUuaAppbmRleCA0MmE1YzU0ZTg1MWE1MmQxMTU3YjQ1NmNjYmRjZDFkOGNlNzg2
ZWIxLi5kZGUzYjU1YTFjODk5ZTc4ZDQ0YjBmZDY5OGM1YTRhNGIxMDEzZDFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgK
QEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gaW5m
bzsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVs
ZENvdW50ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CisgICAgc3Rh
dGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4sIFRlc3ROb2RlKikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90
b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKSB7IH0KIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0Tm9kZT4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggNzc4NGU2NWI2NmQ3
MDc5MDc0MjYzNGFhOWFjNGJjY2RkYjhlNDcwYy4uMTUzZTA5ZDc2N2Q3MTdjNTI0MmMyNTY0MjY2
MmU0YTMyYzZhNGIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1XcmFwcGVyVHlwZUluZm8gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlOjppbmZvID0geyBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Okdl
dFRlbXBsYXRlLCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmRlcmVmT2Jq
ZWN0LCAwLCAwLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OworV3JhcHBlclR5cGVJ
bmZvIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6aW5mbyA9IHsgVjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSwgVjhUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpkZXJlZk9iamVjdCwgMCwgMCwgVjhUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3Bl
cnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CiAKIG5hbWVzcGFjZSBUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbCB7CiAKQEAgLTMxNCw2ICsz
MTQsOCBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZTo6d3JhcFNsb3coUGFzc1JlZlB0cgogCiAgICAgaWYgKFVOTElLRUxZKHdyYXBw
ZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisKKyAgICBpbnN0YWxsUGVy
Q29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7CiAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVy
Rm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVwZW5k
ZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgK
aW5kZXggYjhjM2NkYjE5YTI0ODg5OGMzY2NhOTFmNWMwOGQxNWUyZDhiMjQ0Ni4uNDNiMWNjNzhl
Y2U0NTk5N2QyYjA1YTg2ZjhhOTk4Y2M2OTdkN2I4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaApAQCAtNDksNiArNDksOCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBpbmZvOwogICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
Jik7CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRX
cmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVy
Q29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSopIHsgfQorICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250
ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KikgeyB9CiBwcml2YXRlOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBTbG93KFBhc3NSZWZQdHI8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZT4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSopOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKaW5kZXgg
MDYzMTRmMzM4MjdhZGYyZGNmOGYyYzNjYjg0ODNmM2MzODJmOGU0ZC4uZTY1ODk2NDE3MDc5MjE4
ZTU5ZDg4YzQ5MTRiYzY0MzRjYmE4OTY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
TlBWOE9iamVjdC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBX
cmFwcGVyVHlwZUluZm8qIG5wT2JqZWN0VHlwZUluZm8oKQogewotICAgIHN0YXRpYyBXcmFwcGVy
VHlwZUluZm8gdHlwZUluZm8gPSB7IDAsIDAsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJv
dG90eXBlIH07CisgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyB0eXBlSW5mbyA9IHsgMCwgMCwg
MCwgMCwgMCwgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKICAgICByZXR1cm4gJnR5
cGVJbmZvOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93
U2hlbGwuY3BwCmluZGV4IDE5MzZhZThkMGE0YjgzZGExMDRiY2QxZTVjOTQ1MmNhM2M3Mzk0ODgu
LmUzZWNiNDYzNTEyNWUzYzI3YWE2ODdmMTFhNmM0OTFiY2EzNTViYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCkBAIC00MzMsOCArNDMz
LDkgQEAgdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpjcmVhdGVDb250ZXh0KCkKIAogYm9vbCBWOERP
TVdpbmRvd1NoZWxsOjppbnN0YWxsRE9NV2luZG93KCkKIHsKLSAgICBET01XaW5kb3cqIHdpbmRv
dyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwotICAgIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gVjhPYmplY3RDb25zdHJ1Y3Rvcjo6bmV3SW5zdGFuY2Uo
VjhQZXJDb250ZXh0RGF0YTo6ZnJvbShtX2NvbnRleHQuZ2V0KCkpLT5jb25zdHJ1Y3RvckZvclR5
cGUoJlY4RE9NV2luZG93OjppbmZvKSk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFt
ZS0+ZG9jdW1lbnQoKTsKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IGRvY3VtZW50LT5kb21XaW5k
b3coKTsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9IFY4T2JqZWN0
Q29uc3RydWN0b3I6Om5ld0luc3RhbmNlKFY4UGVyQ29udGV4dERhdGE6OmZyb20obV9jb250ZXh0
LmdldCgpKS0+Y29uc3RydWN0b3JGb3JUeXBlKCZWOERPTVdpbmRvdzo6aW5mbywgZG9jdW1lbnQp
KTsKICAgICBpZiAod2luZG93V3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXgg
ZmViYWU3NWExYWYzZjU2NmZhMzYzNDk1MTMwNWVkZjMyYWEwY2VhMC4uZmJiOWZkMmM5M2UzYjBk
NWY4YTA0MGYzNmNlZWRkMjFjOGRiNWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdyYXBwZXIuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChEb2N1bWVudCogZG9jdW1lbnQs
IFdyYXAKICAgICBlbHNlCiAgICAgICAgIHBlckNvbnRleHREYXRhID0gVjhQZXJDb250ZXh0RGF0
YTo6ZnJvbSh2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKTsKIAotICAgIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBpbnN0YW5jZSA9IHBlckNvbnRleHREYXRhID8gcGVyQ29udGV4dERhdGEtPmNyZWF0
ZVdyYXBwZXJGcm9tQ2FjaGUodHlwZSkgOiBWOE9iamVjdENvbnN0cnVjdG9yOjpuZXdJbnN0YW5j
ZSh0eXBlLT5nZXRUZW1wbGF0ZSgpLT5HZXRGdW5jdGlvbigpKTsKKyAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gaW5zdGFuY2UgPSBwZXJDb250ZXh0RGF0YSA/IHBlckNvbnRleHREYXRhLT5jcmVh
dGVXcmFwcGVyRnJvbUNhY2hlKHR5cGUsIGRvY3VtZW50KSA6IFY4T2JqZWN0Q29uc3RydWN0b3I6
Om5ld0luc3RhbmNlKHR5cGUtPmdldFRlbXBsYXRlKCktPkdldEZ1bmN0aW9uKCkpOwogCiAgICAg
Ly8gQXZvaWQgc2V0dGluZyB0aGUgRE9NIHdyYXBwZXIgZm9yIGZhaWxlZCBhbGxvY2F0aW9ucy4K
ICAgICBpZiAoaW5zdGFuY2UuSXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFBlckNvbnRleHREYXRhLmNwcAppbmRleCA2MjU0MzlkYTIzZDA1MjAyNDVhNGE5ZDFm
ZDM2ZjA2MmUwOTNhY2EyLi4xNWVmZTVhOTVkOTZlN2M1MTU3ZjkxYWRlZDIyZDdiZTY1MDcwYjYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNw
cApAQCAtMTAwLDEzICsxMDAsMTMgQEAgYm9vbCBWOFBlckNvbnRleHREYXRhOjppbml0KCkKIAog
I3VuZGVmIFY4X1NUT1JFX1BSSU1PUkRJQUwKIAotdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4UGVy
Q29udGV4dERhdGE6OmNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZShXcmFwcGVyVHlwZUlu
Zm8qIHR5cGUpCit2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhQZXJDb250ZXh0RGF0YTo6Y3JlYXRl
V3JhcHBlckZyb21DYWNoZVNsb3dDYXNlKFdyYXBwZXJUeXBlSW5mbyogdHlwZSwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICBBU1NFUlQoIW1fZXJyb3JQcm90b3R5cGUu
aXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW1fb2JqZWN0UHJvdG90eXBlLmlzRW1wdHkoKSk7CiAK
ICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUobV9jb250ZXh0KTsKLSAgICB2ODo6TG9jYWw8
djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IGNvbnN0cnVjdG9yRm9yVHlwZSh0eXBlKTsKKyAgICB2
ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IGNvbnN0cnVjdG9yRm9yVHlwZSh0eXBl
LCBjb250ZXh0KTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gaW5zdGFuY2UgPSBWOE9iamVj
dENvbnN0cnVjdG9yOjpuZXdJbnN0YW5jZShmdW5jdGlvbik7CiAgICAgaWYgKCFpbnN0YW5jZS5J
c0VtcHR5KCkpIHsKICAgICAgICAgbV93cmFwcGVyQm9pbGVycGxhdGVzLnNldCh0eXBlLCB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGluc3RhbmNlKSk7CkBAIC0xMTUsNyArMTE1LDcg
QEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4UGVyQ29udGV4dERhdGE6OmNyZWF0ZVdyYXBwZXJG
cm9tQ2FjaGVTbG93Q2FzZShXcmFwcGVyVHkKICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+KCk7CiB9CiAKLXY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IFY4UGVyQ29udGV4dERhdGE6OmNv
bnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKFdyYXBwZXJUeXBlSW5mbyogdHlwZSkKK3Y4OjpMb2Nh
bDx2ODo6RnVuY3Rpb24+IFY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dD
YXNlKFdyYXBwZXJUeXBlSW5mbyogdHlwZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBBU1NFUlQoIW1fZXJyb3JQcm90b3R5cGUuaXNFbXB0eSgpKTsKICAgICBBU1NF
UlQoIW1fb2JqZWN0UHJvdG90eXBlLmlzRW1wdHkoKSk7CkBAIC0xMjksMTEgKzEyOSwxMiBAQCB2
ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOFBlckNvbnRleHREYXRhOjpjb25zdHJ1Y3RvckZvclR5
cGVTbG93Q2FzZShXcmFwcGVyVHlwZQogICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpGdW5j
dGlvbj4oKTsKIAogICAgIGZ1bmN0aW9uLT5TZXRQcm90b3R5cGUobV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpOwotCi0gICAgaWYgKHR5cGUtPndyYXBwZXJUeXBlUHJvdG90eXBlID09IFdyYXBwZXJU
eXBlRXJyb3JQcm90b3R5cGUpIHsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcHJvdG90
eXBlVmFsdWUgPSBmdW5jdGlvbi0+R2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgicHJvdG90eXBl
IikpOwotICAgICAgICBpZiAoIXByb3RvdHlwZVZhbHVlLklzRW1wdHkoKSAmJiBwcm90b3R5cGVW
YWx1ZS0+SXNPYmplY3QoKSkKLSAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2Fz
dChwcm90b3R5cGVWYWx1ZSktPlNldFByb3RvdHlwZShtX2Vycm9yUHJvdG90eXBlLmdldCgpKTsK
KyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBwcm90b3R5cGVWYWx1ZSA9IGZ1bmN0aW9uLT5HZXQo
djg6OlN0cmluZzo6TmV3U3ltYm9sKCJwcm90b3R5cGUiKSk7CisgICAgaWYgKCFwcm90b3R5cGVW
YWx1ZS5Jc0VtcHR5KCkgJiYgcHJvdG90eXBlVmFsdWUtPklzT2JqZWN0KCkpIHsKKyAgICAgICAg
djg6OkxvY2FsPHY4OjpPYmplY3Q+IHByb3RvdHlwZU9iamVjdCA9IHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0Pjo6Q2FzdChwcm90b3R5cGVWYWx1ZSk7CisgICAgICAgIHR5cGUtPmluc3RhbGxQZXJDb250
ZXh0UHJvdG90eXBlUHJvcGVydGllcyhwcm90b3R5cGVPYmplY3QsIGNvbnRleHQpOworICAgICAg
ICBpZiAodHlwZS0+d3JhcHBlclR5cGVQcm90b3R5cGUgPT0gV3JhcHBlclR5cGVFcnJvclByb3Rv
dHlwZSkKKyAgICAgICAgICAgIHByb3RvdHlwZU9iamVjdC0+U2V0UHJvdG90eXBlKG1fZXJyb3JQ
cm90b3R5cGUuZ2V0KCkpOwogICAgIH0KIAogICAgIG1fY29uc3RydWN0b3JNYXAuc2V0KHR5cGUs
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj46Ok5ldyhmdW5jdGlvbikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5oCmluZGV4IDhjM2M0MzdlMjhj
MDgzMWRkMDMxNTkxNDYwMjc1MGZiNjUzZjUyMDQuLjM1NTdhZGU2ZDVhZjFmZjQxNDgyZDZlNDZk
ZGExNWFjYjNlYTliNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UGVyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNv
bnRleHREYXRhLmgKQEAgLTYzLDE4ICs2MywxOCBAQCBwdWJsaWM6CiAgICAgLy8gVG8gY3JlYXRl
IEpTIFdyYXBwZXIgb2JqZWN0cywgd2UgY3JlYXRlIGEgY2FjaGUgb2YgYSAnYm9pbGVyIHBsYXRl
JwogICAgIC8vIG9iamVjdCwgYW5kIHRoZW4gc2ltcGx5IENsb25lIHRoYXQgb2JqZWN0IGVhY2gg
dGltZSB3ZSBuZWVkIGEgbmV3IG9uZS4KICAgICAvLyBUaGlzIGlzIGZhc3RlciB0aGFuIGdvaW5n
IHRocm91Z2ggdGhlIGZ1bGwgb2JqZWN0IGNyZWF0aW9uIHByb2Nlc3MuCi0gICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGUoV3JhcHBlclR5cGVJbmZvKiB0eXBl
KQorICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyRnJvbUNhY2hlKFdyYXBw
ZXJUeXBlSW5mbyogdHlwZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICB7
CiAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGJvaWxlcnBsYXRlID0gbV93cmFw
cGVyQm9pbGVycGxhdGVzLmdldCh0eXBlKTsKLSAgICAgICAgcmV0dXJuICFib2lsZXJwbGF0ZS5J
c0VtcHR5KCkgPyBib2lsZXJwbGF0ZS0+Q2xvbmUoKSA6IGNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGVT
bG93Q2FzZSh0eXBlKTsKKyAgICAgICAgcmV0dXJuICFib2lsZXJwbGF0ZS5Jc0VtcHR5KCkgPyBi
b2lsZXJwbGF0ZS0+Q2xvbmUoKSA6IGNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZSh0eXBl
LCBjb250ZXh0KTsKICAgICB9CiAKLSAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBjb25zdHJ1
Y3RvckZvclR5cGUoV3JhcHBlclR5cGVJbmZvKiB0eXBlKQorICAgIHY4OjpMb2NhbDx2ODo6RnVu
Y3Rpb24+IGNvbnN0cnVjdG9yRm9yVHlwZShXcmFwcGVyVHlwZUluZm8qIHR5cGUsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewogICAgICAgICB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gbV9jb25zdHJ1Y3Rvck1hcC5nZXQodHlwZSk7CiAgICAg
ICAgIGlmICghZnVuY3Rpb24uSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpMb2Nh
bDx2ODo6RnVuY3Rpb24+OjpOZXcoZnVuY3Rpb24pOwotICAgICAgICByZXR1cm4gY29uc3RydWN0
b3JGb3JUeXBlU2xvd0Nhc2UodHlwZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvckZvclR5
cGVTbG93Q2FzZSh0eXBlLCBjb250ZXh0KTsKICAgICB9CiAKICAgICBWOE5QT2JqZWN0TWFwKiB2
OE5QT2JqZWN0TWFwKCkKQEAgLTkwLDggKzkwLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlz
cG9zZSgpOwogCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXJGcm9tQ2Fj
aGVTbG93Q2FzZShXcmFwcGVyVHlwZUluZm8qKTsKLSAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9u
PiBjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZShXcmFwcGVyVHlwZUluZm8qKTsKKyAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlckZyb21DYWNoZVNsb3dDYXNlKFdyYXBwZXJU
eXBlSW5mbyosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICB2ODo6TG9jYWw8djg6OkZ1
bmN0aW9uPiBjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZShXcmFwcGVyVHlwZUluZm8qLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICAvLyBGb3IgZWFjaCBwb3NzaWJsZSB0eXBlIG9m
IHdyYXBwZXIsIHdlIGtlZXAgYSBib2lsZXJwbGF0ZSBvYmplY3QuCiAgICAgLy8gVGhlIGJvaWxl
cnBsYXRlIGlzIHVzZWQgdG8gY3JlYXRlIGFkZGl0aW9uYWwgd3JhcHBlcnMgb2YgdGhlIHNhbWUg
dHlwZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJD
b250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCmluZGV4IDk2MTFkNDdmMzdhMzk0M2Q3ZjBjY2MyOTA3
MzJkYjkwNGNjYTU2NmMuLmJjYjM0OGU0YzQ2M2VmNWI3ZDk0NzBkODY1NzdlZmQxZjNjNDQzODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29u
dGV4dEV4ZWN1dGlvblByb3h5LmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIGJvb2wgV29ya2VyQ29u
dGV4dEV4ZWN1dGlvblByb3h5Ojppbml0aWFsaXplSWZOZWVkZWQoKQogICAgIGlmICghbV93b3Jr
ZXJDb250ZXh0LT5pc0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSkKICAgICAgICAgY29udGV4dFR5
cGUgPSAmVjhTaGFyZWRXb3JrZXJDb250ZXh0OjppbmZvOwogI2VuZGlmCi0gICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb24+IHdvcmtlckNvbnRleHRDb25zdHJ1Y3RvciA9IG1fcGVyQ29udGV4dERh
dGEtPmNvbnN0cnVjdG9yRm9yVHlwZShjb250ZXh0VHlwZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb24+IHdvcmtlckNvbnRleHRDb25zdHJ1Y3RvciA9IG1fcGVyQ29udGV4dERhdGEtPmNv
bnN0cnVjdG9yRm9yVHlwZShjb250ZXh0VHlwZSwgbV93b3JrZXJDb250ZXh0KTsKICAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4ganNXb3JrZXJDb250ZXh0ID0gVjhPYmplY3RDb25zdHJ1Y3Rvcjo6
bmV3SW5zdGFuY2Uod29ya2VyQ29udGV4dENvbnN0cnVjdG9yKTsKICAgICAvLyBCYWlsIG91dCBp
ZiBhbGxvY2F0aW9uIGZhaWxlZC4KICAgICBpZiAoanNXb3JrZXJDb250ZXh0LklzRW1wdHkoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAppbmRleCA2
NDNjMGJjMjYwOThjNTk5YWRiZGNjYmYwM2Q4ZjUwY2Q5MDU2NWVjLi4zYzRiZWZhYThiZmJlOGFh
YzcyOWM2OTMwOGU0NGIxNmRiNGI0ZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9XcmFwcGVyVHlwZUluZm8uaApAQCAtMzcsNyArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCiAgICAgY2xhc3MgQWN0aXZlRE9NT2JqZWN0OwogICAgIGNsYXNzIERPTURhdGFTdG9y
ZTsKLSAgICAKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCiAgICAgc3RhdGlj
IGNvbnN0IGludCB2OERPTVdyYXBwZXJUeXBlSW5kZXggPSAwOwogICAgIHN0YXRpYyBjb25zdCBp
bnQgdjhET01XcmFwcGVyT2JqZWN0SW5kZXggPSAxOwogICAgIHN0YXRpYyBjb25zdCBpbnQgdjhE
ZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCA9IDI7CkBAIC00OCw2ICs0OSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICB0eXBlZGVmIHZvaWQgKCpEZXJlZk9iamVjdEZ1bmN0aW9u
KSh2b2lkKik7CiAgICAgdHlwZWRlZiBBY3RpdmVET01PYmplY3QqICgqVG9BY3RpdmVET01PYmpl
Y3RGdW5jdGlvbikodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7CiAgICAgdHlwZWRlZiB2b2lkICgq
RE9NV3JhcHBlclZpc2l0b3JGdW5jdGlvbikoRE9NRGF0YVN0b3JlKiwgdm9pZCosIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+KTsKKyAgICB0eXBlZGVmIHZvaWQgKCpJbnN0YWxsUGVyQ29udGV4
dFByb3RvdHlwZVByb3BlcnRpZXNGdW5jdGlvbikodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgZW51bSBXcmFwcGVyVHlwZVByb3RvdHlwZSB7
CiAgICAgICAgIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlLApAQCAtODgsNiArOTAsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgIGRlcmVmT2JqZWN0RnVuY3Rpb24o
b2JqZWN0KTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgdm9pZCBpbnN0YWxsUGVyQ29u
dGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBwcm90bywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllc0Z1bmN0aW9uKQorICAgICAgICAg
ICAgICAgIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllc0Z1bmN0aW9uKHByb3Rv
LCBjb250ZXh0KTsKKyAgICAgICAgfQorCiAgICAgICAgIEFjdGl2ZURPTU9iamVjdCogdG9BY3Rp
dmVET01PYmplY3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmICghdG9BY3RpdmVET01PYmplY3RGdW5jdGlvbikKQEAgLTEwNSw2ICsxMTMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IERlcmVmT2JqZWN0RnVuY3Rp
b24gZGVyZWZPYmplY3RGdW5jdGlvbjsKICAgICAgICAgY29uc3QgVG9BY3RpdmVET01PYmplY3RG
dW5jdGlvbiB0b0FjdGl2ZURPTU9iamVjdEZ1bmN0aW9uOwogICAgICAgICBjb25zdCBET01XcmFw
cGVyVmlzaXRvckZ1bmN0aW9uIGRvbVdyYXBwZXJWaXNpdG9yRnVuY3Rpb247CisgICAgICAgIGNv
bnN0IEluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllc0Z1bmN0aW9uIGluc3RhbGxQ
ZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllc0Z1bmN0aW9uOwogICAgICAgICBjb25zdCBXcmFw
cGVyVHlwZUluZm8qIHBhcmVudENsYXNzOwogICAgICAgICBjb25zdCBXcmFwcGVyVHlwZVByb3Rv
dHlwZSB3cmFwcGVyVHlwZVByb3RvdHlwZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggNjBhODRhMGNiOWM5ODFiMzc3MzBiNDcxMWI2ZDhiYWQ3YzNj
ZThlMS4uMjU2YzlkMzdlNDExY2ZlNzBhNmUzNjM3ODJhMzY2M2EwNDQ1M2QzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotV3JhcHBlclR5cGVJbmZvIFY4SFRNTEltYWdlRWxlbWVudENvbnN0
cnVjdG9yOjppbmZvID0geyBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxh
dGUsIDAsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CitXcmFwcGVyVHlw
ZUluZm8gVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OmluZm8gPSB7IFY4SFRNTEltYWdl
RWxlbWVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSwgMCwgMCwgMCwgVjhIVE1MSW1hZ2VFbGVt
ZW50OjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBl
T2JqZWN0UHJvdG90eXBlIH07CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhIVE1M
SW1hZ2VFbGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168384</attachid>
            <date>2012-10-12 02:59:22 -0700</date>
            <delta_ts>2012-10-12 05:49:00 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-99129-20121012185817.patch</filename>
            <type>text/plain</type>
            <size>56852</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzlkZTA2NzU3MWE3NTBl
ZWM1YmRmNDQzZjM4NzRkOTJhOTIyODQ1Yi4uMmQ0ZjYzNjFkMDI3ZTI5MDVlZGJhYWM5MDgyODA2
MjU2OTQ0ZDA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAxMi0xMC0xMSAgTU9S
SVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBbVjhdIFBlckNvbnRl
eHRFbmFibGVkIG1ldGhvZHMgc2hvdWxkIGJlIGluc3RhbGxlZCB3aGVuIHRoZSBjb25zdHJ1Y3Rv
ciBpcyBjcmVhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05OTEyOQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnRhcm8gSGFyYS4KKworICAgICAg
ICBCZWZvcmUgdGhpcyBjaGFuZ2UsIGdlbmVyYXRlZCBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRp
ZXMoKSBtZXRob2QKKyAgICAgICAgaW5qZWN0ZWQgYm90aCBwZXItY29udGV4dCBhdHRyaWJ1dGVz
IGFuZCBmdW5jdGlvbnMsIGFuZCBmdW5jdGlvbnMKKyAgICAgICAgd2VyZSBpbmplY3RlZCBpbnRv
IHRoZSBwcm90b3R5ZSBvYmplY3QuICBUaGlzIG1lYW5zIHRoYXQgdGhlCisgICAgICAgIGZ1bmN0
aW9ucyBhcmUgaW5qZWN0ZWQgaW50byB0aGUgcHJvdG90eXBlIHJlcGVhdGVkbHkgZm9yIGVhY2gK
KyAgICAgICAgaW50YW5jZSBjcmVhdGlvbi4gIFRoaXMgaW5qZWN0aW9uIGNhbiBiZSBoYXBwZW5l
ZCBvbmx5IG9uY2UgcGVyCisgICAgICAgIHByb3RvdHlwZSBvYmplY3QsIHdoaWNoIGlzIGNsZWFy
ZXIgYW5kIGlzIGZhc3Rlci4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIGluc3Rh
bGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcygpCisgICAgICAgIGdlbmVyYXRlZCBtZXRo
b2QsIHdoaWNoIGlzIGRlc2lnbmVkIHRvIGJlIGNhbGxlZCBmb3IgZWFjaCB0aW1lIHdoZW4gdGhl
IHByb3RvdHlwZQorICAgICAgICBvYmplY3QgaXMgY3JlYXRlZC4KKworICAgICAgICBUbyBkbyB0
aGF0LCBXcmFwcGVyVHlwZUluZm8gaXMgZXh0ZW5kZWQgdG8gaG9sZCBhbiBhZGRpdGlvbmFsCisg
ICAgICAgIGZ1bmN0aW9uIHBvaW50ZXIgdG8gYW4gaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQ
cm9wZXJ0aWVzKCkKKyAgICAgICAgaW1wbGVtZW50YXRpb24gc28gdGhhdCB3ZSBjYWxsIGl0IGZy
b20gVjhQZXJDb250ZXh0RGF0YTo6Y29uc3RydWN0b3JGb3JUeXBlU2xvd0Nhc2UoKSwKKyAgICAg
ICAgd2hlcmUgdGhlIHByb3RvdHlwZSBpbnN0YW5jZSBpcyBjcmVhdGVkLgorCisgICAgICAgIE90
aGVyIGNoYW5nZXM6CisgICAgICAgIC0gQWRkZWQgc29tZSBtb2RpZmljYXRpb24gdG8gcGFzcyBh
cm91bmQgdGhlIHBhcmFtZXRlciB0byBjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZSgpLgorICAg
ICAgICAtIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcygpIGFyZSBub3cgYWx3YXlzIGdlbmVy
YXRlZCBmb3Igc2ltcGxpY2l0eS4gRW1wdHkgaW1wbGVtZW50YXRpb25zIGFyZSBpbmxpbmVkIHRo
dXMKKyAgICAgICAgICBubyBzcGVlZCBwZW5hbHR5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uQ2VudGVyOjpkb2N1bWVudCk6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNlbnRlci5oOgorICAgICAgICAoTm90aWZpY2F0aW9uQ2VudGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVy
YXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JHZXR0ZXIpOgorICAgICAg
ICAoR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbik6IEV4dHJhY3RlZCBwZXItY29udGV4dCBmdW5jdGlvbiBhZGRpdGlvbnMg
dG8gbmV3IGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcygpIGZ1bmN0aW9uLgor
ICAgICAgICAoR2VuZXJhdGVUb1Y4Q29udmVydGVycyk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJyYXk6OndyYXBTbG93KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4RmxvYXQ2NEFycmF5OjppbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6VjhGbG9hdDY0QXJyYXk6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVy
dGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURP
TU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEFjdGl2ZURPTU9iamVjdDo6d3JhcFNsb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEFjdGl2ZURPTU9iamVjdDo6aW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5
cGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6d3JhcFNsb3cpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Omluc3RhbGxQZXJDb250ZXh0UHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6aW5zdGFs
bFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OndyYXBTbG93KToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6aW5zdGFsbFBl
ckNvbnRleHRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3Ry
dWN0b3I6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRUYXJnZXQ6OndyYXBTbG93
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50VGFyZ2V0OjppbnN0YWxsUGVyQ29udGV4
dFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRUYXJnZXQ6Omluc3Rh
bGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdEV4Y2VwdGlvbjo6d3JhcFNsb3cpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4VGVzdEV4Y2VwdGlvbjo6aW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdEV4Y2VwdGlvbjo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50
ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
SW50ZXJmYWNlOjp3cmFwU2xvdyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEludGVyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50ZXJmYWNlOjpp
bnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50
ZXJmYWNlOjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcjo6d3JhcFNsb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjppbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW5zdGFs
bFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OndyYXBTbG93KToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6aW5zdGFsbFBl
ckNvbnRleHRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5hbWVkQ29uc3Ry
dWN0b3I6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjp3cmFwU2xvdyk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4VGVzdE5vZGU6Omluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3ROb2RlOjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OndyYXBTbG93KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2U6Omluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Omluc3RhbGxQZXJDb250
ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3MvdjgvTlBWOE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpucE9iamVjdFR5cGVJbmZvKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V2luZG93U2hlbGw6Omluc3RhbGxET01XaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6Omluc3RhbnRp
YXRlVjhPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJDb250ZXh0RGF0YTo6Y3JlYXRlV3JhcHBlckZyb21D
YWNoZVNsb3dDYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVyQ29udGV4dERhdGE6OmNvbnN0
cnVjdG9yRm9yVHlwZVNsb3dDYXNlKTogTm93IGludm9rZXMgaW5zdGFsbFBlckNvbnRleHRQcm90
b3R5cGVQcm9wZXJ0aWVzKCkKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRh
Lmg6CisgICAgICAgIChXZWJDb3JlOjpWOFBlckNvbnRleHREYXRhOjpjcmVhdGVXcmFwcGVyRnJv
bUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9y
Rm9yVHlwZSk6CisgICAgICAgIChWOFBlckNvbnRleHREYXRhKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Ojppbml0aWFsaXplSWZOZWVkZWQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXcmFwcGVyVHlwZUluZm86Omluc3RhbGxQZXJDb250ZXh0UHJvdG90
eXBlUHJvcGVydGllcyk6IEFkZGVkLgorICAgICAgICAoV3JhcHBlclR5cGVJbmZvKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMTAtMTEgIE5hdCBEdWNhICA8bmR1Y2FAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEV4cG9zZSBoaWdoLXJlc29sdXRpb24gb24gcmVxdWVzdEFu
aW1hdGlvbkZyYW1lIGNhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDFkMjEzNmQ4
NGUxNjc2NDkzMTI4MGQwNDAzMjJjN2EzNzk5ODNmMGEuLjMyNjk3NmQ3MTI1NzViOTE3YTEwYmEz
ZmExZDY1MWQzOWJkMTMxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCkBAIC01NSwxMiArNTUs
MTAgQEAgTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgTm90aWZpY2EKIHsKIH0KIAotI2lmIEVOQUJMRShMRUdBQ1lf
Tk9USUZJQ0FUSU9OUykKIERvY3VtZW50KiBOb3RpZmljYXRpb25DZW50ZXI6OmRvY3VtZW50KCkg
Y29uc3QgewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CiAgICAgcmV0dXJuIGNvbnRleHQtPmlzRG9jdW1lbnQoKSA/IHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4oY29udGV4dCkgOiAwOwogfQotI2VuZGlmCiAKICNpZiBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpCiBpbnQgTm90aWZpY2F0aW9uQ2VudGVyOjpjaGVja1Blcm1p
c3Npb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNlbnRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5oCmluZGV4IDA1ZmNmYjMwZTgwYmVlYmRlM2NhZWM4ZmQ5
YjNmZTJlMmZmOTg5MjcuLmIxN2RlOWQ1ZDEzZmI5MmQ1ZjE5ZTYxZWYyMTg2OGVlODQyODhhYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25DZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ2VudGVyLmgKQEAgLTg0LDggKzg0LDggQEAgcHVibGljOgogI2lmIEVOQUJM
RShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBpbnQgY2hlY2tQZXJtaXNzaW9uKCk7CiAgICAg
dm9pZCByZXF1ZXN0UGVybWlzc2lvbihQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4pOwotICAgIERv
Y3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogI2VuZGlmCisgICAgRG9jdW1lbnQqIGRvY3VtZW50
KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4
IGM0NDIzY2I5NWM0NDljNzg4NWJlYWE1ZmE4ZWZjY2QwMTliNjU3MTYuLmVmZWIyYzUwMmExYzQ2
OWNiN2QzNWYwN2E1YjRhODU4OWM4YTVhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC00MDIsNyArNDAyLDcgQEAgRU5E
CiBFTkQKICAgICB9CiAKLSAgICBteSBAZW5hYmxlZFBlckNvbnRleHQ7CisgICAgbXkgQGVuYWJs
ZWRQZXJDb250ZXh0RnVuY3Rpb25zOwogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRkYXRh
Tm9kZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5uYW1lOwogICAgICAgICBteSAkYXR0ckV4dCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXM7CkBAIC00MTYsNyArNDE2LDcgQEAgRU5ECiAgICAgICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBp
ZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCRhdHRyRXh0LT57
IlY4RW5hYmxlZFBlckNvbnRleHQifSkgewotICAgICAgICAgICAgcHVzaChAZW5hYmxlZFBlckNv
bnRleHQsICRmdW5jdGlvbik7CisgICAgICAgICAgICBwdXNoKEBlbmFibGVkUGVyQ29udGV4dEZ1
bmN0aW9ucywgJGZ1bmN0aW9uKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDI2LDYgKzQyNiw3
IEBAIEVORAogRU5ECiAgICAgfQogCisgICAgbXkgQGVuYWJsZWRQZXJDb250ZXh0QXR0cmlidXRl
czsKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkg
ewogICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKICAgICAg
ICAgbXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
czsKQEAgLTQ0OSw3ICs0NTAsNyBAQCBFTkQKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKICAgICAgICAgfQogICAgICAgICBpZiAoJGF0dHJFeHQtPnsiVjhFbmFibGVkUGVyQ29u
dGV4dCJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBlbmFibGVkUGVyQ29udGV4dCwgJGF0dHJpYnV0
ZSk7CisgICAgICAgICAgICBwdXNoKEBlbmFibGVkUGVyQ29udGV4dEF0dHJpYnV0ZXMsICRhdHRy
aWJ1dGUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00NjQsOSArNDY1LDIzIEBAIEVORAogRU5E
CiAgICAgfQogCi0gICAgaWYgKEBlbmFibGVkUGVyQ29udGV4dCkgeworICAgIGlmIChAZW5hYmxl
ZFBlckNvbnRleHRBdHRyaWJ1dGVzKSB7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8
RU5EKTsKKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiwgJHtuYXRpdmVUeXBlfSopOworRU5ECisgICAgfSBlbHNlIHsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwotICAgIHN0YXRpYyB2b2lkIGluc3Rh
bGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCAke2ltcGxDbGFz
c05hbWV9Kik7CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4sICR7bmF0aXZlVHlwZX0qKSB7IH0KK0VORAorICAgIH0KKwor
ICAgIGlmIChAZW5hYmxlZFBlckNvbnRleHRGdW5jdGlvbnMpIHsKKyAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgPDxFTkQpOworICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJv
dG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kik7CitFTkQKKyAgICB9IGVsc2UgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCA8PEVORCk7CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9w
ZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7
IH0KIEVORAogICAgIH0KIApAQCAtODEzLDkgKzgyOCwxOCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+ICR7aW1wbENsYXNzTmFtZX1Db25zdHJ1Y3RvckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cgogICAgIFY4UGVyQ29udGV4dERhdGEqIHBlckNvbnRleHREYXRhID0gVjhQZXJDb250ZXh0
RGF0YTo6ZnJvbShpbmZvLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKCFw
ZXJDb250ZXh0RGF0YSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJu
IHBlckNvbnRleHREYXRhLT5jb25zdHJ1Y3RvckZvclR5cGUoV3JhcHBlclR5cGVJbmZvOjp1bndy
YXAoZGF0YSkpOwotfQorRU5ECiAKKyAgICBpZiAoJGltcGxDbGFzc05hbWUgZXEgIkRPTVdpbmRv
dyIpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICByZXR1cm4gcGVyQ29u
dGV4dERhdGEtPmNvbnN0cnVjdG9yRm9yVHlwZShXcmFwcGVyVHlwZUluZm86OnVud3JhcChkYXRh
KSwgVjhET01XaW5kb3c6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpLT5kb2N1bWVudCgpKTtcbiIp
OworRU5ECisgICAgfSBlbHNpZiAoJGltcGxDbGFzc05hbWUgZXEgIldvcmtlckNvbnRleHQiKSB7
CisgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgcmV0dXJuIHBlckNvbnRleHRE
YXRhLT5jb25zdHJ1Y3RvckZvclR5cGUoV3JhcHBlclR5cGVJbmZvOjp1bndyYXAoZGF0YSksIFY4
V29ya2VyQ29udGV4dDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSkpO1xuIikKKyAgICB9IGVsc2Ug
eworICAgICAgICBkaWUgIlVua25vd24gQ29udGV4dCAke2ltcGxDbGFzc05hbWV9IgorICAgIH0K
KyAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Cit9CiBFTkQKIH0KIApAQCAtMjAz
NiwxMiArMjA2MCwxMiBAQCBzdWIgR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2sKIAog
ICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBY3RpdmVET01PYmplY3Qi
fSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotV3JhcHBlclR5cGVJbmZv
IFY4JHtpbXBsQ2xhc3NOYW1lfUNvbnN0cnVjdG9yOjppbmZvID0geyBWOCR7aW1wbENsYXNzTmFt
ZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIFY4JHtpbXBsQ2xhc3NOYW1lfTo6ZGVyZWZPYmpl
Y3QsIFY4JHtpbXBsQ2xhc3NOYW1lfTo6dG9BY3RpdmVET01PYmplY3QsIDAsIDAsIFdyYXBwZXJU
eXBlT2JqZWN0UHJvdG90eXBlIH07CitXcmFwcGVyVHlwZUluZm8gVjgke2ltcGxDbGFzc05hbWV9
Q29uc3RydWN0b3I6OmluZm8gPSB7IFY4JHtpbXBsQ2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpHZXRU
ZW1wbGF0ZSwgVjgke2ltcGxDbGFzc05hbWV9OjpkZXJlZk9iamVjdCwgVjgke2ltcGxDbGFzc05h
bWV9Ojp0b0FjdGl2ZURPTU9iamVjdCwgMCwgVjgke2ltcGxDbGFzc05hbWV9OjppbnN0YWxsUGVy
Q29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBl
IH07CiAKIEVORAogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVO
RCk7Ci1XcmFwcGVyVHlwZUluZm8gVjgke2ltcGxDbGFzc05hbWV9Q29uc3RydWN0b3I6OmluZm8g
PSB7IFY4JHtpbXBsQ2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSwgMCwgMCwgMCwg
MCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKK1dyYXBwZXJUeXBlSW5mbyBWOCR7aW1w
bENsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6aW5mbyA9IHsgVjgke2ltcGxDbGFzc05hbWV9Q29uc3Ry
dWN0b3I6OkdldFRlbXBsYXRlLCAwLCAwLCAwLCBWOCR7aW1wbENsYXNzTmFtZX06Omluc3RhbGxQ
ZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcywgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5
cGUgfTsKIAogRU5ECiAgICAgfQpAQCAtMjU1MCw2ICsyNTc0LDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICBteSAkdmlzaWJsZUludGVyZmFjZU5hbWUgPSAkY29kZUdlbmVyYXRv
ci0+R2V0VmlzaWJsZUludGVyZmFjZU5hbWUoJGRhdGFOb2RlKTsKICAgICBteSAkY2xhc3NOYW1l
ID0gIlY4JGludGVyZmFjZU5hbWUiOwogICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gJGludGVyZmFj
ZU5hbWU7CisgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlRm9yQ29udmVyc2lvbnMo
JGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAKICAgICAjIC0gQWRkIGRlZmF1bHQgaGVhZGVy
IHRlbXBsYXRlCiAgICAgcHVzaChAaW1wbEZpeGVkSGVhZGVyLCBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uQ29udGVudEhlYWRlcigkZGF0YU5vZGUpKTsKQEAgLTI1ODAsNyArMjYwNSw3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICBteSAkV3JhcHBlclR5cGVQcm90b3R5cGUgPSAk
ZGF0YU5vZGUtPmlzRXhjZXB0aW9uID8gIldyYXBwZXJUeXBlRXJyb3JQcm90b3R5cGUiIDogIldy
YXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIjsKIAotICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICJXcmFwcGVyVHlwZUluZm8gJHtjbGFzc05hbWV9OjppbmZvID0geyAke2NsYXNzTmFtZX06Okdl
dFRlbXBsYXRlLCAke2NsYXNzTmFtZX06OmRlcmVmT2JqZWN0LCAkdG9BY3RpdmUsICRkb21WaXNp
dG9yLCAkcGFyZW50Q2xhc3NJbmZvLCAkV3JhcHBlclR5cGVQcm90b3R5cGUgfTtcblxuIik7Cisg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIldyYXBwZXJUeXBlSW5mbyAke2NsYXNzTmFtZX06
OmluZm8gPSB7ICR7Y2xhc3NOYW1lfTo6R2V0VGVtcGxhdGUsICR7Y2xhc3NOYW1lfTo6ZGVyZWZP
YmplY3QsICR0b0FjdGl2ZSwgJGRvbVZpc2l0b3IsICR7Y2xhc3NOYW1lfTo6aW5zdGFsbFBlckNv
bnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAkcGFyZW50Q2xhc3NJbmZvLCAkV3JhcHBlclR5cGVQ
cm90b3R5cGUgfTtcblxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIm5hbWVzcGFj
ZSAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbCB7XG5cbiIpOwogCiAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgInRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIFY4X1VTRShUKSB7IH1cblxu
Iik7CkBAIC0yOTkwLDcgKzMwMTUsNiBAQCBFTkQKIEVORAogICAgIH0KIAotICAgIG15ICRuYXRp
dmVUeXBlID0gR2V0TmF0aXZlVHlwZUZvckNvbnZlcnNpb25zKCRkYXRhTm9kZSwgJGludGVyZmFj
ZU5hbWUpOwogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKICAgICAvLyBDdXN0b20g
dG9TdHJpbmcgdGVtcGxhdGUKQEAgLTMwMzIsNTIgKzMwNTYsNTkgQEAgYm9vbCAke2NsYXNzTmFt
ZX06Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKIAogRU5ECiAKLSAg
ICBpZiAoQGVuYWJsZWRQZXJDb250ZXh0QXR0cmlidXRlcyBvciBAZW5hYmxlZFBlckNvbnRleHRG
dW5jdGlvbnMpIHsKKyAgICBpZiAoQGVuYWJsZWRQZXJDb250ZXh0QXR0cmlidXRlcykgewogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotdm9pZCAke2NsYXNzTmFtZX06Omluc3Rh
bGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGluc3RhbmNlLCAk
e2ltcGxDbGFzc05hbWV9KiBpbXBsKQordm9pZCAke2NsYXNzTmFtZX06Omluc3RhbGxQZXJDb250
ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGluc3RhbmNlLCAke25hdGl2ZVR5
cGV9KiBpbXBsKQogewogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBwcm90byA9IHY4OjpMb2Nh
bDx2ODo6T2JqZWN0Pjo6Q2FzdChpbnN0YW5jZS0+R2V0UHJvdG90eXBlKCkpOwogICAgIC8vIFdo
ZW4gYnVpbGRpbmcgUXRXZWJraXQgd2l0aCBWOCB0aGlzIHZhcmlhYmxlIGlzIHVudXNlZCB3aGVu
IG5vbmUgb2YgdGhlIGZlYXR1cmVzIGFyZSBlbmFibGVkLgogICAgIFVOVVNFRF9QQVJBTShwcm90
byk7CiBFTkQKIAotICAgICAgICBpZiAoQGVuYWJsZWRQZXJDb250ZXh0QXR0cmlidXRlcykgewot
ICAgICAgICAgICAgIyBTZXR1cCB0aGUgZW5hYmxlLWJ5LXNldHRpbmdzIGF0dHJzIGlmIHdlIGhh
dmUgdGhlbQotICAgICAgICAgICAgZm9yZWFjaCBteSAkcnVudGltZUF0dHIgKEBlbmFibGVkUGVy
Q29udGV4dEF0dHJpYnV0ZXMpIHsKLSAgICAgICAgICAgICAgICBteSAkZW5hYmxlRnVuY3Rpb24g
PSBHZXRDb250ZXh0RW5hYmxlRnVuY3Rpb24oJHJ1bnRpbWVBdHRyLT5zaWduYXR1cmUpOwotICAg
ICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5l
cmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRydW50aW1lQXR0ci0+c2lnbmF0dXJlKTsKLSAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4i
KSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKCR7ZW5hYmxlRnVuY3Rpb259KGltcGwtPmRvY3VtZW50KCkpKSB7XG4iKTsK
LSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3RhdGljIGNvbnN0
IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XFxcbiIpOwot
ICAgICAgICAgICAgICAgIEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJpYnV0ZSgkaW50ZXJmYWNl
TmFtZSwgJHJ1bnRpbWVBdHRyLCAiOyIsICIgICAgIik7Ci0gICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsIDw8RU5EKTsKKyAgICAgICAgIyBTZXR1cCB0aGUgZW5hYmxlLWJ5LXNldHRp
bmdzIGF0dHJzIGlmIHdlIGhhdmUgdGhlbQorICAgICAgICBmb3JlYWNoIG15ICRydW50aW1lQXR0
ciAoQGVuYWJsZWRQZXJDb250ZXh0QXR0cmlidXRlcykgeworICAgICAgICAgICAgbXkgJGVuYWJs
ZUZ1bmN0aW9uID0gR2V0Q29udGV4dEVuYWJsZUZ1bmN0aW9uKCRydW50aW1lQXR0ci0+c2lnbmF0
dXJlKTsKKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9y
LT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRydW50aW1lQXR0ci0+c2lnbmF0dXJlKTsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31c
biIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmICgke2VuYWJsZUZ1bmN0aW9ufShpbXBsLT5kb2N1bWVudCgpKSkge1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3RhdGljIGNvbnN0IFY4RE9N
Q29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XFxcbiIpOworICAgICAg
ICAgICAgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmlidXRlKCRpbnRlcmZhY2VOYW1lLCAkcnVu
dGltZUF0dHIsICI7IiwgIiAgICAiKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8
PEVORCk7CiAgICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGlu
c3RhbmNlLCBwcm90bywgYXR0ckRhdGEpOwogRU5ECi0gICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgfVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1c
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWYgLy8gJHtjb25kaXRp
b25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQorICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworfQorRU5ECisgICAgfQogCisgICAgaWYgKEBl
bmFibGVkUGVyQ29udGV4dEZ1bmN0aW9ucykgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
PDxFTkQpOwordm9pZCAke2NsYXNzTmFtZX06Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJv
cGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHByb3RvLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQoreworICAgIFVOVVNFRF9QQVJBTShwcm90byk7CisgICAgVU5VU0VEX1BB
UkFNKGNvbnRleHQpOworRU5ECiAgICAgICAgICMgU2V0dXAgdGhlIGVuYWJsZS1ieS1zZXR0aW5n
cyBmdW5jdGlvbnMgaWYgd2UgaGF2ZSB0aGVtCi0gICAgICAgIGlmIChAZW5hYmxlZFBlckNvbnRl
eHRGdW5jdGlvbnMpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKICAgICB2ODo6TG9jYWw8djg6OlNp
Z25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhHZXRUZW1wbGF0
ZSgpKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2Fz
ZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCiBFTkQKIAotICAgICAgICAgICAgZm9yZWFjaCBteSAk
cnVudGltZUZ1bmMgKEBlbmFibGVkUGVyQ29udGV4dEZ1bmN0aW9ucykgewotICAgICAgICAgICAg
ICAgIG15ICRlbmFibGVGdW5jdGlvbiA9IEdldENvbnRleHRFbmFibGVGdW5jdGlvbigkcnVudGlt
ZUZ1bmMtPnNpZ25hdHVyZSk7Ci0gICAgICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5n
ID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJHJ1bnRpbWVGdW5j
LT5zaWduYXR1cmUpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jaWYg
JHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoJHtlbmFibGVGdW5jdGlvbn0oaW1w
bC0+ZG9jdW1lbnQoKSkpIHtcbiIpOwotICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJHJ1bnRp
bWVGdW5jLT5zaWduYXR1cmUtPm5hbWU7Ci0gICAgICAgICAgICAgICAgbXkgJGNhbGxiYWNrID0g
R2V0RnVuY3Rpb25UZW1wbGF0ZUNhbGxiYWNrTmFtZSgkcnVudGltZUZ1bmMsICRpbnRlcmZhY2VO
YW1lKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOworICAgICAg
ICBmb3JlYWNoIG15ICRydW50aW1lRnVuYyAoQGVuYWJsZWRQZXJDb250ZXh0RnVuY3Rpb25zKSB7
CisgICAgICAgICAgICBteSAkZW5hYmxlRnVuY3Rpb24gPSBHZXRDb250ZXh0RW5hYmxlRnVuY3Rp
b24oJHJ1bnRpbWVGdW5jLT5zaWduYXR1cmUpOworICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFs
U3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJHJ1bnRp
bWVGdW5jLT5zaWduYXR1cmUpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNp
ZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC0+aXNE
b2N1bWVudCgpICYmICR7ZW5hYmxlRnVuY3Rpb259KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29u
dGV4dCkpKSB7XG4iKTsKKyAgICAgICAgICAgIG15ICRuYW1lID0gJHJ1bnRpbWVGdW5jLT5zaWdu
YXR1cmUtPm5hbWU7CisgICAgICAgICAgICBteSAkY2FsbGJhY2sgPSBHZXRGdW5jdGlvblRlbXBs
YXRlQ2FsbGJhY2tOYW1lKCRydW50aW1lRnVuYywgJGludGVyZmFjZU5hbWUpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKICAgICAgICAgcHJvdG8tPlNldCh2ODo6U3Ry
aW5nOjpOZXdTeW1ib2woIiR7bmFtZX0iKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygke2Nh
bGxiYWNrfSwgdjhVbmRlZmluZWQoKSwgZGVmYXVsdFNpZ25hdHVyZSktPkdldEZ1bmN0aW9uKCkp
OwogRU5ECi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7Ci0g
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25h
bFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25k
aXRpb25hbFN0cmluZzsKICAgICAgICAgfQogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8
PEVORCk7CkBAIC0zNDAwLDcgKzM0MzEsNyBAQCBFTkQKICAgICBVTlVTRURfUEFSQU0oZG9jdW1l
bnQpOwogRU5ECiAKLSAgICBpZiAoSXNOb2RlU3ViVHlwZSgkZGF0YU5vZGUpKSB7CisgICAgaWYg
KElzTm9kZVN1YlR5cGUoJGRhdGFOb2RlKSB8fCAkaW50ZXJmYWNlTmFtZSBlcSAiTm90aWZpY2F0
aW9uQ2VudGVyIikgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogICAgIGRv
Y3VtZW50ID0gaW1wbC0+ZG9jdW1lbnQoKTsgCiBFTkQKQEAgLTM0MjQsMTkgKzM0NTUsOSBAQCBF
TkQKIAogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVy
biB3cmFwcGVyOwotRU5ECiAKLSAgICBteSAkaGFzRW5hYmxlZFBlckNvbnRleHRGdW5jdGlvbnMg
PSAwOwotICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkg
ewotICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJWOEVuYWJsZWRQZXJDb250ZXh0In0pIHsKLSAgICAgICAgICAgICRoYXNFbmFibGVkUGVyQ29u
dGV4dEZ1bmN0aW9ucyA9IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCRoYXNFbmFibGVk
UGVyQ29udGV4dEZ1bmN0aW9ucykgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQp
OwogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsK
IEVORAotICAgIH0KIAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6c2V0SlNX
cmFwcGVyRm9yJHtkb21NYXBOYW1lfShpbXBsLCB3cmFwcGVyLCBpc29sYXRlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJh
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0
QXJyYXkuY3BwCmluZGV4IGRjZjM1OTBkODRiZDQyNjJmOGNhMmRjZTJmMDVkNmM3MmM5MTY5MDgu
LmEyZjBhNTExYmVkMGQzYmI2NTFiNDdlMzVlN2U4MzU2Nzg5MGUzYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFy
cmF5LmNwcApAQCAtNDIsNyArNDIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdyYXBw
ZXJUeXBlSW5mbyBWOEZsb2F0NjRBcnJheTo6aW5mbyA9IHsgVjhGbG9hdDY0QXJyYXk6OkdldFRl
bXBsYXRlLCBWOEZsb2F0NjRBcnJheTo6ZGVyZWZPYmplY3QsIDAsIDAsICZWOEFycmF5QnVmZmVy
Vmlldzo6aW5mbywgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKK1dyYXBwZXJUeXBlSW5m
byBWOEZsb2F0NjRBcnJheTo6aW5mbyA9IHsgVjhGbG9hdDY0QXJyYXk6OkdldFRlbXBsYXRlLCBW
OEZsb2F0NjRBcnJheTo6ZGVyZWZPYmplY3QsIDAsIDAsIFY4RmxvYXQ2NEFycmF5OjppbnN0YWxs
UGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsICZWOEFycmF5QnVmZmVyVmlldzo6aW5mbywg
V3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKIAogbmFtZXNwYWNlIEZsb2F0NjRBcnJheVY4
SW50ZXJuYWwgewogCkBAIC0xNjksNiArMTY5LDggQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBW
OEZsb2F0NjRBcnJheTo6d3JhcFNsb3coUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IGltcGwsIHYK
IAogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3
cmFwcGVyOworCisgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwu
Z2V0KCkpOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBW
OERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVyLCBpc29s
YXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFu
ZGxlLk1hcmtJbmRlcGVuZGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaAppbmRleCBjMGZlOTcyMDg1ZWI4
MWZlMzMyMzJkODI5MmEyY2U5OWViNDcxYjRiLi42ODE5YzczY2I4NWY0NWM3OTg1NmY2N2Y0OTY3
ZDlmZmUxZWU4OWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaApAQCAtNDgsNiArNDgsOCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBpbmZvOwogICAgIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7CiAg
ICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVy
SW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4
dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgRmxvYXQ2NEFycmF5KikgeyB9Cisg
ICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7IH0KIHByaXZhdGU6
CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcFNsb3coUGFzc1JlZlB0cjxG
bG9hdDY0QXJyYXk+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6
Oklzb2xhdGUqKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDNl
MmIxYTk3NDYzZGEzODg2NmM4NmI1YmI5ZTMzNmZmOTZlNGVhYjMuLmI1OTI0ZmZjZmU5ODYwNmEy
NmU4Y2I1MTYwYmU3MmU1NjU3MmQ3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3Qu
Y3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV3JhcHBlclR5
cGVJbmZvIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6aW5mbyA9IHsgVjhUZXN0QWN0aXZlRE9NT2Jq
ZWN0OjpHZXRUZW1wbGF0ZSwgVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpkZXJlZk9iamVjdCwgMCwg
MCwgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKK1dyYXBwZXJUeXBlSW5mbyBWOFRl
c3RBY3RpdmVET01PYmplY3Q6OmluZm8gPSB7IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVt
cGxhdGUsIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6ZGVyZWZPYmplY3QsIDAsIDAsIFY4VGVzdEFj
dGl2ZURPTU9iamVjdDo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBX
cmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OwogCiBuYW1lc3BhY2UgVGVzdEFjdGl2ZURPTU9i
amVjdFY4SW50ZXJuYWwgewogCkBAIC0xOTcsNiArMTk3LDggQEAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBWOFRlc3RBY3RpdmVET01PYmplY3Q6OndyYXBTbG93KFBhc3NSZWZQdHI8VGVzdEFjdGl2
ZURPTU8KIAogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJl
dHVybiB3cmFwcGVyOworCisgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIs
IGltcGwuZ2V0KCkpOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5k
bGUgPSBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVy
LCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFw
cGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5o
CmluZGV4IDI1ODAzYTQ1MTkyNjE5YmZjODQ3NGM1NWIyNWE1YTFhYWVkNjYyOTYuLmFkYTU5MTk5
MTEzOWI3NWRmZTczMDhkZWU4NzkzN2M3Y2VlNjY2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9N
T2JqZWN0LmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQg
aW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCAr
IDA7CiAgICAgc3RhdGljIGJvb2wgbmFtZWRTZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBob3N0LCB2ODo6TG9jYWw8djg6OlZhbHVlPiBrZXksIHY4OjpBY2Nlc3NUeXBlLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiBkYXRhKTsKICAgICBzdGF0aWMgYm9vbCBpbmRleGVkU2VjdXJpdHlD
aGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdWludDMyX3QgaW5kZXgsIHY4OjpBY2Nl
c3NUeXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPiBkYXRhKTsKKyAgICBzdGF0aWMgdm9pZCBpbnN0
YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdEFjdGl2
ZURPTU9iamVjdCopIHsgfQorICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90
eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KikgeyB9CiBwcml2YXRlOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBTbG93KFBhc3NSZWZQdHI8VGVzdEFjdGl2ZURPTU9iamVjdD4sIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdl
dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IGFiNWI1YmI4MTQ0ZTNhYmE3NmU2NDY5OTI5M2M4
MWE1YTc1MjM5ZDguLmVlZjQ0M2I2MWIzMmY2YzZlOTY1NDNmNTkwMmY5NWYzMjkzNzYyZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RD
dXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtMzIsNyArMzIsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdyYXBwZXJUeXBlSW5mbyBWOFRlc3RDdXN0b21OYW1l
ZEdldHRlcjo6aW5mbyA9IHsgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OkdldFRlbXBsYXRlLCBW
OFRlc3RDdXN0b21OYW1lZEdldHRlcjo6ZGVyZWZPYmplY3QsIDAsIDAsIDAsIFdyYXBwZXJUeXBl
T2JqZWN0UHJvdG90eXBlIH07CitXcmFwcGVyVHlwZUluZm8gVjhUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXI6OmluZm8gPSB7IFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRUZW1wbGF0ZSwgVjhUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXI6OmRlcmVmT2JqZWN0LCAwLCAwLCBWOFRlc3RDdXN0b21OYW1lZEdl
dHRlcjo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlw
ZU9iamVjdFByb3RvdHlwZSB9OwogCiBuYW1lc3BhY2UgVGVzdEN1c3RvbU5hbWVkR2V0dGVyVjhJ
bnRlcm5hbCB7CiAKQEAgLTEzMSw2ICsxMzEsOCBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RDdXN0b21OYQog
CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdy
YXBwZXI7CisKKyAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5n
ZXQoKSk7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4
RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xh
dGUpOwogICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5k
bGUuTWFya0luZGVwZW5kZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCmlu
ZGV4IDQ3Mzg1OGYyZWZmYzEwYTg3ZWE3MDJjMzUzNzRlODA5MWVlZDE5YTcuLjExNDhiMjVjMTUz
MmQ0NTc3YjAyMzI0NzY2MmQ1YjkwMjY3NGQ5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1l
ZEdldHRlci5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV3JhcHBlclR5
cGVJbmZvIGluZm87CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuYW1lZFByb3Bl
cnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYp
OwogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZhdWx0V3Jh
cHBlckludGVybmFsRmllbGRDb3VudCArIDA7CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNv
bnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRlc3RDdXN0b21OYW1lZEdl
dHRlciopIHsgfQorICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJv
cGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kikg
eyB9CiBwcml2YXRlOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93
KFBhc3NSZWZQdHI8VGVzdEN1c3RvbU5hbWVkR2V0dGVyPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCmluZGV4IDBiOTVjMTc4OTg0NzkyYjk1YzdiYWU5YmU1ODEwMDA5YTZi
YTA1ZTIuLjczNjkxMWFlZjA0MzBiMmU3ZDUwYTE5MGY5ZTYyZDA5YmIwMmY1YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1XcmFwcGVyVHlwZUluZm8gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
aW5mbyA9IHsgVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIFY4VGVzdEV2ZW50
Q29uc3RydWN0b3I6OmRlcmVmT2JqZWN0LCAwLCAwLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3Rv
dHlwZSB9OworV3JhcHBlclR5cGVJbmZvIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmluZm8gPSB7
IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlLCBWOFRlc3RFdmVudENvbnN0cnVj
dG9yOjpkZXJlZk9iamVjdCwgMCwgMCwgVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6aW5zdGFsbFBl
ckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlw
ZSB9OwogCiBuYW1lc3BhY2UgVGVzdEV2ZW50Q29uc3RydWN0b3JWOEludGVybmFsIHsKIApAQCAt
MTY4LDYgKzE2OCw4IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRDb25zdHJ1
Y3Rvcjo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0RXZlbnRDb25zCiAKICAgICBpZiAoVU5MSUtF
TFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKKworICAgIGlu
c3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKICAgICB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpzZXRK
U1dyYXBwZXJGb3JET01PYmplY3QoaW1wbCwgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFo
YXNEZXBlbmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRl
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCmluZGV4IDY5MjZjZWJkNGJkOTkz
YzY3MmI3YmQ1NjFhY2FiNDVlMTM5ZGFlYzAuLjljOTkzNDRjMWEzMjg5NmQ1MjcxOGQ1ODkzYmNj
YTcyNGI2YTVkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaApAQCAtNDgsNiAr
NDgsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBpbmZvOwogICAgIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJik7CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2
OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICBzdGF0aWMgdm9pZCBp
bnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdEV2
ZW50Q29uc3RydWN0b3IqKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFBy
b3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopIHsgfQogcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RFdmVudENvbnN0cnVjdG9yPiwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFy
Z2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudFRhcmdldC5jcHAKaW5kZXggMWUxMWY0ZDc0NWNiYWQ3ZTI0NTdkYTg0NzU5MTM2MzY3OGFh
MmU1Zi4uNTE3OTg0ZDhmMWM4YzVlYThmMjdhYzdkODI3NTkwOTBhZDdhODVmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFy
Z2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotV3JhcHBlclR5cGVJbmZvIFY4VGVzdEV2ZW50VGFyZ2V0OjppbmZvID0geyBWOFRlc3RF
dmVudFRhcmdldDo6R2V0VGVtcGxhdGUsIFY4VGVzdEV2ZW50VGFyZ2V0OjpkZXJlZk9iamVjdCwg
MCwgMCwgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsKK1dyYXBwZXJUeXBlSW5mbyBW
OFRlc3RFdmVudFRhcmdldDo6aW5mbyA9IHsgVjhUZXN0RXZlbnRUYXJnZXQ6OkdldFRlbXBsYXRl
LCBWOFRlc3RFdmVudFRhcmdldDo6ZGVyZWZPYmplY3QsIDAsIDAsIFY4VGVzdEV2ZW50VGFyZ2V0
OjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2Jq
ZWN0UHJvdG90eXBlIH07CiAKIG5hbWVzcGFjZSBUZXN0RXZlbnRUYXJnZXRWOEludGVybmFsIHsK
IApAQCAtMTkyLDYgKzE5Miw4IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRU
YXJnZXQ6OndyYXBTbG93KFBhc3NSZWZQdHI8VGVzdEV2ZW50VGFyZ2V0PiBpCiAKICAgICBpZiAo
VU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKKwor
ICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVy
OjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbCwgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAg
aWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5k
ZXBlbmRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggNjE4MmIyNzU4ZWQwZDg0NzI3
OTEwMTkxMWZmN2VlZDIwYjQ0YTkzZi4uZWE1MzA3YmI4NmY4NmNmYThiMTk0YTU4OWQ3ZGEwMzBj
MDA1NmIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTQ5LDYgKzQ5LDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbmFtZWRQcm9wZXJ0eUdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4sIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mKTsKICAgICBzdGF0
aWMgY29uc3QgaW50IGV2ZW50TGlzdGVuZXJDYWNoZUluZGV4ID0gdjhEZWZhdWx0V3JhcHBlcklu
dGVybmFsRmllbGRDb3VudCArIDA7CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxk
Q291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMTsKKyAgICBzdGF0
aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiwgVGVzdEV2ZW50VGFyZ2V0KikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRl
eHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKSB7IH0KIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0RXZlbnRUYXJnZXQ+LCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNl
cHRpb24uY3BwCmluZGV4IDU1ODk2ZThjOGJjMzQ4YzgwOTI1MTEzYTEyNGM2YTgxNjdhMjJkM2Iu
LjU2M2QwODRhN2ZhMzRhODljZGNmMzk0MWNlNzI1Mjg5M2QwMzFmNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNl
cHRpb24uY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV3Jh
cHBlclR5cGVJbmZvIFY4VGVzdEV4Y2VwdGlvbjo6aW5mbyA9IHsgVjhUZXN0RXhjZXB0aW9uOjpH
ZXRUZW1wbGF0ZSwgVjhUZXN0RXhjZXB0aW9uOjpkZXJlZk9iamVjdCwgMCwgMCwgMCwgV3JhcHBl
clR5cGVFcnJvclByb3RvdHlwZSB9OworV3JhcHBlclR5cGVJbmZvIFY4VGVzdEV4Y2VwdGlvbjo6
aW5mbyA9IHsgVjhUZXN0RXhjZXB0aW9uOjpHZXRUZW1wbGF0ZSwgVjhUZXN0RXhjZXB0aW9uOjpk
ZXJlZk9iamVjdCwgMCwgMCwgVjhUZXN0RXhjZXB0aW9uOjppbnN0YWxsUGVyQ29udGV4dFByb3Rv
dHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlRXJyb3JQcm90b3R5cGUgfTsKIAogbmFtZXNw
YWNlIFRlc3RFeGNlcHRpb25WOEludGVybmFsIHsKIApAQCAtMTIyLDYgKzEyMiw4IEBAIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXhjZXB0aW9uOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRl
c3RFeGNlcHRpb24+IGltcGwsCiAKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkp
KQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKKworICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVy
dGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3Qo
aW1wbCwgd3JhcHBlciwgaXNvbGF0ZSk7CiAgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkK
ICAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24u
aAppbmRleCA2ZjIwMTBkYWNlNGU3ODU3YjZmZTFhMmM5M2YxYWIyMjdmY2MxZTczLi4wZTNjMWZl
NTlmOGU2YjBmNzBjNTJjYzcxYWZmMWZkZTM0ODcxNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCkBA
IC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCB2aXNpdERPTVdyYXBwZXIo
RE9NRGF0YVN0b3JlKiwgdm9pZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KTsKICAgICBz
dGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5h
bEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAg
ICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiwgVGVzdEV4Y2VwdGlvbiopIHsgfQorICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJD
b250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KikgeyB9CiBwcml2YXRlOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBTbG93KFBhc3NSZWZQdHI8VGVzdEV4Y2VwdGlvbj4sIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdElu
dGVyZmFjZS5jcHAKaW5kZXggMWYxYzRjOWQwMWZiMTQ2NTM0OTFhYmY5NzI4ODEzMDdjZmQxMGM3
MC4uMTczYzIzM2IzMjAxYTllYmVlMWEzMDU1ZDE5NjExMWMxMDNiNWUxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdElu
dGVyZmFjZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1X
cmFwcGVyVHlwZUluZm8gVjhUZXN0SW50ZXJmYWNlOjppbmZvID0geyBWOFRlc3RJbnRlcmZhY2U6
OkdldFRlbXBsYXRlLCBWOFRlc3RJbnRlcmZhY2U6OmRlcmVmT2JqZWN0LCBWOFRlc3RJbnRlcmZh
Y2U6OnRvQWN0aXZlRE9NT2JqZWN0LCAwLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9
OworV3JhcHBlclR5cGVJbmZvIFY4VGVzdEludGVyZmFjZTo6aW5mbyA9IHsgVjhUZXN0SW50ZXJm
YWNlOjpHZXRUZW1wbGF0ZSwgVjhUZXN0SW50ZXJmYWNlOjpkZXJlZk9iamVjdCwgVjhUZXN0SW50
ZXJmYWNlOjp0b0FjdGl2ZURPTU9iamVjdCwgMCwgVjhUZXN0SW50ZXJmYWNlOjppbnN0YWxsUGVy
Q29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBl
IH07CiAKIG5hbWVzcGFjZSBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbCB7CiAKQEAgLTM2MSw2ICsz
NjEsOCBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEludGVyZmFjZTo6d3JhcFNsb3co
UGFzc1JlZlB0cjxUZXN0SW50ZXJmYWNlPiBpbXBsLAogCiAgICAgaWYgKFVOTElLRUxZKHdyYXBw
ZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisKKyAgICBpbnN0YWxsUGVy
Q29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7CiAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVy
Rm9yQWN0aXZlRE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFz
RGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0SW50ZXJmYWNlLmgKaW5kZXggYTcyMTE4MjIzOTBmMDhiNTMwMzc5YjhmZjExMDRh
MjE2OGFmOTAzNC4uZTRmNTg5OWJiZjc3OWRmZDM0ODkwMmM1M2ExMDc0NGZkNTA2ZDVmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdElu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RJbnRlcmZhY2UuaApAQCAtNTEsNiArNTEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmKTsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVkUHJvcGVydHlTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+LCB2ODo6TG9jYWw8djg6OlZhbHVlPiwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYpOwogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50
ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CisgICAgc3RhdGljIHZv
aWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRl
c3RJbnRlcmZhY2UqKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3Rv
dHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopIHsgfQogcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RJbnRlcmZhY2U+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggYWY5NjE3Y2JkMDBiNDRlZmRhNTMwMTU5
YmI5NjdkNDUyZTM5MDViZC4uYzNmY2EwNDc2MzZmZWFmZGFlMWE0ODQ5YTI0MzFiNzA3YTllNzhk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAt
MzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdyYXBwZXJUeXBlSW5mbyBW
OFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjppbmZvID0geyBWOFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyOjpHZXRUZW1wbGF0ZSwgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6ZGVy
ZWZPYmplY3QsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CitXcmFwcGVy
VHlwZUluZm8gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW5mbyA9IHsgVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0VGVtcGxhdGUsIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6OmRlcmVmT2JqZWN0LCAwLCAwLCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpp
bnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0
UHJvdG90eXBlIH07CiAKIG5hbWVzcGFjZSBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclY4SW50
ZXJuYWwgewogCkBAIC0xMzEsNiArMTMxLDggQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RNZWQKIAog
ICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFw
cGVyOworCisgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0
KCkpOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERP
TVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVyLCBpc29sYXRl
KTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxl
Lk1hcmtJbmRlcGVuZGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmgKaW5kZXggYWRmMzQ1ZWQ4NTQzMDBjMmY4YWNhM2Q5N2Y3YzI5ODlmZjU4MzA4NS4uZDk4
NTYwZGJlMDY3OTQyNjhjZDQxMzQwZGM5YjgyMDM2NTJlZmRhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiwgdm9pZCosIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+KTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87
CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFw
cGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29u
dGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIqKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlw
ZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopIHsgfQogcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
U2xvdyhQYXNzUmVmUHRyPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IGY1OThkNTg4N2MzNGUxNmU0OWZjYzJlNjhm
ZWJlNjFjOWNhZTU5YWEuLmYyZWQ4MTlkZjA4MDFjMTVkNmJmNmYwNDk5NWU4NzU0Yzc5YWExNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XcmFwcGVyVHlwZUluZm8gVjhUZXN0TmFtZWRDb25z
dHJ1Y3Rvcjo6aW5mbyA9IHsgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIFY4
VGVzdE5hbWVkQ29uc3RydWN0b3I6OmRlcmVmT2JqZWN0LCBWOFRlc3ROYW1lZENvbnN0cnVjdG9y
Ojp0b0FjdGl2ZURPTU9iamVjdCwgMCwgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUgfTsK
K1dyYXBwZXJUeXBlSW5mbyBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjppbmZvID0geyBWOFRlc3RO
YW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSwgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6ZGVy
ZWZPYmplY3QsIFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OnRvQWN0aXZlRE9NT2JqZWN0LCAwLCBW
OFRlc3ROYW1lZENvbnN0cnVjdG9yOjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRp
ZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CiAKIG5hbWVzcGFjZSBUZXN0TmFt
ZWRDb25zdHJ1Y3RvclY4SW50ZXJuYWwgewogCkBAIC00MCw3ICs0MCw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiB2b2lkIFY4X1VTRShUKSB7IH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdE5hbWVk
Q29uc3RydWN0b3JWOEludGVybmFsCiAKLVdyYXBwZXJUeXBlSW5mbyBWOFRlc3ROYW1lZENvbnN0
cnVjdG9yQ29uc3RydWN0b3I6OmluZm8gPSB7IFY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1
Y3Rvcjo6R2V0VGVtcGxhdGUsIFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OmRlcmVmT2JqZWN0LCBW
OFRlc3ROYW1lZENvbnN0cnVjdG9yOjp0b0FjdGl2ZURPTU9iamVjdCwgMCwgMCwgV3JhcHBlclR5
cGVPYmplY3RQcm90b3R5cGUgfTsKK1dyYXBwZXJUeXBlSW5mbyBWOFRlc3ROYW1lZENvbnN0cnVj
dG9yQ29uc3RydWN0b3I6OmluZm8gPSB7IFY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cjo6R2V0VGVtcGxhdGUsIFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OmRlcmVmT2JqZWN0LCBWOFRl
c3ROYW1lZENvbnN0cnVjdG9yOjp0b0FjdGl2ZURPTU9iamVjdCwgMCwgVjhUZXN0TmFtZWRDb25z
dHJ1Y3Rvcjo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAwLCBXcmFwcGVy
VHlwZU9iamVjdFByb3RvdHlwZSB9OwogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CkBAIC0xNzEsNiArMTcxLDggQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBW
OFRlc3ROYW1lZENvbnN0cnVjdG9yOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3ROYW1lZENvbnMK
IAogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3
cmFwcGVyOworCisgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwu
Z2V0KCkpOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBW
OERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU9iamVjdChpbXBsLCB3cmFwcGVy
LCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFw
cGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9y
LmgKaW5kZXggZTE2ZTIxMTA0MzAzMWY2YmFhYTAyNjFjYjc1MGVlZjBhN2NiNzEzNC4uYmUyYzhm
N2I5YTRjYTE1ZTQzNmFiZjg5MTFmYzlkNDIwYjRiY2NiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5oCkBAIC01Myw2ICs1Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV3JhcHBl
clR5cGVJbmZvIGluZm87CiAgICAgc3RhdGljIEFjdGl2ZURPTU9iamVjdCogdG9BY3RpdmVET01P
YmplY3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRl
cm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsK
KyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiwgVGVzdE5hbWVkQ29uc3RydWN0b3IqKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBp
bnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIHsgfQogcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3ROYW1lZENvbnN0cnVj
dG9yPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
Kik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5vZGUuY3BwCmluZGV4IGFmNzcyZDQwZGFmZDJiYzk4ZjNjNTU1YzEzYmZjZjRj
NzEzOTY2OTQuLjQ3MGMzODJjODkyYmU1ZGRiMjkzNTM0NzFkM2UzMTY5YzNkMzY4ZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
Tm9kZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XcmFw
cGVyVHlwZUluZm8gVjhUZXN0Tm9kZTo6aW5mbyA9IHsgVjhUZXN0Tm9kZTo6R2V0VGVtcGxhdGUs
IFY4VGVzdE5vZGU6OmRlcmVmT2JqZWN0LCAwLCAwLCAmVjhOb2RlOjppbmZvLCBXcmFwcGVyVHlw
ZU9iamVjdFByb3RvdHlwZSB9OworV3JhcHBlclR5cGVJbmZvIFY4VGVzdE5vZGU6OmluZm8gPSB7
IFY4VGVzdE5vZGU6OkdldFRlbXBsYXRlLCBWOFRlc3ROb2RlOjpkZXJlZk9iamVjdCwgMCwgMCwg
VjhUZXN0Tm9kZTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzLCAmVjhOb2Rl
OjppbmZvLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlwZSB9OwogCiBuYW1lc3BhY2UgVGVzdE5v
ZGVWOEludGVybmFsIHsKIApAQCAtMTMyLDYgKzEzMiw4IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gVjhUZXN0Tm9kZTo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0Tm9kZT4gaW1wbCwgdjg6Okhh
bmRsCiAKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1
cm4gd3JhcHBlcjsKKworICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBp
bXBsLmdldCgpKTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxl
ID0gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01Ob2RlKGltcGwsIHdyYXBwZXIsIGlz
b2xhdGUpOwogICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJI
YW5kbGUuTWFya0luZGVwZW5kZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaAppbmRleCA0MmE1YzU0ZTg1MWE1MmQxMTU3
YjQ1NmNjYmRjZDFkOGNlNzg2ZWIxLi5kZGUzYjU1YTFjODk5ZTc4ZDQ0YjBmZDY5OGM1YTRhNGIx
MDEzZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROb2RlLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBX
cmFwcGVyVHlwZUluZm8gaW5mbzsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNv
bnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogICAgIHN0YXRpYyBjb25z
dCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRD
b3VudCArIDA7CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRlc3ROb2RlKikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5z
dGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4s
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7IH0KIHByaXZhdGU6CiAgICAgc3RhdGljIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0Tm9kZT4sIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAK
aW5kZXggNzc4NGU2NWI2NmQ3MDc5MDc0MjYzNGFhOWFjNGJjY2RkYjhlNDcwYy4uMTUzZTA5ZDc2
N2Q3MTdjNTI0MmMyNTY0MjY2MmU0YTMyYzZhNGIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTM4LDcgKzM4LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XcmFwcGVyVHlwZUluZm8gVjhUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjppbmZvID0geyBWOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U6OkdldFRlbXBsYXRlLCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2U6OmRlcmVmT2JqZWN0LCAwLCAwLCAwLCBXcmFwcGVyVHlwZU9iamVjdFByb3RvdHlw
ZSB9OworV3JhcHBlclR5cGVJbmZvIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZTo6aW5mbyA9IHsgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpHZXRUZW1w
bGF0ZSwgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpkZXJlZk9iamVjdCwg
MCwgMCwgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjppbnN0YWxsUGVyQ29u
dGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07
CiAKIG5hbWVzcGFjZSBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5h
bCB7CiAKQEAgLTMxNCw2ICszMTQsOCBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6d3JhcFNsb3coUGFzc1JlZlB0cgogCiAgICAg
aWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7
CisKKyAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSk7
CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwog
ICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFy
a0luZGVwZW5kZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmgKaW5kZXggYjhjM2NkYjE5YTI0ODg5OGMzY2NhOTFmNWMwOGQxNWUy
ZDhiMjQ0Ni4uNDNiMWNjNzhlY2U0NTk5N2QyYjA1YTg2ZjhhOTk4Y2M2OTdkN2I4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaApA
QCAtNDksNiArNDksOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBpbmZv
OwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJik7CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxk
Q291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICBzdGF0
aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSopIHsgfQorICAgIHN0YXRpYyB2
b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgeyB9CiBwcml2YXRlOgogICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KFBhc3NSZWZQdHI8VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBW
OE9iamVjdC5jcHAKaW5kZXggMDYzMTRmMzM4MjdhZGYyZGNmOGYyYzNjYjg0ODNmM2MzODJmOGU0
ZC4uZTY1ODk2NDE3MDc5MjE4ZTU5ZDg4YzQ5MTRiYzY0MzRjYmE4OTY1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBXcmFwcGVyVHlwZUluZm8qIG5wT2JqZWN0VHlwZUluZm8oKQogewot
ICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gdHlwZUluZm8gPSB7IDAsIDAsIDAsIDAsIDAsIFdy
YXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CisgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyB0
eXBlSW5mbyA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgV3JhcHBlclR5cGVPYmplY3RQcm90b3R5cGUg
fTsKICAgICByZXR1cm4gJnR5cGVJbmZvOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDE5MzZhZThkMGE0YjgzZGExMDRiY2Qx
ZTVjOTQ1MmNhM2M3Mzk0ODguLmUzZWNiNDYzNTEyNWUzYzI3YWE2ODdmMTFhNmM0OTFiY2EzNTVi
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hl
bGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwu
Y3BwCkBAIC00MzMsOCArNDMzLDkgQEAgdm9pZCBWOERPTVdpbmRvd1NoZWxsOjpjcmVhdGVDb250
ZXh0KCkKIAogYm9vbCBWOERPTVdpbmRvd1NoZWxsOjppbnN0YWxsRE9NV2luZG93KCkKIHsKLSAg
ICBET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwot
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3aW5kb3dXcmFwcGVyID0gVjhPYmplY3RDb25zdHJ1
Y3Rvcjo6bmV3SW5zdGFuY2UoVjhQZXJDb250ZXh0RGF0YTo6ZnJvbShtX2NvbnRleHQuZ2V0KCkp
LT5jb25zdHJ1Y3RvckZvclR5cGUoJlY4RE9NV2luZG93OjppbmZvKSk7CisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9
IGRvY3VtZW50LT5kb21XaW5kb3coKTsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gd2luZG93
V3JhcHBlciA9IFY4T2JqZWN0Q29uc3RydWN0b3I6Om5ld0luc3RhbmNlKFY4UGVyQ29udGV4dERh
dGE6OmZyb20obV9jb250ZXh0LmdldCgpKS0+Y29uc3RydWN0b3JGb3JUeXBlKCZWOERPTVdpbmRv
dzo6aW5mbywgZG9jdW1lbnQpKTsKICAgICBpZiAod2luZG93V3JhcHBlci5Jc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
V3JhcHBlci5jcHAKaW5kZXggZmViYWU3NWExYWYzZjU2NmZhMzYzNDk1MTMwNWVkZjMyYWEwY2Vh
MC4uZmJiOWZkMmM5M2UzYjBkNWY4YTA0MGYzNmNlZWRkMjFjOGRiNWU4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAg
djg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChE
b2N1bWVudCogZG9jdW1lbnQsIFdyYXAKICAgICBlbHNlCiAgICAgICAgIHBlckNvbnRleHREYXRh
ID0gVjhQZXJDb250ZXh0RGF0YTo6ZnJvbSh2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKTsKIAot
ICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBpbnN0YW5jZSA9IHBlckNvbnRleHREYXRhID8gcGVy
Q29udGV4dERhdGEtPmNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGUodHlwZSkgOiBWOE9iamVjdENvbnN0
cnVjdG9yOjpuZXdJbnN0YW5jZSh0eXBlLT5nZXRUZW1wbGF0ZSgpLT5HZXRGdW5jdGlvbigpKTsK
KyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gaW5zdGFuY2UgPSBwZXJDb250ZXh0RGF0YSA/IHBl
ckNvbnRleHREYXRhLT5jcmVhdGVXcmFwcGVyRnJvbUNhY2hlKHR5cGUsIGRvY3VtZW50KSA6IFY4
T2JqZWN0Q29uc3RydWN0b3I6Om5ld0luc3RhbmNlKHR5cGUtPmdldFRlbXBsYXRlKCktPkdldEZ1
bmN0aW9uKCkpOwogCiAgICAgLy8gQXZvaWQgc2V0dGluZyB0aGUgRE9NIHdyYXBwZXIgZm9yIGZh
aWxlZCBhbGxvY2F0aW9ucy4KICAgICBpZiAoaW5zdGFuY2UuSXNFbXB0eSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcAppbmRleCA2MjU0Mzlk
YTIzZDA1MjAyNDVhNGE5ZDFmZDM2ZjA2MmUwOTNhY2EyLi4xNWVmZTVhOTVkOTZlN2M1MTU3Zjkx
YWRlZDIyZDdiZTY1MDcwYjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFBlckNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFBlckNvbnRleHREYXRhLmNwcApAQCAtMTAwLDEzICsxMDAsMTMgQEAgYm9vbCBWOFBlckNvbnRl
eHREYXRhOjppbml0KCkKIAogI3VuZGVmIFY4X1NUT1JFX1BSSU1PUkRJQUwKIAotdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IFY4UGVyQ29udGV4dERhdGE6OmNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGVTbG93
Q2FzZShXcmFwcGVyVHlwZUluZm8qIHR5cGUpCit2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhQZXJD
b250ZXh0RGF0YTo6Y3JlYXRlV3JhcHBlckZyb21DYWNoZVNsb3dDYXNlKFdyYXBwZXJUeXBlSW5m
byogdHlwZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICBBU1NFUlQo
IW1fZXJyb3JQcm90b3R5cGUuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW1fb2JqZWN0UHJvdG90
eXBlLmlzRW1wdHkoKSk7CiAKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUobV9jb250ZXh0
KTsKLSAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IGNvbnN0cnVjdG9yRm9y
VHlwZSh0eXBlKTsKKyAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IGNvbnN0
cnVjdG9yRm9yVHlwZSh0eXBlLCBjb250ZXh0KTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4g
aW5zdGFuY2UgPSBWOE9iamVjdENvbnN0cnVjdG9yOjpuZXdJbnN0YW5jZShmdW5jdGlvbik7CiAg
ICAgaWYgKCFpbnN0YW5jZS5Jc0VtcHR5KCkpIHsKICAgICAgICAgbV93cmFwcGVyQm9pbGVycGxh
dGVzLnNldCh0eXBlLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGluc3RhbmNlKSk7
CkBAIC0xMTUsNyArMTE1LDcgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4UGVyQ29udGV4dERh
dGE6OmNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZShXcmFwcGVyVHkKICAgICByZXR1cm4g
djg6OkxvY2FsPHY4OjpPYmplY3Q+KCk7CiB9CiAKLXY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IFY4
UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKFdyYXBwZXJUeXBlSW5m
byogdHlwZSkKK3Y4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IFY4UGVyQ29udGV4dERhdGE6OmNvbnN0
cnVjdG9yRm9yVHlwZVNsb3dDYXNlKFdyYXBwZXJUeXBlSW5mbyogdHlwZSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICBBU1NFUlQoIW1fZXJyb3JQcm90b3R5cGUuaXNF
bXB0eSgpKTsKICAgICBBU1NFUlQoIW1fb2JqZWN0UHJvdG90eXBlLmlzRW1wdHkoKSk7CkBAIC0x
MjksMTEgKzEyOSwxMiBAQCB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBWOFBlckNvbnRleHREYXRh
Ojpjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZShXcmFwcGVyVHlwZQogICAgICAgICByZXR1cm4g
djg6OkxvY2FsPHY4OjpGdW5jdGlvbj4oKTsKIAogICAgIGZ1bmN0aW9uLT5TZXRQcm90b3R5cGUo
bV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpOwotCi0gICAgaWYgKHR5cGUtPndyYXBwZXJUeXBlUHJv
dG90eXBlID09IFdyYXBwZXJUeXBlRXJyb3JQcm90b3R5cGUpIHsKLSAgICAgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gcHJvdG90eXBlVmFsdWUgPSBmdW5jdGlvbi0+R2V0KHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgicHJvdG90eXBlIikpOwotICAgICAgICBpZiAoIXByb3RvdHlwZVZhbHVlLklzRW1w
dHkoKSAmJiBwcm90b3R5cGVWYWx1ZS0+SXNPYmplY3QoKSkKLSAgICAgICAgICAgIHY4OjpMb2Nh
bDx2ODo6T2JqZWN0Pjo6Q2FzdChwcm90b3R5cGVWYWx1ZSktPlNldFByb3RvdHlwZShtX2Vycm9y
UHJvdG90eXBlLmdldCgpKTsKKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBwcm90b3R5cGVWYWx1
ZSA9IGZ1bmN0aW9uLT5HZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJwcm90b3R5cGUiKSk7Cisg
ICAgaWYgKCFwcm90b3R5cGVWYWx1ZS5Jc0VtcHR5KCkgJiYgcHJvdG90eXBlVmFsdWUtPklzT2Jq
ZWN0KCkpIHsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHByb3RvdHlwZU9iamVjdCA9
IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChwcm90b3R5cGVWYWx1ZSk7CisgICAgICAgIHR5
cGUtPmluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyhwcm90b3R5cGVPYmplY3Qs
IGNvbnRleHQpOworICAgICAgICBpZiAodHlwZS0+d3JhcHBlclR5cGVQcm90b3R5cGUgPT0gV3Jh
cHBlclR5cGVFcnJvclByb3RvdHlwZSkKKyAgICAgICAgICAgIHByb3RvdHlwZU9iamVjdC0+U2V0
UHJvdG90eXBlKG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpOwogICAgIH0KIAogICAgIG1fY29uc3Ry
dWN0b3JNYXAuc2V0KHR5cGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj46Ok5ldyhmdW5j
dGlvbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250
ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5o
CmluZGV4IDhjM2M0MzdlMjhjMDgzMWRkMDMxNTkxNDYwMjc1MGZiNjUzZjUyMDQuLjM1NTdhZGU2
ZDVhZjFmZjQxNDgyZDZlNDZkZGExNWFjYjNlYTliNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UGVyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmgKQEAgLTYzLDE4ICs2MywxOCBAQCBwdWJsaWM6
CiAgICAgLy8gVG8gY3JlYXRlIEpTIFdyYXBwZXIgb2JqZWN0cywgd2UgY3JlYXRlIGEgY2FjaGUg
b2YgYSAnYm9pbGVyIHBsYXRlJwogICAgIC8vIG9iamVjdCwgYW5kIHRoZW4gc2ltcGx5IENsb25l
IHRoYXQgb2JqZWN0IGVhY2ggdGltZSB3ZSBuZWVkIGEgbmV3IG9uZS4KICAgICAvLyBUaGlzIGlz
IGZhc3RlciB0aGFuIGdvaW5nIHRocm91Z2ggdGhlIGZ1bGwgb2JqZWN0IGNyZWF0aW9uIHByb2Nl
c3MuCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGUoV3Jh
cHBlclR5cGVJbmZvKiB0eXBlKQorICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVXcmFw
cGVyRnJvbUNhY2hlKFdyYXBwZXJUeXBlSW5mbyogdHlwZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKICAgICB7CiAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGJv
aWxlcnBsYXRlID0gbV93cmFwcGVyQm9pbGVycGxhdGVzLmdldCh0eXBlKTsKLSAgICAgICAgcmV0
dXJuICFib2lsZXJwbGF0ZS5Jc0VtcHR5KCkgPyBib2lsZXJwbGF0ZS0+Q2xvbmUoKSA6IGNyZWF0
ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZSh0eXBlKTsKKyAgICAgICAgcmV0dXJuICFib2lsZXJw
bGF0ZS5Jc0VtcHR5KCkgPyBib2lsZXJwbGF0ZS0+Q2xvbmUoKSA6IGNyZWF0ZVdyYXBwZXJGcm9t
Q2FjaGVTbG93Q2FzZSh0eXBlLCBjb250ZXh0KTsKICAgICB9CiAKLSAgICB2ODo6TG9jYWw8djg6
OkZ1bmN0aW9uPiBjb25zdHJ1Y3RvckZvclR5cGUoV3JhcHBlclR5cGVJbmZvKiB0eXBlKQorICAg
IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IGNvbnN0cnVjdG9yRm9yVHlwZShXcmFwcGVyVHlwZUlu
Zm8qIHR5cGUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgewogICAgICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uID0gbV9jb25zdHJ1Y3Rvck1h
cC5nZXQodHlwZSk7CiAgICAgICAgIGlmICghZnVuY3Rpb24uSXNFbXB0eSgpKQogICAgICAgICAg
ICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpOZXcoZnVuY3Rpb24pOwotICAgICAg
ICByZXR1cm4gY29uc3RydWN0b3JGb3JUeXBlU2xvd0Nhc2UodHlwZSk7CisgICAgICAgIHJldHVy
biBjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZSh0eXBlLCBjb250ZXh0KTsKICAgICB9CiAKICAg
ICBWOE5QT2JqZWN0TWFwKiB2OE5QT2JqZWN0TWFwKCkKQEAgLTkwLDggKzkwLDggQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZGlzcG9zZSgpOwogCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNy
ZWF0ZVdyYXBwZXJGcm9tQ2FjaGVTbG93Q2FzZShXcmFwcGVyVHlwZUluZm8qKTsKLSAgICB2ODo6
TG9jYWw8djg6OkZ1bmN0aW9uPiBjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZShXcmFwcGVyVHlw
ZUluZm8qKTsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlckZyb21DYWNo
ZVNsb3dDYXNlKFdyYXBwZXJUeXBlSW5mbyosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAg
ICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBjb25zdHJ1Y3RvckZvclR5cGVTbG93Q2FzZShXcmFw
cGVyVHlwZUluZm8qLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICAvLyBGb3IgZWFj
aCBwb3NzaWJsZSB0eXBlIG9mIHdyYXBwZXIsIHdlIGtlZXAgYSBib2lsZXJwbGF0ZSBvYmplY3Qu
CiAgICAgLy8gVGhlIGJvaWxlcnBsYXRlIGlzIHVzZWQgdG8gY3JlYXRlIGFkZGl0aW9uYWwgd3Jh
cHBlcnMgb2YgdGhlIHNhbWUgdHlwZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCmluZGV4IDk2MTFkNDdm
MzdhMzk0M2Q3ZjBjY2MyOTA3MzJkYjkwNGNjYTU2NmMuLmJjYjM0OGU0YzQ2M2VmNWI3ZDk0NzBk
ODY1NzdlZmQxZjNjNDQzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcApAQCAtMTc1LDcgKzE3NSw3
IEBAIGJvb2wgV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5Ojppbml0aWFsaXplSWZOZWVkZWQo
KQogICAgIGlmICghbV93b3JrZXJDb250ZXh0LT5pc0RlZGljYXRlZFdvcmtlckNvbnRleHQoKSkK
ICAgICAgICAgY29udGV4dFR5cGUgPSAmVjhTaGFyZWRXb3JrZXJDb250ZXh0OjppbmZvOwogI2Vu
ZGlmCi0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IHdvcmtlckNvbnRleHRDb25zdHJ1Y3Rv
ciA9IG1fcGVyQ29udGV4dERhdGEtPmNvbnN0cnVjdG9yRm9yVHlwZShjb250ZXh0VHlwZSk7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IHdvcmtlckNvbnRleHRDb25zdHJ1Y3RvciA9IG1f
cGVyQ29udGV4dERhdGEtPmNvbnN0cnVjdG9yRm9yVHlwZShjb250ZXh0VHlwZSwgbV93b3JrZXJD
b250ZXh0KTsKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4ganNXb3JrZXJDb250ZXh0ID0gVjhP
YmplY3RDb25zdHJ1Y3Rvcjo6bmV3SW5zdGFuY2Uod29ya2VyQ29udGV4dENvbnN0cnVjdG9yKTsK
ICAgICAvLyBCYWlsIG91dCBpZiBhbGxvY2F0aW9uIGZhaWxlZC4KICAgICBpZiAoanNXb3JrZXJD
b250ZXh0LklzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvV3JhcHBlclR5cGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVy
VHlwZUluZm8uaAppbmRleCA2NDNjMGJjMjYwOThjNTk5YWRiZGNjYmYwM2Q4ZjUwY2Q5MDU2NWVj
Li4zYzRiZWZhYThiZmJlOGFhYzcyOWM2OTMwOGU0NGIxNmRiNGI0ZGMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaApAQCAtMzcsNyArMzcsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiAgICAgY2xhc3MgQWN0aXZlRE9NT2JqZWN0OwogICAg
IGNsYXNzIERPTURhdGFTdG9yZTsKLSAgICAKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OworCiAgICAgc3RhdGljIGNvbnN0IGludCB2OERPTVdyYXBwZXJUeXBlSW5kZXggPSAwOwog
ICAgIHN0YXRpYyBjb25zdCBpbnQgdjhET01XcmFwcGVyT2JqZWN0SW5kZXggPSAxOwogICAgIHN0
YXRpYyBjb25zdCBpbnQgdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCA9IDI7CkBA
IC00OCw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0eXBlZGVmIHZvaWQgKCpE
ZXJlZk9iamVjdEZ1bmN0aW9uKSh2b2lkKik7CiAgICAgdHlwZWRlZiBBY3RpdmVET01PYmplY3Qq
ICgqVG9BY3RpdmVET01PYmplY3RGdW5jdGlvbikodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pik7CiAg
ICAgdHlwZWRlZiB2b2lkICgqRE9NV3JhcHBlclZpc2l0b3JGdW5jdGlvbikoRE9NRGF0YVN0b3Jl
Kiwgdm9pZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KTsKKyAgICB0eXBlZGVmIHZvaWQg
KCpJbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXNGdW5jdGlvbikodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgZW51bSBXcmFw
cGVyVHlwZVByb3RvdHlwZSB7CiAgICAgICAgIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlLApA
QCAtODgsNiArOTAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgIGRl
cmVmT2JqZWN0RnVuY3Rpb24ob2JqZWN0KTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAg
dm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBwcm90bywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllc0Z1
bmN0aW9uKQorICAgICAgICAgICAgICAgIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVy
dGllc0Z1bmN0aW9uKHByb3RvLCBjb250ZXh0KTsKKyAgICAgICAgfQorCiAgICAgICAgIEFjdGl2
ZURPTU9iamVjdCogdG9BY3RpdmVET01PYmplY3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmpl
Y3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghdG9BY3RpdmVET01PYmplY3RGdW5jdGlv
bikKQEAgLTEwNSw2ICsxMTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0
IERlcmVmT2JqZWN0RnVuY3Rpb24gZGVyZWZPYmplY3RGdW5jdGlvbjsKICAgICAgICAgY29uc3Qg
VG9BY3RpdmVET01PYmplY3RGdW5jdGlvbiB0b0FjdGl2ZURPTU9iamVjdEZ1bmN0aW9uOwogICAg
ICAgICBjb25zdCBET01XcmFwcGVyVmlzaXRvckZ1bmN0aW9uIGRvbVdyYXBwZXJWaXNpdG9yRnVu
Y3Rpb247CisgICAgICAgIGNvbnN0IEluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGll
c0Z1bmN0aW9uIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllc0Z1bmN0aW9uOwog
ICAgICAgICBjb25zdCBXcmFwcGVyVHlwZUluZm8qIHBhcmVudENsYXNzOwogICAgICAgICBjb25z
dCBXcmFwcGVyVHlwZVByb3RvdHlwZSB3cmFwcGVyVHlwZVByb3RvdHlwZTsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxl
bWVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjBhODRhMGNiOWM5ODFiMzc3
MzBiNDcxMWI2ZDhiYWQ3YzNjZThlMS4uMjU2YzlkMzdlNDExY2ZlNzBhNmUzNjM3ODJhMzY2M2Ew
NDQ1M2QzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCkBAIC00Myw3
ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV3JhcHBlclR5cGVJbmZvIFY4SFRN
TEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjppbmZvID0geyBWOEhUTUxJbWFnZUVsZW1lbnRDb25z
dHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIDAsIDAsIDAsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90
eXBlIH07CitXcmFwcGVyVHlwZUluZm8gVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6Omlu
Zm8gPSB7IFY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSwgMCwgMCwg
MCwgVjhIVE1MSW1hZ2VFbGVtZW50OjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRp
ZXMsIDAsIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CiAKIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>