<?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>195224</bug_id>
          
          <creation_ts>2019-03-01 13:07:38 -0800</creation_ts>
          <short_desc>[Web GPU] Blitting function prototypes</short_desc>
          <delta_ts>2019-03-04 16:55:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Fan">justin_fan</reporter>
          <assigned_to name="Justin Fan">justin_fan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1511560</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-03-01 13:07:38 -0800</bug_when>
    <thetext>[Web GPU] Web GPU copyBufferToTexture prototype</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511702</commentid>
    <comment_count>1</comment_count>
      <attachid>363391</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-03-01 17:10:56 -0800</bug_when>
    <thetext>Created attachment 363391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511871</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-02 16:02:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/48538902&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1511875</commentid>
    <comment_count>3</comment_count>
      <attachid>363391</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-03-02 16:10:29 -0800</bug_when>
    <thetext>Comment on attachment 363391
Patch

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

This patch contains a lot of logging. Is it all necessary?

&gt; Source/WebCore/platform/graphics/gpu/GPUTexture.h:63
&gt; +    GPUTextureUsage::Flags m_usage;

OptionSet&lt;&gt;?

&gt; Source/WebCore/platform/graphics/gpu/GPUTextureUsage.h:40
&gt; +        TransferSrc = 1,

1 &lt;&lt; 0

Name bothers me, but not by much. I like spelling things out so “TransferSource”.

&gt; Source/WebCore/platform/graphics/gpu/GPUTextureUsage.h:41
&gt; +        TransferDst = 2,

1 &lt;&lt; 1

Name bothers me, but not by much. I like spelling things out so “TransferDestination”.

&gt; Source/WebCore/platform/graphics/gpu/GPUTextureUsage.h:42
&gt; +        Sampled = 4,

see where I’m going with this? This is not the correct style for a flag enum. Greg the code.

&gt; Source/WebCore/platform/graphics/gpu/GPUTextureUsage.h:44
&gt; +        OutputAttachment = 16

Trailing comma to make this future proof?

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:78
&gt; +MTLBlitCommandEncoder *GPUCommandBuffer::currentBlitEncoder()

* on the wrong side.

Why isn’t this function const? It should be, and make the ivar mutable, because this lazy retaining business is an implementation detail.

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:80
&gt; +    if (!m_blitEncoder)

Ok as-is. The most common case is we have the encoder right? So, I would early return if we have it. Otherwise, assign to ivar and return it. This would be slightly more efficient that what you have now.

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:81
&gt; +        m_blitEncoder = retainPtr([m_platformCommandBuffer blitCommandEncoder]);

retainPtr() is not necessary.

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:82
&gt; +

Ok as-is. I don’t like this empty line. I find it distracting and not improving the readability of this code. I would remove it.

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:98
&gt; +#endif // PLATFORM(MAC)

Ok as-is. I don’t like the inline comment. Who’s window/monitor is so small that they can’t keep 6 lines on screen? Or are we accounting for people with Alzheimer’s?

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:123
&gt; +void GPUCommandBuffer::copyBufferToTexture(GPUBufferCopyView&amp;&amp; srcBuffer, GPUTextureCopyView&amp;&amp; dstTexture, GPUExtent3D&amp;&amp; size)

This function is clearly incomplete. But I don’t think all these arguments need to be rvalue refs do they?

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:130
&gt; +    /* FIXME: Add Metal validation?

FIXME: Use C++ style comment for all of these lines? :D

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:162
&gt; +void GPUCommandBuffer::copyTextureToBuffer(GPUTextureCopyView&amp;&amp; srcTexture, GPUBufferCopyView&amp;&amp; dstBuffer, GPUExtent3D&amp;&amp; size)

I don’t think all of these arguments need to be rvalue refs, do they?

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:189
&gt; +void GPUCommandBuffer::copyTextureToTexture(GPUTextureCopyView&amp;&amp; src, GPUTextureCopyView&amp;&amp; dst, GPUExtent3D&amp;&amp; size)

Ditto.

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUTextureMetal.mm:57
&gt; +static Optional&lt;MTLTextureUsage&gt; mtlTextureUsageForGPUTextureUsageFlags(GPUTextureUsageFlags flags, const char* const functionName)

flags should be an OptionSet&lt;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512319</commentid>
    <comment_count>4</comment_count>
      <attachid>363391</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-03-04 12:48:17 -0800</bug_when>
    <thetext>Comment on attachment 363391
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gpu/GPUTexture.h:63
&gt;&gt; +    GPUTextureUsage::Flags m_usage;
&gt; 
&gt; OptionSet&lt;&gt;?

Thanks for the review! I&apos;d never heard of that before, I&apos;ll check it out.

&gt;&gt; Source/WebCore/platform/graphics/gpu/GPUTextureUsage.h:40
&gt;&gt; +        TransferSrc = 1,
&gt; 
&gt; 1 &lt;&lt; 0
&gt; 
&gt; Name bothers me, but not by much. I like spelling things out so “TransferSource”.

I have to match the Web API for our bindings code to match it properly. I can tell bindings to ignore constants checking if I want to change the name, but I&apos;d rather not.

&gt;&gt; Source/WebCore/platform/graphics/gpu/GPUTextureUsage.h:44
&gt;&gt; +        OutputAttachment = 16
&gt; 
&gt; Trailing comma to make this future proof?

OK!

&gt;&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:78
&gt;&gt; +MTLBlitCommandEncoder *GPUCommandBuffer::currentBlitEncoder()
&gt; 
&gt; * on the wrong side.
&gt; 
&gt; Why isn’t this function const? It should be, and make the ivar mutable, because this lazy retaining business is an implementation detail.

* is separate from the Objective-C type. I didn&apos;t think &apos;const&apos;ing this and making the ivar mutable was an option as I&apos;d never used that pattern.

&gt;&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:80
&gt;&gt; +    if (!m_blitEncoder)
&gt; 
&gt; Ok as-is. The most common case is we have the encoder right? So, I would early return if we have it. Otherwise, assign to ivar and return it. This would be slightly more efficient that what you have now.

Ok!

&gt;&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:81
&gt;&gt; +        m_blitEncoder = retainPtr([m_platformCommandBuffer blitCommandEncoder]);
&gt; 
&gt; retainPtr() is not necessary.

Ok!

&gt;&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:130
&gt;&gt; +    /* FIXME: Add Metal validation?
&gt; 
&gt; FIXME: Use C++ style comment for all of these lines? :D

OK

&gt;&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:162
&gt;&gt; +void GPUCommandBuffer::copyTextureToBuffer(GPUTextureCopyView&amp;&amp; srcTexture, GPUBufferCopyView&amp;&amp; dstBuffer, GPUExtent3D&amp;&amp; size)
&gt; 
&gt; I don’t think all of these arguments need to be rvalue refs, do they?

You&apos;re right, they can be raw refs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512335</commentid>
    <comment_count>5</comment_count>
      <attachid>363391</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-03-04 13:19:19 -0800</bug_when>
    <thetext>Comment on attachment 363391
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/gpu/GPUTextureUsage.h:40
&gt;&gt;&gt; +        TransferSrc = 1,
&gt;&gt; 
&gt;&gt; 1 &lt;&lt; 0
&gt;&gt; 
&gt;&gt; Name bothers me, but not by much. I like spelling things out so “TransferSource”.
&gt; 
&gt; I have to match the Web API for our bindings code to match it properly. I can tell bindings to ignore constants checking if I want to change the name, but I&apos;d rather not.

On second thought, since we&apos;re already ignoring the checks, I&apos;ve updated the name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512347</commentid>
    <comment_count>6</comment_count>
      <attachid>363550</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-03-04 13:40:53 -0800</bug_when>
    <thetext>Created attachment 363550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512388</commentid>
    <comment_count>7</comment_count>
      <attachid>363550</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-03-04 15:40:09 -0800</bug_when>
    <thetext>Comment on attachment 363550
Patch

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

&gt; Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.cpp:49
&gt; +    return GPUBufferCopyView(buffer-&gt;buffer().releaseNonNull(), *this);

I think we tend to use syntax like this now:

return GPUBufferCopyView { buffer-&gt;buffer().releaseNonNull(), *this };

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:120
&gt; +void GPUCommandBuffer::copyBufferToTexture(const GPUBufferCopyView&amp; srcBuffer, const GPUTextureCopyView&amp; dstTexture, const GPUExtent3D&amp; size)

It&apos;s kind of weird that we can have a const destination just because ObjC.

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:127
&gt; +    // FIXME: Add Metal validation?

I don&apos;t think this is a question.

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUTextureMetal.mm:62
&gt; +    if (flags.containsAny({ GPUTextureUsage::Flags::TransferSource, GPUTextureUsage::Flags::Sampled }) &amp;&amp; (flags &amp; GPUTextureUsage::Flags::Storage)) {

You should consistently use .contains everywhere if you&apos;re going OptionSet&lt;&gt;

&gt; LayoutTests/webgpu/blit-commands.html:33
&gt; +        usage: GPUBufferUsage.TRANSFER_SRC | GPUBufferUsage.TRANSFER_DST

I think bufferA is SRC only and bufferB is both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512405</commentid>
    <comment_count>8</comment_count>
      <attachid>363550</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-03-04 16:21:39 -0800</bug_when>
    <thetext>Comment on attachment 363550
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUTextureMetal.mm:62
&gt;&gt; +    if (flags.containsAny({ GPUTextureUsage::Flags::TransferSource, GPUTextureUsage::Flags::Sampled }) &amp;&amp; (flags &amp; GPUTextureUsage::Flags::Storage)) {
&gt; 
&gt; You should consistently use .contains everywhere if you&apos;re going OptionSet&lt;&gt;

I use contains for the getters because the bool() operator is marked explicit, but in this case (and others around WebKit) it looks like for single-bit checks a normal &amp; is ok.

&gt;&gt; LayoutTests/webgpu/blit-commands.html:33
&gt;&gt; +        usage: GPUBufferUsage.TRANSFER_SRC | GPUBufferUsage.TRANSFER_DST
&gt; 
&gt; I think bufferA is SRC only and bufferB is both.

BufferA needs to be TRANSFER_DST if I want to use setSubData on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512406</commentid>
    <comment_count>9</comment_count>
      <attachid>363567</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-03-04 16:28:10 -0800</bug_when>
    <thetext>Created attachment 363567
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512417</commentid>
    <comment_count>10</comment_count>
      <attachid>363567</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-04 16:55:22 -0800</bug_when>
    <thetext>Comment on attachment 363567
Patch for landing

Clearing flags on attachment: 363567

Committed r242404: &lt;https://trac.webkit.org/changeset/242404&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512418</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-04 16:55:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363391</attachid>
            <date>2019-03-01 17:10:56 -0800</date>
            <delta_ts>2019-03-04 13:40:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195224-20190301171056.patch</filename>
            <type>text/plain</type>
            <size>54083</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU3OGEyYmYyZDE3ZmMz
MmEzNWM5OWI0NTBlNTRiMDZkYjE4NzU0MS4uYzMwMGJlYWM1ODViMDc5YjhmYjdlNTM3ODkyZjM4
NmFmY2YzM2I5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE5LTAzLTAxICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBHUFVdIEJsaXR0
aW5nIGZ1bmN0aW9uIHByb3RvdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NTIyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEltcGxlbWVudCBiYXJlYm9uZXMgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29w
eSogcHJvdG90eXBlcyB3aGlsZSByb3VuZGluZyBvdXQgR1BVVGV4dHVyZSBpbXBsZW1lbnRhdGlv
biBkZXRhaWxzLgorCisgICAgICAgIFRlc3Q6IHdlYmdwdS9ibGl0LWNvbW1hbmRzLmh0bWwKKwor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmg6IEFkZGVkLgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHA6IEFkZCBjb3B5IHZpZXcgc3RydWN0IGlt
cGxlbWVudGF0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUJ1ZmZlckNvcHlWaWV3Ojph
c0dQVUJ1ZmZlckNvcHlWaWV3IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJH
UFVUZXh0dXJlQ29weVZpZXc6OmFzR1BVVGV4dHVyZUNvcHlWaWV3IGNvbnN0KTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZm
ZXJUb1RleHR1cmUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZm
ZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdQ
VUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKTogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oOiBBZGQgbmV3IGZ1bmN0aW9ucyBh
bmQgc3VwcG9ydGluZyBzdHJ1Y3RzLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bW1hbmRCdWZmZXIuaWRsOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA6IFJlZmFjdG9yIGNvbnN0cnVjdG9ycyB0byBjb3B5IHRo
ZSBlbnRpcmUgYmFzZSBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OkdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcik6CisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNo
bWVudERlc2NyaXB0b3I6OkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3Jp
cHRvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6YXNH
UFVSZW5kZXJQYXNzRGVzY3JpcHRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjphdHRhY2ht
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmg6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVUZXh0dXJlOjp0ZXh0dXJlIGNvbnN0KTogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6R1BVQnVmZmVyOjpieXRlTGVuZ3RoIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpHUFVCdWZmZXI6OmlzVHJhbnNmZXJTcmMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6R1BVQ29tbWFuZEJ1ZmZlcjo6YmxpdEVuY29kZXIgY29uc3QpOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaDogCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaDogQ2FjaGUgdXNhZ2Ug
ZmxhZ3MgZm9yIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkdQVVRleHR1cmU6OmlzVHJh
bnNmZXJTcmMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1BVVGV4dHVyZTo6aXNUcmFuc2Zl
ckRzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVUZXh0dXJlOjppc091dHB1dEF0dGFj
aG1lbnQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJl
VXNhZ2UuaDogUmVmYWN0b3IgdG8gbWF0Y2ggR1BVQnVmZmVyVXNhZ2UuaC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW06CisgICAgICAgIChX
ZWJDb3JlOjpHUFVCdWZmZXI6OnNldFN1YkRhdGEpOiBBZGQgYWxpZ25tZW50IGNoZWNrIGFjY29y
ZGluZyB0byBNZXRhbCBkb2NzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW06IAorICAgICAgICAoV2ViQ29yZTo6R1BVQ29tbWFu
ZEJ1ZmZlcjo6Y3JlYXRlKTogTm8gbmVlZCB0byB1c2UgdGhpcyBhbGlhcyBoZXJlLgorICAgICAg
ICAoV2ViQ29yZTo6R1BVQ29tbWFuZEJ1ZmZlcjo6R1BVQ29tbWFuZEJ1ZmZlcik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6R1BVQ29tbWFuZEJ1ZmZlcjo6Y3VycmVudEJsaXRFbmNvZGVyKTog
QWRkZWQuIFJldGFpbiBhIHJlZmVyZW5jZSB0byB0aGUgYmxpdENvbW1hbmRFbmNvZGVyLCBpZiBu
b3QgZG9pbmcgc28gYWxyZWFkeS4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUNvbW1hbmRCdWZmZXI6
OmNvcHlCdWZmZXJUb0J1ZmZlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R1BVQ29tbWFu
ZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
R1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb0J1ZmZlcik6IEFkZGVkLiAKKyAgICAgICAg
KFdlYkNvcmU6OkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKTogQWRkZWQu
IAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVRdWV1ZU1ldGFsLm1t
OgorICAgICAgICAoV2ViQ29yZTo6R1BVUXVldWU6OnN1Ym1pdCk6IEVuZCBlbmNvZGluZyBvbiB0
aGUgTVRMQ29tbWFuZEJ1ZmZlcidzIGJsaXRDb21tYW5kRW5jb2RlciBpZiBpdCB3YXMgdXNlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwu
bW06CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OmdldE5leHRUZXh0dXJlKTogTm93
IHByb3ZpZGUgdXNhZ2UgZmxhZ3MgdG8gdGV4dHVyZSBjcmVhdGlvbi4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6bXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3MpOiBSZWZhY3RvciB2
YWxpZGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6dHJ5Q3JlYXRlTXRsVGV4dHVyZURlc2NyaXB0
b3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdQVVRleHR1cmU6OnRyeUNyZWF0ZSk6IE5v
dyBwcm92aWRlIHVzYWdlIGZsYWdzIHRvIHRleHR1cmUgY3JlYXRpb24uCisgICAgICAgIChXZWJD
b3JlOjpHUFVUZXh0dXJlOjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdQVVRl
eHR1cmU6OkdQVVRleHR1cmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdQVVRleHR1cmU6
OmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldyk6IERpdHRvLgorCisgICAgICAgIEFkZCBuZXcgc3lt
Ym9scyBhbmQgZmlsZXM6CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKwogMjAxOS0wMi0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVzZS1hZnRlci1tb3ZlIGluIFJlbmRlckNvbWJpbmVUZXh0Ojpjb21i
aW5lVGV4dElmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggY2Q2MzE5MmM0YmQ5NWY2
ODUyNWExNGUwMjE4NGM1ZDEyNjJmZDA5MS4uNjAxMjRmYzFjZGUxN2E0MDk5OTFhYWYwNmFkZjdi
MzM5ZDdiOGUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ2OSw2ICs0NjksNyBAQCBzZXQo
V2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMvd2ViZ3B1L0dQVURlcHRoU3Rl
bmNpbFN0YXRlRGVzY3JpcHRvci5pZGwKICAgICBNb2R1bGVzL3dlYmdwdS9HUFVFeHRlbnQzRC5p
ZGwKICAgICBNb2R1bGVzL3dlYmdwdS9HUFVMb2FkT3AuaWRsCisgICAgTW9kdWxlcy93ZWJncHUv
R1BVT3JpZ2luM0QuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvR1BVUmVxdWVzdEFkYXB0ZXJPcHRp
b25zLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L0dQVVN0b3JlT3AuaWRsCiAgICAgTW9kdWxlcy93
ZWJncHUvR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA3ZTZiZjViMjg1M2E0MGVlNzhiYmFmY2Ix
ODk5MGRlYTkxM2VmZTc1Li4yNTVhYjQ0ZDZlYjVkMjU0NGY0ZjU5NWE3NGM2NWE0M2RkN2Q4ZDYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QK
QEAgLTMyMSwxMyArMzIxLDE0IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb25DYWxsYmFjay5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJkcml2ZXIvTmF2aWdhdG9yV2ViRHJpdmVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJncHUvRE9NV2luZG93V2ViR1BVLmlkbAotJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJncHUvR1BVQ29sb3IuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZm
ZXJEZXNjcmlwdG9yLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVy
VXNhZ2UuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb2xvci5pZGwKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUNvbXBhcmVGdW5jdGlvbi5pZGwKICQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbAogJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVTG9hZE9wLmlkbAorJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdw
dS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmdwdS9HUFVTdG9yZU9wLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVVGV4
dHVyZURlc2NyaXB0b3IuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGNlZGRiYWUzOWIzNTM3YTZhMmUyY2UzZTNkMjRhMzBkYzBl
ZDVlYTAuLmI1ZjAyMmRiNmJjMzhjODcwNTM3NmQzNWRjMGFlMGY1MjVmOWUxZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC01Nzcs
MTIgKzU3NywxMiBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0ZvbnRGYWNlU2V0LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNGb250RmFjZVNldC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dDT2JzZXJ2YXRpb24uY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dDT2JzZXJ2YXRpb24uaAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvci5jcHAKLSQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3IuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVCdWZmZXJEZXNjcmlwdG9y
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVC
dWZmZXJEZXNjcmlwdG9yLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR1BVQnVmZmVyVXNhZ2UuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJ1ZmZlclVzYWdlLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3IuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9yLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29tcGFyZUZ1bmN0aW9uLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb21wYXJl
RnVuY3Rpb24uaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuY3BwCkBAIC01OTEsNiArNTkxLDggQEAg
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVFeHRlbnQz
RC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BV
RXh0ZW50M0QuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHUFVMb2FkT3AuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dQVUxvYWRPcC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0dQVU9yaWdpbjNELmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNHUFVPcmlnaW4zRC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVUmVxdWVzdEFkYXB0
ZXJPcHRpb25zLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTR1BVU3RvcmVPcC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDllMTgx
OGQ4MjY1MDMwMTQzN2QyNDY3ZDY4YzlkNWU3YTBjZjk1MDAuLjA2Njg3OTI2NTkyODRkYTc0Y2Q2
OTlkOTg2YTUwNTFmNjQ0YmQ2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
Mzc5LDYgKzM3OSw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvd2ViZ3B1L0dQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJncHUvR1BVRXh0ZW50M0QuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L0dQVUxvYWRPcC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvR1BVT3JpZ2luM0QuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVJl
cXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUv
R1BVU3RvcmVPcC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVVGV4dHVy
ZURlc2NyaXB0b3IuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVU9yaWdpbjNELmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVPcmln
aW4zRC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY1OTU0MGVkY2JmODkxOTc2NGJlNmM5MjFiN2NhOTBjYzg4Yzcw
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVP
cmlnaW4zRC5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdQVU9y
aWdpbjNEIHsKKyAgICB1bnNpZ25lZCB4OworICAgIHVuc2lnbmVkIHk7CisgICAgdW5zaWduZWQg
ejsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4z
RC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5pZGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODEzYTIzMTRiZGY1YzZhOGNhMmE2MmVkNzA1ZWNmNTc2ZTBkMjk0YgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmlk
bApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3
ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCisKK3R5cGVkZWYgdW5z
aWduZWQgbG9uZyB1MzI7CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxl
ZEF0UnVudGltZT1XZWJHUFUKK10gZGljdGlvbmFyeSBHUFVPcmlnaW4zRCB7CisgICAgdTMyIHg7
CisgICAgdTMyIHk7CisgICAgdTMyIHo7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcAppbmRleCAyOGE1YWI3MmQ3OWI5
MmFhMjcxNGYxYjEzMzUwYWVhOWY3OTRmMjg4Li43YjQyMTIzNGZhZTdhOGNhMmJlMTFhMmU2N2Fh
ZWJmNTVhNTNhNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVDb21tYW5kQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcApAQCAtMzAsMTEgKzMwLDM3IEBACiAKICNpbmNsdWRl
ICJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NFbmNv
ZGVyLmgiCisjaW5jbHVkZSAiV2ViR1BVQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oIgor
I2luY2x1ZGUgIldlYkdQVVRleHR1cmUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitPcHRp
b25hbDxHUFVCdWZmZXJDb3B5Vmlldz4gV2ViR1BVQnVmZmVyQ29weVZpZXc6OmFzR1BVQnVmZmVy
Q29weVZpZXcoKSBjb25zdAoreworICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPmJ1ZmZlcigp
KSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kRW5jb2RlcjogSW52YWxpZCBidWZm
ZXIgZm9yIGNvcHkhIik7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisg
ICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCisKKyAgICByZXR1cm4gR1BVQnVm
ZmVyQ29weVZpZXcoYnVmZmVyLT5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCAqdGhpcyk7Cit9
CisKK09wdGlvbmFsPEdQVVRleHR1cmVDb3B5Vmlldz4gV2ViR1BVVGV4dHVyZUNvcHlWaWV3Ojph
c0dQVVRleHR1cmVDb3B5VmlldygpIGNvbnN0Cit7CisgICAgaWYgKCF0ZXh0dXJlIHx8ICF0ZXh0
dXJlLT50ZXh0dXJlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRFbmNvZGVy
OiBJbnZhbGlkIHRleHR1cmUgZm9yIGNvcHkhIik7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgfQorCisgICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCisKKyAg
ICByZXR1cm4gR1BVVGV4dHVyZUNvcHlWaWV3KHRleHR1cmUtPnRleHR1cmUoKS5yZWxlYXNlTm9u
TnVsbCgpLCAqdGhpcyk7Cit9CisKIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVDb21t
YW5kQnVmZmVyOjpjcmVhdGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYgYnVmZmVyKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIp
KSk7CkBAIC01Niw2ICs4Miw1NyBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+IFdl
YkdQVUNvbW1hbmRCdWZmZXI6OmJlZ2luUmVuZGVyUGFzcyhXZWJHUFVSZW5kZQogICAgIHJldHVy
biBudWxscHRyOwogfQogCit2b2lkIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1
ZmZlcihSZWY8V2ViR1BVQnVmZmVyPiYmIHNyYywgdW5zaWduZWQgbG9uZyBzcmNPZmZzZXQsIFJl
ZjxXZWJHUFVCdWZmZXI+JiYgZHN0LCB1bnNpZ25lZCBsb25nIGRzdE9mZnNldCwgdW5zaWduZWQg
bG9uZyBzaXplKQoreworICAgIGlmICghc3JjLT5idWZmZXIoKSB8fCAhZHN0LT5idWZmZXIoKSkg
eworICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvQnVm
ZmVyKCk6IEludmFsaWQgR1BVQnVmZmVyISIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCisKKyAgICBtX2NvbW1hbmRCdWZm
ZXItPmNvcHlCdWZmZXJUb0J1ZmZlcihzcmMtPmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIHNy
Y09mZnNldCwgZHN0LT5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBkc3RPZmZzZXQsIHNpemUp
OworfQorCit2b2lkIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoV2Vi
R1BVQnVmZmVyQ29weVZpZXcmJiBzcmNCdWZmZXIsIFdlYkdQVVRleHR1cmVDb3B5VmlldyYmIGRz
dFRleHR1cmUsIEdQVUV4dGVudDNEJiYgc2l6ZSkKK3sKKyAgICBhdXRvIGdwdUJ1ZmZlclZpZXcg
PSBzcmNCdWZmZXIuYXNHUFVCdWZmZXJDb3B5VmlldygpOworICAgIGF1dG8gZ3B1VGV4dHVyZVZp
ZXcgPSBkc3RUZXh0dXJlLmFzR1BVVGV4dHVyZUNvcHlWaWV3KCk7CisKKyAgICBpZiAoIWdwdUJ1
ZmZlclZpZXcgfHwgIWdwdVRleHR1cmVWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBG
SVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KKworICAgIG1fY29tbWFuZEJ1ZmZlci0+Y29w
eUJ1ZmZlclRvVGV4dHVyZShXVEZNb3ZlKCpncHVCdWZmZXJWaWV3KSwgV1RGTW92ZSgqZ3B1VGV4
dHVyZVZpZXcpLCBXVEZNb3ZlKHNpemUpKTsKK30KKwordm9pZCBXZWJHUFVDb21tYW5kQnVmZmVy
Ojpjb3B5VGV4dHVyZVRvQnVmZmVyKFdlYkdQVVRleHR1cmVDb3B5VmlldyYmIHNyY1RleHR1cmUs
IFdlYkdQVUJ1ZmZlckNvcHlWaWV3JiYgZHN0QnVmZmVyLCBHUFVFeHRlbnQzRCYmIHNpemUpCit7
CisgICAgYXV0byBncHVUZXh0dXJlVmlldyA9IHNyY1RleHR1cmUuYXNHUFVUZXh0dXJlQ29weVZp
ZXcoKTsKKyAgICBhdXRvIGdwdUJ1ZmZlclZpZXcgPSBkc3RCdWZmZXIuYXNHUFVCdWZmZXJDb3B5
VmlldygpOworCisgICAgaWYgKCFncHVUZXh0dXJlVmlldyB8fCAhZ3B1QnVmZmVyVmlldykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCisK
KyAgICBtX2NvbW1hbmRCdWZmZXItPmNvcHlUZXh0dXJlVG9CdWZmZXIoV1RGTW92ZSgqZ3B1VGV4
dHVyZVZpZXcpLCBXVEZNb3ZlKCpncHVCdWZmZXJWaWV3KSwgV1RGTW92ZShzaXplKSk7Cit9CisK
K3ZvaWQgV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoV2ViR1BVVGV4
dHVyZUNvcHlWaWV3JiYgc3JjLCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmJiBkc3QsIEdQVUV4dGVu
dDNEJiYgc2l6ZSkKK3sKKyAgICBhdXRvIGdwdVNyY1ZpZXcgPSBzcmMuYXNHUFVUZXh0dXJlQ29w
eVZpZXcoKTsKKyAgICBhdXRvIGdwdURzdFZpZXcgPSBkc3QuYXNHUFVUZXh0dXJlQ29weVZpZXco
KTsKKworICAgIGlmICghZ3B1U3JjVmlldyB8fCAhZ3B1RHN0VmlldykKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCisKKyAgICBtX2NvbW1h
bmRCdWZmZXItPmNvcHlUZXh0dXJlVG9UZXh0dXJlKFdURk1vdmUoKmdwdVNyY1ZpZXcpLCBXVEZN
b3ZlKCpncHVEc3RWaWV3KSwgV1RGTW92ZShzaXplKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKaW5kZXggOThlZTQwY2RkZDQ0
NGIxMDU2NWJjZDQ3ZDM3NDg0MzVjYmNiZTlhZC4uMzc2N2MzYzgwZWM5ZGFjNWJhYWI3MTI5NTcw
YWM1NmQ4MDI5ZmY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tbWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbW1hbmRCdWZmZXIuaApAQCAtMjksMTYgKzI5LDMyIEBACiAKICNpbmNsdWRlICJH
UFVDb21tYW5kQnVmZmVyLmgiCiAKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV2ViR1BVQnVmZmVyOwog
Y2xhc3MgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI7CitjbGFzcyBXZWJHUFVUZXh0dXJlOwogCitz
dHJ1Y3QgR1BVRXh0ZW50M0Q7CiBzdHJ1Y3QgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I7CiAK
K3N0cnVjdCBXZWJHUFVCdWZmZXJDb3B5VmlldyA6IEdQVUJ1ZmZlckNvcHlWaWV3QmFzZSB7Cisg
ICAgT3B0aW9uYWw8R1BVQnVmZmVyQ29weVZpZXc+IGFzR1BVQnVmZmVyQ29weVZpZXcoKSBjb25z
dDsKKworICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGJ1ZmZlcjsKK307CisKK3N0cnVjdCBXZWJH
UFVUZXh0dXJlQ29weVZpZXcgOiBHUFVUZXh0dXJlQ29weVZpZXdCYXNlIHsKKyAgICBPcHRpb25h
bDxHUFVUZXh0dXJlQ29weVZpZXc+IGFzR1BVVGV4dHVyZUNvcHlWaWV3KCkgY29uc3Q7CisKKyAg
ICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4gdGV4dHVyZTsKK307CisKIGNsYXNzIFdlYkdQVUNvbW1h
bmRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVDb21tYW5kQnVmZmVyPiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVhdGUoUmVmPEdQVUNv
bW1hbmRCdWZmZXI+JiYpOwpAQCAtNDYsNiArNjIsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IEdQ
VUNvbW1hbmRCdWZmZXImIGNvbW1hbmRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbW1hbmRC
dWZmZXIuZ2V0KCk7IH0KIAogICAgIFJlZlB0cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gYmVn
aW5SZW5kZXJQYXNzKFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiYpOworICAgIHZvaWQgY29w
eUJ1ZmZlclRvQnVmZmVyKFJlZjxXZWJHUFVCdWZmZXI+JiYsIHVuc2lnbmVkIGxvbmcgc3JjT2Zm
c2V0LCBSZWY8V2ViR1BVQnVmZmVyPiYmLCB1bnNpZ25lZCBsb25nIGRzdE9mZnNldCwgdW5zaWdu
ZWQgbG9uZyBzaXplKTsKKyAgICB2b2lkIGNvcHlCdWZmZXJUb1RleHR1cmUoV2ViR1BVQnVmZmVy
Q29weVZpZXcmJiwgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiYsIEdQVUV4dGVudDNEJiYpOworICAg
IHZvaWQgY29weVRleHR1cmVUb0J1ZmZlcihXZWJHUFVUZXh0dXJlQ29weVZpZXcmJiwgV2ViR1BV
QnVmZmVyQ29weVZpZXcmJiwgR1BVRXh0ZW50M0QmJik7CisgICAgdm9pZCBjb3B5VGV4dHVyZVRv
VGV4dHVyZShXZWJHUFVUZXh0dXJlQ29weVZpZXcmJiwgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiYs
IEdQVUV4dGVudDNEJiYpOwogCiBwcml2YXRlOgogICAgIFdlYkdQVUNvbW1hbmRCdWZmZXIoUmVm
PEdQVUNvbW1hbmRCdWZmZXI+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbAppbmRleCBiOWY0MmNmZGFhYmY1OGY5Njlj
MDBkNjI4NGJkOTNjOWIyMDliNGY4Li4xYmQ2ZjU0NTMzZTgxYmY5MDAyMTMyMzYyYzJjMDdmZmY1
MzNmOWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21tYW5kQnVmZmVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kQnVmZmVyLmlkbApAQCAtMjQsNiArMjQsMzEgQEAKICAqLwogLy8gaHR0cHM6Ly9n
aXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWduL3NrZXRjaC53ZWJpZGwK
IAordHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25n
IHU2NDsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1l
PVdlYkdQVSwKKyAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVUJ1ZmZlckNvcHlWaWV3CitdIGRpY3Rp
b25hcnkgR1BVQnVmZmVyQ29weVZpZXcgeworICAgIFdlYkdQVUJ1ZmZlciBidWZmZXI7CisgICAg
dTY0IG9mZnNldDsKKyAgICB1NjQgcm93UGl0Y2g7CisgICAgdTMyIGltYWdlSGVpZ2h0OworfTsK
KworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQ
VSwKKyAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVVRleHR1cmVDb3B5VmlldworXSBkaWN0aW9uYXJ5
IEdQVVRleHR1cmVDb3B5VmlldyB7CisgICAgV2ViR1BVVGV4dHVyZSB0ZXh0dXJlOworICAgIHUz
MiBtaXBMZXZlbDsKKyAgICB1MzIgYXJyYXlMYXllcjsKKyAgICBHUFVPcmlnaW4zRCBvcmlnaW47
Cit9OworCiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9
V2ViR1BVLApAQCAtMzEsMTEgKzU2LDcgQEAKIF0gaW50ZXJmYWNlIFdlYkdQVUNvbW1hbmRCdWZm
ZXIgewogICAgIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGJlZ2luUmVuZGVyUGFzcyhXZWJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKIAotLyogTm90IFlldCBJbXBsZW1lbnRl
ZAotICAgIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2RlciBiZWdpbkNvbXB1dGVQYXNzKCk7Ci0KLSAg
ICAvLyBDb21tYW5kcyBhbGxvd2VkIG91dHNpZGUgb2YgInBhc3NlcyIKLSAgICAgICAgdm9pZCBj
b3B5QnVmZmVyVG9CdWZmZXIoCisgICAgdm9pZCBjb3B5QnVmZmVyVG9CdWZmZXIoCiAgICAgICAg
IFdlYkdQVUJ1ZmZlciBzcmMsCiAgICAgICAgIHU2NCBzcmNPZmZzZXQsCiAgICAgICAgIFdlYkdQ
VUJ1ZmZlciBkc3QsCkBAIC00MywyMSArNjQsMjAgQEAKICAgICAgICAgdTY0IHNpemUpOwogCiAg
ICAgdm9pZCBjb3B5QnVmZmVyVG9UZXh0dXJlKAotICAgICAgICBXZWJHUFVCdWZmZXJDb3B5Vmll
dyBzb3VyY2UsCi0gICAgICAgIFdlYkdQVVRleHR1cmVDb3B5VmlldyBkZXN0aW5hdGlvbiwKLSAg
ICAgICAgV2ViR1BVRXh0ZW50M0QgY29weVNpemUpOworICAgICAgICBHUFVCdWZmZXJDb3B5Vmll
dyBzb3VyY2UsCisgICAgICAgIEdQVVRleHR1cmVDb3B5VmlldyBkZXN0aW5hdGlvbiwKKyAgICAg
ICAgR1BVRXh0ZW50M0QgY29weVNpemUpOwogCiAgICAgdm9pZCBjb3B5VGV4dHVyZVRvQnVmZmVy
KAotICAgICAgICBXZWJHUFVUZXh0dXJlQ29weVZpZXcgc291cmNlLAotICAgICAgICBXZWJHUFVC
dWZmZXJDb3B5VmlldyBkZXN0aW5hdGlvbiwKLSAgICAgICAgV2ViR1BVRXh0ZW50M0QgY29weVNp
emUpOworICAgICAgICBHUFVUZXh0dXJlQ29weVZpZXcgc291cmNlLAorICAgICAgICBHUFVCdWZm
ZXJDb3B5VmlldyBkZXN0aW5hdGlvbiwKKyAgICAgICAgR1BVRXh0ZW50M0QgY29weVNpemUpOwog
CiAgICAgdm9pZCBjb3B5VGV4dHVyZVRvVGV4dHVyZSgKLSAgICAgICAgV2ViR1BVVGV4dHVyZUNv
cHlWaWV3IHNvdXJjZSwKLSAgICAgICAgV2ViR1BVVGV4dHVyZUNvcHlWaWV3IGRlc3RpbmF0aW9u
LAotICAgICAgICBXZWJHUFVFeHRlbnQzRCBjb3B5U2l6ZSk7CisgICAgICAgIEdQVVRleHR1cmVD
b3B5VmlldyBzb3VyY2UsCisgICAgICAgIEdQVVRleHR1cmVDb3B5VmlldyBkZXN0aW5hdGlvbiwK
KyAgICAgICAgR1BVRXh0ZW50M0QgY29weVNpemUpOwogCi0gICAgLy8gVE9ETyBmaWd1cmUgd2hp
Y2ggb3RoZXIgY29tbWFuZHMgYXJlIG5lZWRlZAotICAgIHZvaWQgYmxpdCgpOwotKi8KKyAgICAv
LyBOb3QgWWV0IEltcGxlbWVudGVkCisgICAgLy8gV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGJl
Z2luQ29tcHV0ZVBhc3MoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKaW5kZXggMmQyOGFi
YzRiOTg0NzAzNjgyMGRiNjk5NmQ1NDk3M2IyYjZlMjRiMi4uM2U4YjY5OGM4MzAwN2E3YjdmOTgx
ZDFiZGQ4ZGFhMWIzNzQ0MTUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcApAQCAtMzMsMTQg
KzMzLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I6OkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1cmUsIEdQVUxvYWRPcCBsb2FkLCBHUFVTdG9yZU9wIHN0
b3JlLCBHUFVDb2xvciBjb2xvcikKLSAgICA6IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQmFzZSB7IGxvYWQsIHN0b3JlLCBjb2xvciB9CitHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IoUmVmPEdQVVRleHR1cmU+JiYgdGV4dHVyZSwgY29uc3QgR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JCYXNlJiBiYXNlKQorICAgIDogR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JCYXNlKGJhc2UpCiAgICAgLCBhdHRhY2htZW50KFdURk1vdmUodGV4
dHVyZSkpCiB7CiB9CiAKLUdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3Jp
cHRvcjo6R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxH
UFVUZXh0dXJlPiYmIHRleHR1cmUsIEdQVUxvYWRPcCBsb2FkLCBHUFVTdG9yZU9wIHN0b3JlLCBm
bG9hdCBkZXB0aCkKLSAgICA6IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVz
Y3JpcHRvckJhc2UgeyBsb2FkLCBzdG9yZSwgZGVwdGggfQorR1BVUmVuZGVyUGFzc0RlcHRoU3Rl
bmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNo
bWVudERlc2NyaXB0b3IoUmVmPEdQVVRleHR1cmU+JiYgdGV4dHVyZSwgY29uc3QgR1BVUmVuZGVy
UGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSYgYmFzZSkKKyAgICA6IEdQ
VVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvckJhc2UoYmFzZSkKICAg
ICAsIGF0dGFjaG1lbnQoV1RGTW92ZSh0ZXh0dXJlKSkKIHsKIH0KQEAgLTU2LDIxICs1NiwyMSBA
QCBPcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3I6OmFzR1BVUmVuZGVyUGFzc0RlcwogICAgIFZlY3RvcjxHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcj4gZ3B1Q29sb3JBdHRhY2htZW50czsKIAogICAgIGZvciAoY29u
c3QgYXV0byYgY29sb3JBdHRhY2htZW50IDogY29sb3JBdHRhY2htZW50cykgewotICAgICAgICBp
ZiAoIWNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50KSB7CisgICAgICAgIGlmICghY29sb3JBdHRh
Y2htZW50LmF0dGFjaG1lbnQgfHwgIWNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50LT50ZXh0dXJl
KCktPmlzT3V0cHV0QXR0YWNobWVudCgpKSB7CiAgICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3I6IEludmFsaWQgYXR0YWNobWVudCBpbiBHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvciEiKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAgICAgICAgIH0KLSAgICAgICAgZ3B1Q29sb3JBdHRhY2htZW50cy5hcHBlbmQoR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoY29sb3JBdHRhY2htZW50LmF0dGFj
aG1lbnQtPnRleHR1cmUoKSwgY29sb3JBdHRhY2htZW50LmxvYWRPcCwgY29sb3JBdHRhY2htZW50
LnN0b3JlT3AsIGNvbG9yQXR0YWNobWVudC5jbGVhckNvbG9yKSk7CisgICAgICAgIGdwdUNvbG9y
QXR0YWNobWVudHMuYXBwZW5kKEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KGNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50LT50ZXh0dXJlKCksIGNvbG9yQXR0YWNobWVudCkp
OwogICAgIH0KIAogICAgIE9wdGlvbmFsPEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50RGVzY3JpcHRvcj4gZ3B1RGVwdGhBdHRhY2htZW50OwogCiAgICAgaWYgKGRlcHRoU3RlbmNp
bEF0dGFjaG1lbnQpIHsKLSAgICAgICAgaWYgKCFkZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5hdHRh
Y2htZW50KSB7CisgICAgICAgIGlmICghZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+YXR0YWNobWVu
dCB8fCAhZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+YXR0YWNobWVudC0+dGV4dHVyZSgpLT5pc091
dHB1dEF0dGFjaG1lbnQoKSkgewogICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yOiBJbnZhbGlkIGF0dGFjaG1lbnQgaW4gR1BVUmVuZGVyUGFzc0RlcHRoU3Rl
bmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yISIpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICAgICAgfQotICAgICAgICBncHVEZXB0aEF0dGFjaG1lbnQgPSBHUFVSZW5kZXJQ
YXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IoZGVwdGhTdGVuY2lsQXR0YWNobWVu
dC0+YXR0YWNobWVudC0+dGV4dHVyZSgpLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5kZXB0aExv
YWRPcCwgZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+ZGVwdGhTdG9yZU9wLCBkZXB0aFN0ZW5jaWxB
dHRhY2htZW50LT5jbGVhckRlcHRoKTsKKyAgICAgICAgZ3B1RGVwdGhBdHRhY2htZW50ID0gR1BV
UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQtPmF0dGFjaG1lbnQtPnRleHR1cmUoKSwgKmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQp
OwogICAgIH0KIAogICAgIHJldHVybiBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciB7IFdURk1vdmUo
Z3B1Q29sb3JBdHRhY2htZW50cyksIFdURk1vdmUoZ3B1RGVwdGhBdHRhY2htZW50KSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oCmluZGV4IGM1OTBi
ZGY2OTQyZDdiOWJmZmZkMWU3MmI2MTI4OWJkODBkMzliMzIuLjYyZmVkOThlMDhjOTdmZjIwZTdj
MDY2ZWIyZDk0N2VjMzkwMWYzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVUZXh0dXJlLmgKQEAgLTQwLDYgKzQwLDggQEAgY2xhc3MgV2ViR1BVVGV4dHVyZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVRleHR1cmU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFdlYkdQVVRleHR1cmU+IGNyZWF0ZShSZWZQdHI8R1BVVGV4dHVyZT4mJik7CiAKKyAgICBS
ZWZQdHI8R1BVVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZTsgfQor
CiAgICAgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBjcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXco
KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOTY1ZDA0MjNmNzhiMTc1OGE2M2QyODhm
OTJmODIwZTYyM2YwMGZiOS4uYjU3NWU2OGJmZmJhYmFlOTIxNjUwZDRhOWJmNmM0MjUzMWExZDc5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTI3NzUsNiArMjc3NSw3IEBAIEpTR1BVQ29tcGFyZUZ1bmN0
aW9uLmNwcAogSlNHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuY3BwCiBKU0dQVUV4dGVu
dDNELmNwcAogSlNHUFVMb2FkT3AuY3BwCitKU0dQVU9yaWdpbjNELmNwcAogSlNHUFVSZXF1ZXN0
QWRhcHRlck9wdGlvbnMuY3BwCiBKU0dQVVN0b3JlT3AuY3BwCiBKU0dQVVRleHR1cmVEZXNjcmlw
dG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDI0NDE5NTk3NzliYzA3MGZhNGUzNDQxZTM4Y2M1ZmI1MTczOWRiMzYuLjUy
ODhhZDQ3OGE0Y2FmODBiYjE3NmI4Y2RhYjljMTZhYTFiYmE0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MTM1LDYgKzE0
MTM1LDggQEAKIAkJRDBDQUFFOUMyMTY4MjRBNzAwMUM5MUM3IC8qIFdlYk1ldGFsQ29tcHV0ZUNv
bW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1ldGFsQ29tcHV0ZUNvbW1h
bmRFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBDQUFFOUQyMTY4
MjRBNzAwMUM5MUM3IC8qIFdlYk1ldGFsQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1ldGFs
QnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTlFMjE2ODI0QTgw
MDFDOTFDNyAvKiBXZWJNZXRhbENvbW1hbmRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViTWV0YWxDb21tYW5kQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RDBDQ0E5NDkyMjI5OUY5NzAwNjk3OUI2IC8qIEdQVU9yaWdpbjNELmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVU9yaWdpbjNELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQ0NBOTRBMjIy
OTlGOTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVT3JpZ2luM0QuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEQ4NjQ4NzIxQjY0Q0FBMDAzQzk4M0MgLyog
R1BVQnVmZmVyRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVCdWZmZXJEZXNjcmlwdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRDg2NDhDMjFCNzA2NzYwMDNDOTgz
QyAvKiBXZWJHUFVCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQnVmZmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRDg2NDhEMjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJH
UFVCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQnVmZmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2MDcyLDYgKzI2MDc0LDggQEAKIAkJCQlEMDNDODRB
MjIxRkZENzIzMDAwMjIyN0YgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlkbCAq
LywKIAkJCQlEMDI2RjQ4MDIyMEEyQjcwMDBBQzVGNDkgLyogR1BVRXh0ZW50M0QuaWRsICovLAog
CQkJCUQwOEFBMDJEMjIwRDBCOUMwMDU4QzUwMiAvKiBHUFVMb2FkT3AuaWRsICovLAorCQkJCUQw
Q0NBOTQ5MjIyOTlGOTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5oICovLAorCQkJCUQwQ0NBOTRB
MjIyOTlGOTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5pZGwgKi8sCiAJCQkJRDAyQzI2OTIyMTgx
NDE2RDAwRDgxOEU0IC8qIEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwgKi8sCiAJCQkJRDA4
QUEwMzEyMjBEMENFNjAwNThDNTAyIC8qIEdQVVN0b3JlT3AuaWRsICovLAogCQkJCUQwMjZGNDhC
MjIwQTVCMEIwMEFDNUY0OSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmgKaW5kZXggZDky
OWZkMTk3N2U1ZDY4Mzg5YTNhY2NkZWJlNmU0ZmYzN2I2ZWQ4Zi4uYWRkNmQyMjBiYjA0MjdmNDZk
Mjk0OGRlZTVjZmE3ODViNzY3ZGRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaApAQCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZlB0cjxHUFVCdWZmZXI+IHRyeUNyZWF0ZShSZWY8R1BVRGV2aWNlPiYmLCBHUFVC
dWZmZXJEZXNjcmlwdG9yJiYpOwogCiAgICAgUGxhdGZvcm1CdWZmZXIgKnBsYXRmb3JtQnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUJ1ZmZlci5nZXQoKTsgfQorICAgIHVuc2lnbmVk
IGxvbmcgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQorICAgIGJv
b2wgaXNUcmFuc2ZlclNyYygpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UgJiBHUFVCdWZmZXJVc2Fn
ZTo6VHJhbnNmZXJTcmM7IH0KICAgICBib29sIGlzVHJhbnNmZXJEc3QoKSBjb25zdCB7IHJldHVy
biBtX3VzYWdlICYgR1BVQnVmZmVyVXNhZ2U6OlRyYW5zZmVyRHN0OyB9CiAgICAgYm9vbCBpc1Zl
cnRleCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UgJiBHUFVCdWZmZXJVc2FnZTo6VmVydGV4OyB9
CiAgICAgYm9vbCBpc1VuaWZvcm0oKSBjb25zdCB7IHJldHVybiBtX3VzYWdlICYgR1BVQnVmZmVy
VXNhZ2U6OlVuaWZvcm07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oCmluZGV4IDk5YmNlZjAyNmE0MDUzNjgxNzc0
NzEyMDhkMTg5YzI0NzAyMzlhMWMuLjg3NTc3ZjUyOTBlMTRmYTc1ZThkOTkyNTMzZDM3NGU0YTA2
NzU5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVDb21tYW5kQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L0dQVUNvbW1hbmRCdWZmZXIuaApAQCAtMjcsMzUgKzI3LDg1IEBACiAKICNpZiBFTkFCTEUo
V0VCR1BVKQogCisjaW5jbHVkZSAiR1BVT3JpZ2luM0QuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCitPQkpDX1BST1RPQ09MKE1UTEJsaXRDb21t
YW5kRW5jb2Rlcik7CiBPQkpDX1BST1RPQ09MKE1UTENvbW1hbmRCdWZmZXIpOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdQVUJ1ZmZlcjsKIGNsYXNzIEdQVURldmljZTsKK2NsYXNz
IEdQVVRleHR1cmU7CisKK3N0cnVjdCBHUFVFeHRlbnQzRDsKIAogdXNpbmcgUGxhdGZvcm1Db21t
YW5kQnVmZmVyID0gTVRMQ29tbWFuZEJ1ZmZlcjsKIHVzaW5nIFBsYXRmb3JtQ29tbWFuZEJ1ZmZl
clNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTENvbW1hbmRCdWZmZXI+OwogCitzdHJ1Y3QgR1BVQnVm
ZmVyQ29weVZpZXdCYXNlIHsKKyAgICB1bnNpZ25lZCBsb25nIG9mZnNldDsKKyAgICB1bnNpZ25l
ZCBsb25nIHJvd1BpdGNoOworICAgIHVuc2lnbmVkIGltYWdlSGVpZ2h0OworfTsKKworc3RydWN0
IEdQVUJ1ZmZlckNvcHlWaWV3IGZpbmFsIDogR1BVQnVmZmVyQ29weVZpZXdCYXNlIHsKKyAgICBH
UFVCdWZmZXJDb3B5VmlldyhSZWY8R1BVQnVmZmVyPiYmIGJ1ZmZlckNvcHksIGNvbnN0IEdQVUJ1
ZmZlckNvcHlWaWV3QmFzZSYgYmFzZSkKKyAgICAgICAgOiBHUFVCdWZmZXJDb3B5Vmlld0Jhc2Uo
YmFzZSkKKyAgICAgICAgLCBidWZmZXIoV1RGTW92ZShidWZmZXJDb3B5KSkKKyAgICB7CisgICAg
fQorCisgICAgUmVmPEdQVUJ1ZmZlcj4gYnVmZmVyOworfTsKKworc3RydWN0IEdQVVRleHR1cmVD
b3B5Vmlld0Jhc2UgeworICAgIHVuc2lnbmVkIG1pcExldmVsOworICAgIHVuc2lnbmVkIGFycmF5
TGF5ZXI7CisgICAgR1BVT3JpZ2luM0Qgb3JpZ2luOworfTsKKworc3RydWN0IEdQVVRleHR1cmVD
b3B5VmlldyBmaW5hbCA6IEdQVVRleHR1cmVDb3B5Vmlld0Jhc2UgeworICAgIEdQVVRleHR1cmVD
b3B5VmlldyhSZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlQ29weSwgY29uc3QgR1BVVGV4dHVyZUNv
cHlWaWV3QmFzZSYgYmFzZSkKKyAgICAgICAgOiBHUFVUZXh0dXJlQ29weVZpZXdCYXNlKGJhc2Up
CisgICAgICAgICwgdGV4dHVyZShXVEZNb3ZlKHRleHR1cmVDb3B5KSkKKyAgICB7CisgICAgfQor
CisgICAgUmVmPEdQVVRleHR1cmU+IHRleHR1cmU7Cit9OworCiBjbGFzcyBHUFVDb21tYW5kQnVm
ZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQ29tbWFuZEJ1ZmZlcj4gewogcHVibGljOgogICAg
IHN0YXRpYyBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gY3JlYXRlKEdQVURldmljZSYpOwogCiAg
ICAgUGxhdGZvcm1Db21tYW5kQnVmZmVyKiBwbGF0Zm9ybUNvbW1hbmRCdWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlci5nZXQoKTsgfQogICAgIGNvbnN0IFZlY3Rv
cjxSZWY8R1BVQnVmZmVyPj4mIHVzZWRCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV91c2VkQnVm
ZmVyczsgfQorI2lmIFVTRShNRVRBTCkKKyAgICBNVExCbGl0Q29tbWFuZEVuY29kZXIgKmJsaXRF
bmNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV9ibGl0RW5jb2Rlci5nZXQoKTsgfQorI2VuZGlmCisK
KyAgICB2b2lkIGNvcHlCdWZmZXJUb0J1ZmZlcihSZWY8R1BVQnVmZmVyPiYmLCB1bnNpZ25lZCBs
b25nIHNyY09mZnNldCwgUmVmPEdQVUJ1ZmZlcj4mJiwgdW5zaWduZWQgbG9uZyBkc3RPZmZzZXQs
IHVuc2lnbmVkIGxvbmcgc2l6ZSk7CisgICAgdm9pZCBjb3B5QnVmZmVyVG9UZXh0dXJlKEdQVUJ1
ZmZlckNvcHlWaWV3JiYsIEdQVVRleHR1cmVDb3B5VmlldyYmLCBHUFVFeHRlbnQzRCYmKTsKKyAg
ICB2b2lkIGNvcHlUZXh0dXJlVG9CdWZmZXIoR1BVVGV4dHVyZUNvcHlWaWV3JiYsIEdQVUJ1ZmZl
ckNvcHlWaWV3JiYsIEdQVUV4dGVudDNEJiYpOworICAgIHZvaWQgY29weVRleHR1cmVUb1RleHR1
cmUoR1BVVGV4dHVyZUNvcHlWaWV3JiYsIEdQVVRleHR1cmVDb3B5VmlldyYmLCBHUFVFeHRlbnQz
RCYmKTsKIAogICAgIHZvaWQgdXNlQnVmZmVyKFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVyKSB7IG1f
dXNlZEJ1ZmZlcnMuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7IH0KIAogcHJpdmF0ZToKICAgICBH
UFVDb21tYW5kQnVmZmVyKFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyJiYpOwogCisgICAg
TVRMQmxpdENvbW1hbmRFbmNvZGVyICpjdXJyZW50QmxpdEVuY29kZXIoKTsKKwogICAgIFBsYXRm
b3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyIG1fcGxhdGZvcm1Db21tYW5kQnVmZmVyOwogICAgIFZl
Y3RvcjxSZWY8R1BVQnVmZmVyPj4gbV91c2VkQnVmZmVyczsKKyNpZiBVU0UoTUVUQUwpCisgICAg
UmV0YWluUHRyPE1UTEJsaXRDb21tYW5kRW5jb2Rlcj4gbV9ibGl0RW5jb2RlcjsKKyNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaApp
bmRleCBmNGFjNjlhYTQ1YmJjNzdlZDRiYmRjYmZhYjdhMGYzMDhkYzViYzg2Li5kNjRjZjVmMzk3
MDJjMzZjMmUxZTJkZWFmNWI0OGFlMTUwZGJmZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaApAQCAtNDMsNyArNDMsNyBAQCBzdHJ1Y3QgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dERlc2NyaXB0b3JCYXNlIHsKIH07CiAKIHN0cnVjdCBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvciBmaW5hbCA6IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlw
dG9yQmFzZSB7Ci0gICAgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoUmVm
PEdQVVRleHR1cmU+JiYsIEdQVUxvYWRPcCwgR1BVU3RvcmVPcCwgR1BVQ29sb3IpOworICAgIEdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0dXJlPiYmLCBj
b25zdCBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJhc2UmKTsKIAogICAg
IFJlZjxHUFVUZXh0dXJlPiBhdHRhY2htZW50OwogfTsKQEAgLTU3LDcgKzU3LDcgQEAgc3RydWN0
IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvckJhc2UgewogfTsK
IAogc3RydWN0IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciBm
aW5hbCA6IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvckJhc2Ug
ewotICAgIEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcihSZWY8
R1BVVGV4dHVyZT4mJiwgR1BVTG9hZE9wLCBHUFVTdG9yZU9wLCBmbG9hdCk7CisgICAgR1BVUmVu
ZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0dXJlPiYm
LCBjb25zdCBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3JCYXNl
Jik7CiAKICAgICBSZWY8R1BVVGV4dHVyZT4gYXR0YWNobWVudDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaAppbmRleCA1NWQxZTNj
ODI4OTdlMzQ1ZjliM2E3Mjc2ODc1MGFkNTRhMzQ3YTI3Li41Njc0YmVhN2JmNWMzNDI4MTg5MWJl
NTYwZDNkZjY3Y2NlZGQ0M2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9HUFVUZXh0dXJlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShX
RUJHUFUpCiAKKyNpbmNsdWRlICJHUFVUZXh0dXJlVXNhZ2UuaCIKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CkBAIC00NSwxNiArNDYsMjEgQEAgdXNpbmcgUGxhdGZvcm1UZXh0dXJlU21hcnRQdHIg
PSBSZXRhaW5QdHI8TVRMVGV4dHVyZT47CiBjbGFzcyBHUFVUZXh0dXJlIDogcHVibGljIFJlZkNv
dW50ZWQ8R1BVVGV4dHVyZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R1BVVGV4dHVy
ZT4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYsIEdQVVRleHR1cmVEZXNjcmlwdG9yJiYpOwot
ICAgIHN0YXRpYyBSZWY8R1BVVGV4dHVyZT4gY3JlYXRlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRy
JiYpOworICAgIHN0YXRpYyBSZWY8R1BVVGV4dHVyZT4gY3JlYXRlKFBsYXRmb3JtVGV4dHVyZVNt
YXJ0UHRyJiYsIEdQVVRleHR1cmVVc2FnZTo6RmxhZ3MpOwogCiAgICAgUGxhdGZvcm1UZXh0dXJl
ICpwbGF0Zm9ybVRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVGV4dHVyZS5nZXQo
KTsgfQorICAgIGJvb2wgaXNUcmFuc2ZlclNyYygpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UgJiBH
UFVUZXh0dXJlVXNhZ2U6OlRyYW5zZmVyU3JjOyB9CisgICAgYm9vbCBpc1RyYW5zZmVyRHN0KCkg
Y29uc3QgeyByZXR1cm4gbV91c2FnZSAmIEdQVVRleHR1cmVVc2FnZTo6VHJhbnNmZXJEc3Q7IH0K
KyAgICBib29sIGlzT3V0cHV0QXR0YWNobWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UgJiBH
UFVUZXh0dXJlVXNhZ2U6Ok91dHB1dEF0dGFjaG1lbnQ7IH0KIAogICAgIFJlZlB0cjxHUFVUZXh0
dXJlPiBjcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBHUFVUZXh0dXJlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYpOworICAgIGV4cGxpY2l0IEdQ
VVRleHR1cmUoUGxhdGZvcm1UZXh0dXJlU21hcnRQdHImJiwgR1BVVGV4dHVyZVVzYWdlOjpGbGFn
cyk7CiAKICAgICBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciBtX3BsYXRmb3JtVGV4dHVyZTsKKwor
ICAgIEdQVVRleHR1cmVVc2FnZTo6RmxhZ3MgbV91c2FnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVUZXh0dXJlVXNhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVUZXh0dXJlVXNhZ2UuaAppbmRleCAxN2EwMzAwN2Q0OTZiYzg3MjFjYTk0ZTQwNTg2YzFm
MjlhMjRhNDc1Li42OGQ0OTNjZGY2MmM2Y2JlZjIzMTVlMTdlZDM3MTQyNmU1MGQxODkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVVz
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1
cmVVc2FnZS5oCkBAIC0zNSwxMiArMzUsMTQgQEAgdXNpbmcgR1BVVGV4dHVyZVVzYWdlRmxhZ3Mg
PSB1bnNpZ25lZCBsb25nOwogICAgIAogY2xhc3MgR1BVVGV4dHVyZVVzYWdlIDogcHVibGljIFJl
ZkNvdW50ZWQ8R1BVVGV4dHVyZVVzYWdlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IEdQ
VVRleHR1cmVVc2FnZUZsYWdzIE5vbmUgPSAwOwotICAgIHN0YXRpYyBjb25zdCBHUFVUZXh0dXJl
VXNhZ2VGbGFncyBUcmFuc2ZlclNyYyA9IDE7Ci0gICAgc3RhdGljIGNvbnN0IEdQVVRleHR1cmVV
c2FnZUZsYWdzIFRyYW5zZmVyRHN0ID0gMjsKLSAgICBzdGF0aWMgY29uc3QgR1BVVGV4dHVyZVVz
YWdlRmxhZ3MgU2FtcGxlZCA9IDQ7Ci0gICAgc3RhdGljIGNvbnN0IEdQVVRleHR1cmVVc2FnZUZs
YWdzIFN0b3JhZ2UgPSA4OwotICAgIHN0YXRpYyBjb25zdCBHUFVUZXh0dXJlVXNhZ2VGbGFncyBP
dXRwdXRBdHRhY2htZW50ID0gMTY7CisgICAgZW51bSBGbGFncyA6IEdQVVRleHR1cmVVc2FnZUZs
YWdzIHsKKyAgICAgICAgTm9uZSA9IDAsCisgICAgICAgIFRyYW5zZmVyU3JjID0gMSwKKyAgICAg
ICAgVHJhbnNmZXJEc3QgPSAyLAorICAgICAgICBTYW1wbGVkID0gNCwKKyAgICAgICAgU3RvcmFn
ZSA9IDgsCisgICAgICAgIE91dHB1dEF0dGFjaG1lbnQgPSAxNgorICAgIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KaW5kZXggMGQ4YzIwODE4
MGMwYjUxNmVjOGU5ZDU2ZDM2MjcyYWY1OTlmYTBmNS4uN2FiNDdiMTIyZTM3NWE0ZmU4NGUzMmQ0
NDY1N2MzMGUxYzBmNTdjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQpAQCAtMTI0LDE0ICsx
MjQsMjAgQEAgdm9pZCBHUFVCdWZmZXI6OnNldFN1YkRhdGEodW5zaWduZWQgbG9uZyBvZmZzZXQs
IGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImIGRhdGEpCiAgICAgICAgIExPRyhXZWJHUFUsICJHUFVC
dWZmZXI6OnNldFN1YkRhdGEoKTogSW52YWxpZCBvcGVyYXRpb24hIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKG9mZnNldCAlIDQgfHwgZGF0
YS5ieXRlTGVuZ3RoKCkgJSA0KSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVCdWZmZXI6OnNl
dFN1YkRhdGEoKTogRGF0YSBtdXN0IGJlIGFsaWduZWQgdG8gYSBtdWx0aXBsZSBvZiA0IGJ5dGVz
ISIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKwog
ICAgIGF1dG8gc3ViRGF0YUxlbmd0aCA9IGNoZWNrZWRTdW08dW5zaWduZWQgbG9uZz4oZGF0YS5i
eXRlTGVuZ3RoKCksIG9mZnNldCk7CiAgICAgaWYgKHN1YkRhdGFMZW5ndGguaGFzT3ZlcmZsb3dl
ZCgpIHx8IHN1YkRhdGFMZW5ndGgudW5zYWZlR2V0KCkgPiBtX2J5dGVMZW5ndGgpIHsKICAgICAg
ICAgTE9HKFdlYkdQVSwgIkdQVUJ1ZmZlcjo6c2V0U3ViRGF0YSgpOiBJbnZhbGlkIG9mZnNldCBv
ciBkYXRhIHNpemUhIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTog
QWRkIGFsaWdubWVudCBjaGVja3Mgb25jZSBzcGVjaWZpZWQuCi0KICAgICBpZiAobV9zdWJEYXRh
QnVmZmVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwogICAgICAgICBtX3N1YkRhdGFCdWZmZXJzLmFwcGVuZChhZG9wdE5TKFttX3BsYXRmb3JtQnVm
ZmVyLmdldCgpLmRldmljZSBuZXdCdWZmZXJXaXRoTGVuZ3RoOm1fYnl0ZUxlbmd0aCBvcHRpb25z
Ok1UTFJlc291cmNlQ1BVQ2FjaGVNb2RlRGVmYXVsdENhY2hlXSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJN
ZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVD
b21tYW5kQnVmZmVyTWV0YWwubW0KaW5kZXggOTNlZGMxMWE4MGVjYjZhMDY0MThiNTJjMjYxNDYz
ODMyZjFmNzk2Yi4uMmI4ZmUzYzI4ZWFkOTMzNzIyOGJkMDRiNGE1ODg5MDQ0NTAzZDNiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNv
bW1hbmRCdWZmZXJNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tCkBAIC0yOCwxMiArMjgsMTYgQEAK
IAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNpbXBvcnQgIkdQVUJ1ZmZlci5oIgogI2ltcG9ydCAi
R1BVRGV2aWNlLmgiCisjaW1wb3J0ICJHUFVFeHRlbnQzRC5oIgogI2ltcG9ydCAiR1BVUXVldWUu
aCIKKyNpbXBvcnQgIkdQVVRleHR1cmUuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKIAogI2ltcG9y
dCA8TWV0YWwvTWV0YWwuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Cisj
aW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01MCw3ICs1NCw3IEBAIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBHUFVDb21tYW5kQnVm
ZmVyOjpjcmVhdGUoR1BVRGV2aWNlJiBkZXZpY2UpCiAKICAgICBhdXRvIG10bFF1ZXVlID0gZ3B1
Q29tbWFuZFF1ZXVlLT5wbGF0Zm9ybVF1ZXVlKCk7CiAKLSAgICBQbGF0Zm9ybUNvbW1hbmRCdWZm
ZXJTbWFydFB0ciBidWZmZXI7CisgICAgUmV0YWluUHRyPE1UTENvbW1hbmRCdWZmZXI+IGJ1ZmZl
cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtNjYsMTEgKzcwLDE0
NyBAQCBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKEdQ
VURldmljZSYgZGV2aWNlKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVQ29tbWFuZEJ1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAotR1BVQ29tbWFuZEJ1ZmZlcjo6R1BVQ29tbWFuZEJ1
ZmZlcihQbGF0Zm9ybUNvbW1hbmRCdWZmZXJTbWFydFB0ciYmIGJ1ZmZlcikKK0dQVUNvbW1hbmRC
dWZmZXI6OkdQVUNvbW1hbmRCdWZmZXIoUmV0YWluUHRyPE1UTENvbW1hbmRCdWZmZXI+JiYgYnVm
ZmVyKQogICAgIDogbV9wbGF0Zm9ybUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKQogewog
fQogCitNVExCbGl0Q29tbWFuZEVuY29kZXIgKkdQVUNvbW1hbmRCdWZmZXI6OmN1cnJlbnRCbGl0
RW5jb2RlcigpCit7CisgICAgaWYgKCFtX2JsaXRFbmNvZGVyKQorICAgICAgICBtX2JsaXRFbmNv
ZGVyID0gcmV0YWluUHRyKFttX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlciBibGl0Q29tbWFuZEVuY29k
ZXJdKTsKKworICAgIHJldHVybiBtX2JsaXRFbmNvZGVyLmdldCgpOworfQorCit2b2lkIEdQVUNv
bW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcihSZWY8R1BVQnVmZmVyPiYmIHNyYywgdW5z
aWduZWQgbG9uZyBzcmNPZmZzZXQsIFJlZjxHUFVCdWZmZXI+JiYgZHN0LCB1bnNpZ25lZCBsb25n
IGRzdE9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKQoreworICAgIGlmICghc3JjLT5pc1RyYW5z
ZmVyU3JjKCkgfHwgIWRzdC0+aXNUcmFuc2ZlckRzdCgpKSB7CisgICAgICAgIExPRyhXZWJHUFUs
ICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoKTogSW52YWxpZCBvcGVyYXRp
b24hIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBQTEFURk9STShNQUMpCisgICAg
aWYgKHNpemUgJSA0IHx8IHNyY09mZnNldCAlIDQgfHwgZHN0T2Zmc2V0ICUgNCkgeworICAgICAg
ICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKCk6IENv
cHkgbXVzdCBiZSBhbGlnbmVkIHRvIGEgbXVsdGlwbGUgb2YgNCBieXRlcyEiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKKyAgICBhdXRvIHNyY0xl
bmd0aCA9IGNoZWNrZWRTdW08dW5zaWduZWQgbG9uZz4oc2l6ZSwgc3JjT2Zmc2V0KTsKKyAgICBh
dXRvIGRzdExlbmd0aCA9IGNoZWNrZWRTdW08dW5zaWduZWQgbG9uZz4oc2l6ZSwgZHN0T2Zmc2V0
KTsKKyAgICBpZiAoc3JjTGVuZ3RoLmhhc092ZXJmbG93ZWQoKSB8fCBkc3RMZW5ndGguaGFzT3Zl
cmZsb3dlZCgpCisgICAgICAgIHx8IHNyY0xlbmd0aC51bnNhZmVHZXQoKSA+IHNyYy0+Ynl0ZUxl
bmd0aCgpIHx8IGRzdExlbmd0aC51bnNhZmVHZXQoKSA+IGRzdC0+Ynl0ZUxlbmd0aCgpKSB7Cisg
ICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIo
KTogSW52YWxpZCBvZmZzZXQgb3IgY29weSBzaXplISIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgW2N1cnJlbnRCbGl0
RW5jb2RlcigpCisgICAgICAgIGNvcHlGcm9tQnVmZmVyOnNyYy0+cGxhdGZvcm1CdWZmZXIoKQor
ICAgICAgICBzb3VyY2VPZmZzZXQ6c3JjT2Zmc2V0CisgICAgICAgIHRvQnVmZmVyOmRzdC0+cGxh
dGZvcm1CdWZmZXIoKQorICAgICAgICBkZXN0aW5hdGlvbk9mZnNldDpkc3RPZmZzZXQKKyAgICAg
ICAgc2l6ZTpzaXplXTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICB1
c2VCdWZmZXIoV1RGTW92ZShzcmMpKTsKKyAgICB1c2VCdWZmZXIoV1RGTW92ZShkc3QpKTsKK30K
Kwordm9pZCBHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKEdQVUJ1ZmZlckNv
cHlWaWV3JiYgc3JjQnVmZmVyLCBHUFVUZXh0dXJlQ29weVZpZXcmJiBkc3RUZXh0dXJlLCBHUFVF
eHRlbnQzRCYmIHNpemUpCit7CisgICAgaWYgKCFzcmNCdWZmZXIuYnVmZmVyLT5pc1RyYW5zZmVy
U3JjKCkgfHwgIWRzdFRleHR1cmUudGV4dHVyZS0+aXNUcmFuc2ZlckRzdCgpKSB7CisgICAgICAg
IExPRyhXZWJHUFUsICJHUFVDb21hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoKTogSW52
YWxpZCBvcGVyYXRpb24hIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKiBGSVhN
RTogQWRkIE1ldGFsIHZhbGlkYXRpb24/CisKKyAgICAgR1BVQnVmZmVyQ29weVZpZXc6Om9mZnNl
dDogVGhlIGxvY2F0aW9uIG11c3QgYmUgYWxpZ25lZCB0byB0aGUgc2l6ZSBvZiB0aGUgZGVzdGlu
YXRpb24gdGV4dHVyZSdzIHBpeGVsIGZvcm1hdC4gVGhlIHZhbHVlIG11c3QgYmUgYSBtdWx0aXBs
ZSBvZiB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSdzIHBpeGVsIHNpemUsIGluIGJ5dGVzLgorCisg
ICAgIEdQVUJ1ZmZlckNvcHlWaWV3Ojpyb3dQaXRjaDogVGhlIHZhbHVlIG11c3QgYmUgYSBtdWx0
aXBsZSBvZiB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSdzIHBpeGVsIHNpemUsIGluIGJ5dGVzLiBU
aGUgdmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMzIsNzY3IG11bHRpcGxpZWQg
YnkgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmXigJlzIHBpeGVsIHNpemUuCisKKyAgICAgR1BVQnVm
ZmVyQ29weVZpZXc6OmltYWdlSGVpZ2h0OiBUaGUgdmFsdWUgbXVzdCBiZSBhIG11bHRpcGxlIG9m
IHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlJ3MgcGl4ZWwgc2l6ZSwgaW4gYnl0ZXMuCisKKyAgICAg
R1BVRXh0ZW50M0Q6IFdoZW4geW91IGNvcHkgdG8gYSAxRCB0ZXh0dXJlLCBoZWlnaHQgYW5kIGRl
cHRoIG11c3QgYmUgMS4gV2hlbiB5b3UgY29weSB0byBhIDJEIHRleHR1cmUsIGRlcHRoIG11c3Qg
YmUgMS4KKworICAgICBHUFVUZXh0dXJlQ29weVZpZXc6OnRleHR1cmU6IFRoZSB2YWx1ZSBtdXN0
IG5vdCBiZSBhIGZyYW1lYnVmZmVyT25seSB0ZXh0dXJlIGFuZCBtdXN0IG5vdCBoYXZlIGEgUFZS
VEMgcGl4ZWwgZm9ybWF0LgorCisgICAgICovCisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CisKKyAgICBbY3VycmVudEJsaXRFbmNvZGVyKCkKKyAgICAgICAgY29weUZyb21CdWZm
ZXI6c3JjQnVmZmVyLmJ1ZmZlci0+cGxhdGZvcm1CdWZmZXIoKQorICAgICAgICBzb3VyY2VPZmZz
ZXQ6c3JjQnVmZmVyLm9mZnNldAorICAgICAgICBzb3VyY2VCeXRlc1BlclJvdzpzcmNCdWZmZXIu
cm93UGl0Y2gKKyAgICAgICAgc291cmNlQnl0ZXNQZXJJbWFnZTpzcmNCdWZmZXIuaW1hZ2VIZWln
aHQKKyAgICAgICAgc291cmNlU2l6ZTpNVExTaXplTWFrZShzaXplLndpZHRoLCBzaXplLmhlaWdo
dCwgc2l6ZS5kZXB0aCkKKyAgICAgICAgdG9UZXh0dXJlOmRzdFRleHR1cmUudGV4dHVyZS0+cGxh
dGZvcm1UZXh0dXJlKCkKKyAgICAgICAgZGVzdGluYXRpb25TbGljZTpkc3RUZXh0dXJlLmFycmF5
TGF5ZXIKKyAgICAgICAgZGVzdGluYXRpb25MZXZlbDpkc3RUZXh0dXJlLm1pcExldmVsCisgICAg
ICAgIGRlc3RpbmF0aW9uT3JpZ2luOk1UTE9yaWdpbk1ha2UoZHN0VGV4dHVyZS5vcmlnaW4ueCwg
ZHN0VGV4dHVyZS5vcmlnaW4ueSwgZHN0VGV4dHVyZS5vcmlnaW4ueildOworCisgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIHVzZUJ1ZmZlcihXVEZNb3ZlKHNyY0J1ZmZlci5i
dWZmZXIpKTsKK30KKwordm9pZCBHUFVDb21tYW5kQnVmZmVyOjpjb3B5VGV4dHVyZVRvQnVmZmVy
KEdQVVRleHR1cmVDb3B5VmlldyYmIHNyY1RleHR1cmUsIEdQVUJ1ZmZlckNvcHlWaWV3JiYgZHN0
QnVmZmVyLCBHUFVFeHRlbnQzRCYmIHNpemUpCit7CisgICAgaWYgKCFzcmNUZXh0dXJlLnRleHR1
cmUtPmlzVHJhbnNmZXJTcmMoKSB8fCAhZHN0QnVmZmVyLmJ1ZmZlci0+aXNUcmFuc2ZlckRzdCgp
KSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5VGV4dHVyZVRv
QnVmZmVyKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLy8gRklYTUU6IEFkZCBNZXRhbCB2YWxpZGF0aW9uPworCisgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TOworCisgICAgW2N1cnJlbnRCbGl0RW5jb2RlcigpCisgICAgICAgIGNv
cHlGcm9tVGV4dHVyZTpzcmNUZXh0dXJlLnRleHR1cmUtPnBsYXRmb3JtVGV4dHVyZSgpCisgICAg
ICAgIHNvdXJjZVNsaWNlOnNyY1RleHR1cmUuYXJyYXlMYXllcgorICAgICAgICBzb3VyY2VMZXZl
bDpzcmNUZXh0dXJlLm1pcExldmVsCisgICAgICAgIHNvdXJjZU9yaWdpbjpNVExPcmlnaW5NYWtl
KHNyY1RleHR1cmUub3JpZ2luLngsIHNyY1RleHR1cmUub3JpZ2luLnksIHNyY1RleHR1cmUub3Jp
Z2luLnopCisgICAgICAgIHNvdXJjZVNpemU6TVRMU2l6ZU1ha2Uoc2l6ZS53aWR0aCwgc2l6ZS5o
ZWlnaHQsIHNpemUuZGVwdGgpCisgICAgICAgIHRvQnVmZmVyOmRzdEJ1ZmZlci5idWZmZXItPnBs
YXRmb3JtQnVmZmVyKCkKKyAgICAgICAgZGVzdGluYXRpb25PZmZzZXQ6ZHN0QnVmZmVyLm9mZnNl
dAorICAgICAgICBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OmRzdEJ1ZmZlci5yb3dQaXRjaAorICAg
ICAgICBkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6ZHN0QnVmZmVyLmltYWdlSGVpZ2h0XTsKKwor
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICB1c2VCdWZmZXIoV1RGTW92ZShk
c3RCdWZmZXIuYnVmZmVyKSk7Cit9CisKK3ZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1
cmVUb1RleHR1cmUoR1BVVGV4dHVyZUNvcHlWaWV3JiYgc3JjLCBHUFVUZXh0dXJlQ29weVZpZXcm
JiBkc3QsIEdQVUV4dGVudDNEJiYgc2l6ZSkKK3sKKyAgICBpZiAoIXNyYy50ZXh0dXJlLT5pc1Ry
YW5zZmVyU3JjKCkgfHwgIWRzdC50ZXh0dXJlLT5pc1RyYW5zZmVyRHN0KCkpIHsKKyAgICAgICAg
TE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKCk6IElu
dmFsaWQgb3BlcmF0aW9uISIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklY
TUU6IEFkZCBNZXRhbCB2YWxpZGF0aW9uPworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOworCisgICAgW2N1cnJlbnRCbGl0RW5jb2RlcigpCisgICAgICAgIGNvcHlGcm9tVGV4dHVy
ZTpzcmMudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkKKyAgICAgICAgc291cmNlU2xpY2U6c3Jj
LmFycmF5TGF5ZXIKKyAgICAgICAgc291cmNlTGV2ZWw6c3JjLm1pcExldmVsCisgICAgICAgIHNv
dXJjZU9yaWdpbjpNVExPcmlnaW5NYWtlKHNyYy5vcmlnaW4ueCwgc3JjLm9yaWdpbi55LCBzcmMu
b3JpZ2luLnopCisgICAgICAgIHNvdXJjZVNpemU6TVRMU2l6ZU1ha2Uoc2l6ZS53aWR0aCwgc2l6
ZS5oZWlnaHQsIHNpemUuZGVwdGgpCisgICAgICAgIHRvVGV4dHVyZTpkc3QudGV4dHVyZS0+cGxh
dGZvcm1UZXh0dXJlKCkKKyAgICAgICAgZGVzdGluYXRpb25TbGljZTpzcmMuYXJyYXlMYXllcgor
ICAgICAgICBkZXN0aW5hdGlvbkxldmVsOnNyYy5taXBMZXZlbAorICAgICAgICBkZXN0aW5hdGlv
bk9yaWdpbjpNVExPcmlnaW5NYWtlKGRzdC5vcmlnaW4ueCwgZHN0Lm9yaWdpbi55LCBkc3Qub3Jp
Z2luLnopXTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUXVldWVNZXRhbC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVRdWV1ZU1l
dGFsLm1tCmluZGV4IDkxYmJkNWE2MGU0NzJhZjk3MDFiNzk5OWE5NmMyMjQwMjJkMmYyMDAuLmI5
OWUzYzZhYTZlODNmMGNmMTY3ZWYxMDJkMzVkYTY3OTlkYzZiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVRdWV1ZU1ldGFsLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVRdWV1ZU1l
dGFsLm1tCkBAIC03Miw3ICs3MiwxMSBAQCBHUFVRdWV1ZTo6R1BVUXVldWUoUGxhdGZvcm1RdWV1
ZVNtYXJ0UHRyJiYgcXVldWUpCiAKIHZvaWQgR1BVUXVldWU6OnN1Ym1pdChWZWN0b3I8UmVmPGNv
bnN0IEdQVUNvbW1hbmRCdWZmZXI+PiYmIGNvbW1hbmRCdWZmZXJzKQogeworICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKKwogICAgIGZvciAoYXV0byYgY29tbWFuZEJ1ZmZlciA6IGNv
bW1hbmRCdWZmZXJzKSB7CisgICAgICAgIGlmIChjb21tYW5kQnVmZmVyLT5ibGl0RW5jb2Rlcigp
KQorICAgICAgICAgICAgW2NvbW1hbmRCdWZmZXItPmJsaXRFbmNvZGVyKCkgZW5kRW5jb2Rpbmdd
OwogICAgICAgICAvLyBQcmV2ZW50IGFueSBidWZmZXIgbWFwcGluZyBjYWxsYmFja3MgZnJvbSBl
eGVjdXRpbmcgdW50aWwgY29tbWFuZCBidWZmZXIgaXMgY29tcGxldGUuCiAgICAgICAgIGZvciAo
YXV0byYgYnVmZmVyIDogY29tbWFuZEJ1ZmZlci0+dXNlZEJ1ZmZlcnMoKSkgewogICAgICAgICAg
ICAgaWYgKGJ1ZmZlci0+c3RhdGUoKSAhPSBHUFVCdWZmZXI6OlN0YXRlOjpVbm1hcHBlZCkgewpA
QCAtODQsNiArODgsOCBAQCB2b2lkIEdQVVF1ZXVlOjpzdWJtaXQoVmVjdG9yPFJlZjxjb25zdCBH
UFVDb21tYW5kQnVmZmVyPj4mJiBjb21tYW5kQnVmZmVycykKIAogICAgICAgICBbY29tbWFuZEJ1
ZmZlci0+cGxhdGZvcm1Db21tYW5kQnVmZmVyKCkgY29tbWl0XTsKICAgICB9CisKKyAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCiBTdHJpbmcgR1BVUXVldWU6OmxhYmVsKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVTd2FwQ2hhaW5NZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQppbmRleCAxNTUwMmU5Y2Q2YjZjNTM4NzBl
YzZiM2RhZGYyZjg4Y2M2MzAwYjlkLi5kMmNiODI0ZWFkNDg5YTc2Y2JmZDcyY2I1YjJjY2RlZjNh
ZjA4ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCkBAIC0xMTcsNyArMTE3LDcg
QEAgUmVmUHRyPEdQVVRleHR1cmU+IEdQVVN3YXBDaGFpbjo6Z2V0TmV4dFRleHR1cmUoKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gR1BVVGV4dHVyZTo6Y3Jl
YXRlKFdURk1vdmUobXRsVGV4dHVyZSkpOworICAgIHJldHVybiBHUFVUZXh0dXJlOjpjcmVhdGUo
V1RGTW92ZShtdGxUZXh0dXJlKSwgR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6T3V0cHV0QXR0YWNo
bWVudCk7CiB9CiAKIHZvaWQgR1BVU3dhcENoYWluOjpwcmVzZW50KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVy
ZU1ldGFsLm1tCmluZGV4IGI3OTNlMDI1ZTViM2JhZTRmYTcxNGY0ODkzMDA0MjU2NjEzMzE1YTIu
LjY4YzNiMjdlNjJmZWQ1NTIyYzU0ZjhjNzdjNDA3MWI0NTRkMjlhZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVRl
eHR1cmVNZXRhbC5tbQpAQCAtNTQsMjUgKzU0LDMyIEBAIHN0YXRpYyBNVExUZXh0dXJlVHlwZSBt
dGxUZXh0dXJlVHlwZUZvckdQVVRleHR1cmVEZXNjcmlwdG9yKGNvbnN0IEdQVVRleHR1cmVEZXNj
CiAgICAgfQogfQogCi1zdGF0aWMgT3B0aW9uYWw8TVRMVGV4dHVyZVVzYWdlPiBtdGxUZXh0dXJl
VXNhZ2VGb3JHUFVUZXh0dXJlVXNhZ2VGbGFncyhHUFVUZXh0dXJlVXNhZ2VGbGFncyBmbGFncykK
K3N0YXRpYyBPcHRpb25hbDxNVExUZXh0dXJlVXNhZ2U+IG10bFRleHR1cmVVc2FnZUZvckdQVVRl
eHR1cmVVc2FnZUZsYWdzKEdQVVRleHR1cmVVc2FnZUZsYWdzIGZsYWdzLCBjb25zdCBjaGFyKiBj
b25zdCBmdW5jdGlvbk5hbWUpCiB7Ci0gICAgTVRMVGV4dHVyZVVzYWdlIHVzYWdlID0gTVRMVGV4
dHVyZVVzYWdlVW5rbm93bjsKLQotICAgIGlmIChmbGFncyAmIEdQVVRleHR1cmVVc2FnZTo6U3Rv
cmFnZSkKLSAgICAgICAgdXNhZ2UgfD0gTVRMVGV4dHVyZVVzYWdlU2hhZGVyV3JpdGUgfCBNVExU
ZXh0dXJlVXNhZ2VTaGFkZXJSZWFkIHwgTVRMVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3Owor
I2lmIExPR19ESVNBQkxFRAorICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOworI2VuZGlm
CisgICAgaWYgKChmbGFncyAmIChHUFVUZXh0dXJlVXNhZ2U6OlRyYW5zZmVyU3JjIHwgR1BVVGV4
dHVyZVVzYWdlOjpTYW1wbGVkKSkgJiYgKGZsYWdzICYgR1BVVGV4dHVyZVVzYWdlOjpTdG9yYWdl
KSkgeworICAgICAgICBMT0coV2ViR1BVLCAiJXM6IFRleHR1cmUgY2Fubm90IGhhdmUgYm90aCBT
VE9SQUdFIGFuZCBhIHJlYWQtb25seSB1c2FnZSEiLCBmdW5jdGlvbk5hbWUpOworICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KIAotICAgIGlmIChmbGFncyAmIEdQVVRleHR1cmVV
c2FnZTo6U2FtcGxlZCkgewotICAgICAgICAvLyBTQU1QTEVEIGlzIGEgcmVhZC1vbmx5IHVzYWdl
LgotICAgICAgICBpZiAoZmxhZ3MgJiBHUFVUZXh0dXJlVXNhZ2U6OlN0b3JhZ2UpCisgICAgaWYg
KGZsYWdzICYgR1BVVGV4dHVyZVVzYWdlOjpPdXRwdXRBdHRhY2htZW50KSB7CisgICAgICAgIGlm
IChmbGFncyAmIEdQVVRleHR1cmVVc2FnZTo6U3RvcmFnZSB8fCBmbGFncyAmIEdQVVRleHR1cmVV
c2FnZTo6U2FtcGxlZCkgeworICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBUZXh0dXJlIGNh
bm5vdCBoYXZlIE9VVFBVVF9BVFRBQ0hNRU5UIHVzYWdlIHdpdGggU1RPUkFHRSBvciBTQU1QTEVE
IHVzYWdlcyEiLCBmdW5jdGlvbk5hbWUpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgfQogCi0gICAgICAgIHVzYWdlIHw9IE1UTFRleHR1cmVVc2FnZVNoYWRlclJl
YWQgfCBNVExUZXh0dXJlVXNhZ2VQaXhlbEZvcm1hdFZpZXc7CisgICAgICAgIHJldHVybiBNVExU
ZXh0dXJlVXNhZ2VSZW5kZXJUYXJnZXQgfCBNVExUZXh0dXJlVXNhZ2VQaXhlbEZvcm1hdFZpZXc7
CiAgICAgfQogCi0gICAgaWYgKGZsYWdzICYgR1BVVGV4dHVyZVVzYWdlOjpPdXRwdXRBdHRhY2ht
ZW50KQotICAgICAgICB1c2FnZSB8PSBNVExUZXh0dXJlVXNhZ2VSZW5kZXJUYXJnZXQ7CisgICAg
aWYgKGZsYWdzICYgR1BVVGV4dHVyZVVzYWdlOjpTdG9yYWdlKQorICAgICAgICByZXR1cm4gTVRM
VGV4dHVyZVVzYWdlU2hhZGVyV3JpdGUgfCBNVExUZXh0dXJlVXNhZ2VTaGFkZXJSZWFkIHwgTVRM
VGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3OwogCi0gICAgcmV0dXJuIHVzYWdlOworICAgIGlm
IChmbGFncyAmIEdQVVRleHR1cmVVc2FnZTo6U2FtcGxlZCkKKyAgICAgICAgcmV0dXJuIE1UTFRl
eHR1cmVVc2FnZVNoYWRlclJlYWQgfCBNVExUZXh0dXJlVXNhZ2VQaXhlbEZvcm1hdFZpZXc7CisK
KyAgICByZXR1cm4gTVRMVGV4dHVyZVVzYWdlVW5rbm93bjsKIH0KIAogc3RhdGljIE1UTFN0b3Jh
Z2VNb2RlIHN0b3JhZ2VNb2RlRm9yUGl4ZWxGb3JtYXRBbmRTYW1wbGVDb3VudChNVExQaXhlbEZv
cm1hdCBmb3JtYXQsIHVuc2lnbmVkIGxvbmcgc2FtcGxlcykKQEAgLTg4LDEyICs5NSw4IEBAIHN0
YXRpYyBNVExTdG9yYWdlTW9kZSBzdG9yYWdlTW9kZUZvclBpeGVsRm9ybWF0QW5kU2FtcGxlQ291
bnQoTVRMUGl4ZWxGb3JtYXQgZm9yCiAjZW5kaWYKIH0KIAotc3RhdGljIFJldGFpblB0cjxNVExU
ZXh0dXJlRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlTXRsVGV4dHVyZURlc2NyaXB0b3IoY29uc3QgY2hh
ciogY29uc3QgZnVuY3Rpb25OYW1lLCBjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYmIGRlc2Ny
aXB0b3IpCitzdGF0aWMgUmV0YWluUHRyPE1UTFRleHR1cmVEZXNjcmlwdG9yPiB0cnlDcmVhdGVN
dGxUZXh0dXJlRGVzY3JpcHRvcihjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIGNvbnN0
IEdQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotI2lmIExPR19ESVNBQkxFRAot
ICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwotI2VuZGlmCi0KICAgICBSZXRhaW5QdHI8
TVRMVGV4dHVyZURlc2NyaXB0b3I+IG10bERlc2NyaXB0b3I7CiAKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CkBAIC0xMTAsMTEgKzExMyw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8TVRM
VGV4dHVyZURlc2NyaXB0b3I+IHRyeUNyZWF0ZU10bFRleHR1cmVEZXNjcmlwdG9yKGNvbnN0IGNo
YXIqCiAgICAgLy8gRklYTUU6IEFkZCBtb3JlIHZhbGlkYXRpb24gYXMgY29uc3RyYWludHMgYXJl
IGFkZGVkIHRvIHNwZWMuCiAgICAgYXV0byBwaXhlbEZvcm1hdCA9IHN0YXRpY19jYXN0PE1UTFBp
eGVsRm9ybWF0PihwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KGRlc2Ny
aXB0b3IuZm9ybWF0KSk7CiAKLSAgICBhdXRvIHVzYWdlID0gbXRsVGV4dHVyZVVzYWdlRm9yR1BV
VGV4dHVyZVVzYWdlRmxhZ3MoZGVzY3JpcHRvci51c2FnZSk7Ci0gICAgaWYgKCF1c2FnZSkgewot
ICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgR1BVVGV4dHVyZVVzYWdlRmxhZ3MhIiwg
ZnVuY3Rpb25OYW1lKTsKKyAgICBhdXRvIHVzYWdlID0gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4
dHVyZVVzYWdlRmxhZ3MoZGVzY3JpcHRvci51c2FnZSwgZnVuY3Rpb25OYW1lKTsKKyAgICBpZiAo
IXVzYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CiAKICAgICBhdXRvIHN0b3Jh
Z2VNb2RlID0gc3RvcmFnZU1vZGVGb3JQaXhlbEZvcm1hdEFuZFNhbXBsZUNvdW50KHBpeGVsRm9y
bWF0LCBkZXNjcmlwdG9yLnNhbXBsZUNvdW50KTsKIApAQCAtMTQ2LDcgKzE0Nyw3IEBAIFJlZlB0
cjxHUFVUZXh0dXJlPiBHUFVUZXh0dXJlOjp0cnlDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZp
Y2UsIEdQVVRleHR1cmVEZXNjCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IGF1dG8gbXRsRGVzY3JpcHRvciA9IHRyeUNyZWF0ZU10bFRleHR1cmVEZXNjcmlwdG9yKGZ1bmN0
aW9uTmFtZSwgV1RGTW92ZShkZXNjcmlwdG9yKSk7CisgICAgYXV0byBtdGxEZXNjcmlwdG9yID0g
dHJ5Q3JlYXRlTXRsVGV4dHVyZURlc2NyaXB0b3IoZnVuY3Rpb25OYW1lLCBkZXNjcmlwdG9yKTsK
ICAgICBpZiAoIW10bERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0x
NjMsMTYgKzE2NCwxNyBAQCBSZWZQdHI8R1BVVGV4dHVyZT4gR1BVVGV4dHVyZTo6dHJ5Q3JlYXRl
KGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVUZXh0dXJlRGVzYwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVRleHR1cmUoV1RG
TW92ZShtdGxUZXh0dXJlKSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVVGV4dHVyZShX
VEZNb3ZlKG10bFRleHR1cmUpLCBzdGF0aWNfY2FzdDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPihk
ZXNjcmlwdG9yLnVzYWdlKSkpOwogfQogCi1SZWY8R1BVVGV4dHVyZT4gR1BVVGV4dHVyZTo6Y3Jl
YXRlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYgdGV4dHVyZSkKK1JlZjxHUFVUZXh0dXJlPiBH
UFVUZXh0dXJlOjpjcmVhdGUoUGxhdGZvcm1UZXh0dXJlU21hcnRQdHImJiB0ZXh0dXJlLCBHUFVU
ZXh0dXJlVXNhZ2U6OkZsYWdzIHVzYWdlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQ
VVRleHR1cmUoV1RGTW92ZSh0ZXh0dXJlKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQ
VVRleHR1cmUoV1RGTW92ZSh0ZXh0dXJlKSwgdXNhZ2UpKTsKIH0KIAotR1BVVGV4dHVyZTo6R1BV
VGV4dHVyZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmIHRleHR1cmUpCitHUFVUZXh0dXJlOjpH
UFVUZXh0dXJlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYgdGV4dHVyZSwgR1BVVGV4dHVyZVVz
YWdlOjpGbGFncyB1c2FnZSkKICAgICA6IG1fcGxhdGZvcm1UZXh0dXJlKFdURk1vdmUodGV4dHVy
ZSkpCisgICAgLCBtX3VzYWdlKHVzYWdlKQogewogfQogCkBAIC0xOTEsNyArMTkzLDcgQEAgUmVm
UHRyPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBHUFVUZXh0dXJlOjpj
cmVhdGUoV1RGTW92ZSh0ZXh0dXJlKSk7CisgICAgcmV0dXJuIEdQVVRleHR1cmU6OmNyZWF0ZShX
VEZNb3ZlKHRleHR1cmUpLCBtX3VzYWdlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGI1N2ZlZWRhYzY0MDQ4NGEzZDE0MDgwN2VjNjliODc4NzBjNGEwM2MuLjQ4NTgyZDIx
ZmNjNjRhZTMxYWIxNDVlZGM3Y2I2ODVjOGI3MzM2YWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxOS0wMy0wMSAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgorCisgICAgICAg
IFtXZWIgR1BVXSBCbGl0dGluZyBmdW5jdGlvbiBwcm90b3R5cGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUyMjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYmFzaWMgdGVzdCB0byBjb3B5IGRh
dGEgd2l0aCBhbGwgbmV3IGJsaXR0aW5nIGZ1bmN0aW9ucyBhbmQgdmVyaWZ5IHRoZSByZXN1bHQu
CisKKyAgICAgICAgKiB3ZWJncHUvYmxpdC1jb21tYW5kcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHdlYmdwdS9ibGl0LWNvbW1hbmRzLmh0bWw6IEFkZGVkLgorCiAyMDE5LTAyLTI4
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgVXNl
LWFmdGVyLW1vdmUgaW4gUmVuZGVyQ29tYmluZVRleHQ6OmNvbWJpbmVUZXh0SWZOZWVkZWQoKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5k
cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mZDhlMzA0ZjgzM2NkYjIyZWRhNGQ1MmIwMTBjZjQyZjg5MjJiMzEzCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMuaHRtbApAQCAtMCwwICsxLDk3
IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRh
bDpXZWJHUFVFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+
QmFzaWMgYmxpdHRpbmcgdGVzdHMgb24gYSBHUFVDb21tYW5kQnVmZmVyLjwvdGl0bGU+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworCisvLyBGSVhNRTogVXBkYXRlIGFmdGVyIEdQVUNvbW1hbmRRdWV1ZS9HUFVDb21tYW5kQnVm
ZmVyIHVwZGF0ZSBpbiBpbXBsZW1lbnRhdGlvbi4KKy8vIEZJWE1FOiBBZGQgbW9yZSB0ZXN0cyBh
cyBmdW5jdGlvbmluYWxpdHkgaXMgaW1wbGVtZW50ZWQgKGUuZy4gdmFsaWRhdGlvbikuCisKK3By
b21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgICAgY29uc3QgZGV2aWNlID0gYXdhaXQgZ2V0QmFz
aWNEZXZpY2UoKTsKKworICAgIGNvbnN0IGltYWdlRGF0YUFycmF5ID0gbmV3IFVpbnQ4QXJyYXko
WzAsIDEsIDAsIDFdKTsKKworICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7CisgICAgICAg
IHNpemU6IGltYWdlRGF0YUFycmF5LmJ5dGVMZW5ndGgsCisgICAgICAgIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5UUkFOU0ZFUl9TUkMgfCBHUFVCdWZmZXJVc2FnZS5UUkFOU0ZFUl9EU1QKKyAgICB9
OworICAgIGNvbnN0IGJ1ZmZlckEgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0
b3IpOworICAgIGJ1ZmZlckEuc2V0U3ViRGF0YSgwLCBpbWFnZURhdGFBcnJheS5idWZmZXIpOwor
CisgICAgY29uc3QgYnVmZmVyQiA9IGRldmljZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRv
cik7CisgICAgY29uc3QgYnVmZmVyVmlld0IgPSB7CisgICAgICAgIGJ1ZmZlcjogYnVmZmVyQiwK
KyAgICAgICAgb2Zmc2V0OiAwLAorICAgICAgICByb3dQaXRjaDogMCwKKyAgICAgICAgaW1hZ2VI
ZWlnaHQ6IDAKKyAgICB9OworCisgICAgY29uc3QgdGV4dHVyZVNpemUgPSB7CisgICAgICAgIHdp
ZHRoOiBpbWFnZURhdGFBcnJheS5sZW5ndGggLyA0LAorICAgICAgICBoZWlnaHQ6IDEsCisgICAg
ICAgIGRlcHRoOiAxCisgICAgfTsKKyAgICBjb25zdCB0ZXh0dXJlRGVzY3JpcHRvciA9IHsKKyAg
ICAgICAgc2l6ZTogdGV4dHVyZVNpemUsCisgICAgICAgIGFycmF5TGF5ZXJDb3VudDogMSwKKyAg
ICAgICAgbWlwTGV2ZWxDb3VudDogMSwKKyAgICAgICAgc2FtcGxlQ291bnQ6IDEsCisgICAgICAg
IGRpbWVuc2lvbjogIjJkIiwKKyAgICAgICAgZm9ybWF0OiAicjhnOGI4YTgtdW5vcm0iLAorICAg
ICAgICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlRSQU5TRkVSX1NSQyB8IEdQVVRleHR1cmVVc2Fn
ZS5UUkFOU0ZFUl9EU1QKKyAgICB9OworICAgIGNvbnN0IHRleHR1cmVBID0gZGV2aWNlLmNyZWF0
ZVRleHR1cmUodGV4dHVyZURlc2NyaXB0b3IpOworICAgIGNvbnN0IHRleHR1cmVWaWV3QSA9IHsK
KyAgICAgICAgdGV4dHVyZTogdGV4dHVyZUEsCisgICAgICAgIG1pcExldmVsOiAwLAorICAgICAg
ICBhcnJheUxheWVyOiAwLAorICAgICAgICBvcmlnaW46IHsgeDogMCwgeTogMCwgejogMCB9Cisg
ICAgfTsKKworICAgIGNvbnN0IHRleHR1cmVCID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVy
ZURlc2NyaXB0b3IpOworICAgIGNvbnN0IHRleHR1cmVWaWV3QiA9IHsKKyAgICAgICAgdGV4dHVy
ZTogdGV4dHVyZUIsCisgICAgICAgIG1pcExldmVsOiAwLAorICAgICAgICBhcnJheUxheWVyOiAw
LAorICAgICAgICBvcmlnaW46IHsgeDogMCwgeTogMCwgejogMCB9CisgICAgfTsKKworICAgIGNv
bnN0IHJlYWRCdWZmZXJEZXNjcmlwdG9yID0geworICAgICAgICBzaXplOiBpbWFnZURhdGFBcnJh
eS5ieXRlTGVuZ3RoLAorICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVFJBTlNGRVJfRFNU
IHwgR1BVQnVmZmVyVXNhZ2UuTUFQX1JFQUQKKyAgICB9OworICAgIGNvbnN0IHJlYWRCdWZmZXIg
PSBkZXZpY2UuY3JlYXRlQnVmZmVyKHJlYWRCdWZmZXJEZXNjcmlwdG9yKTsKKyAgICBjb25zdCBy
ZWFkQnVmZmVyVmlldyA9IHsKKyAgICAgICAgYnVmZmVyOiByZWFkQnVmZmVyLAorICAgICAgICBv
ZmZzZXQ6IDAsCisgICAgICAgIHJvd1BpdGNoOiAwLAorICAgICAgICBpbWFnZUhlaWdodDogMAor
ICAgIH07CisKKyAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRC
dWZmZXIoKTsKKyAgICBjb21tYW5kQnVmZmVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXJBLCAw
LCBidWZmZXJCLCAwLCBpbWFnZURhdGFBcnJheS5ieXRlTGVuZ3RoKTsKKyAgICBjb21tYW5kQnVm
ZmVyLmNvcHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyVmlld0IsIHRleHR1cmVWaWV3QSwgdGV4dHVy
ZVNpemUpOworICAgIGNvbW1hbmRCdWZmZXIuY29weVRleHR1cmVUb1RleHR1cmUodGV4dHVyZVZp
ZXdBLCB0ZXh0dXJlVmlld0IsIHRleHR1cmVTaXplKTsKKyAgICBjb21tYW5kQnVmZmVyLmNvcHlU
ZXh0dXJlVG9CdWZmZXIodGV4dHVyZVZpZXdCLCByZWFkQnVmZmVyVmlldywgdGV4dHVyZVNpemUp
OworICAgIGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOworCisgICAg
YXdhaXQgcmVhZEJ1ZmZlci5tYXBSZWFkQXN5bmMoKS50aGVuKGFiID0+IHsKKyAgICAgICAgY29u
c3QgYXJyYXkgPSBuZXcgVWludDhBcnJheShhYik7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBhcnJheS5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXJyYXlb
aV0sIGltYWdlRGF0YUFycmF5W2ldLCBgQmxpdCBlbGVtZW50ICR7aX0gc3VjY2VzZnVsbHlgKTsK
KyAgICAgICAgCisgICAgICAgIHJlYWRCdWZmZXIudW5tYXAoKTsKKyAgICB9LCAoKSA9PiB7IGFz
c2VydF91bnJlYWNoZWQoKSB9KTsKKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9LCAiQmxpdCBhIGJ1ZmZlciB0byBidWZmZXIg
dG8gdGV4dHVyZSB0byB0ZXh0dXJlIHRvIGJ1ZmZlciBvbiBHUFVDb21tYW5kQnVmZmVyLiIpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363550</attachid>
            <date>2019-03-04 13:40:53 -0800</date>
            <delta_ts>2019-03-04 16:28:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195224-20190304134052.patch</filename>
            <type>text/plain</type>
            <size>65126</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU3OGEyYmYyZDE3ZmMz
MmEzNWM5OWI0NTBlNTRiMDZkYjE4NzU0MS4uODY2NzM2NDUwNDI3MGYwMzZjMGE5MDhjZWU5NTBm
ZjY0M2ZmMzQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE5LTAzLTA0ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBHUFVdIEJsaXR0
aW5nIGZ1bmN0aW9uIHByb3RvdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NTIyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg1Mzg5MDI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVt
ZW50IGJhcmVib25lcyBHUFVDb21tYW5kQnVmZmVyOjpjb3B5KiBwcm90b3R5cGVzIHdoaWxlIHJv
dW5kaW5nIG91dCBHUFVUZXh0dXJlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisKKyAgICAgICAg
VGVzdDogd2ViZ3B1L2JsaXQtY29tbWFuZHMuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvR1BVT3JpZ2luM0QuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVT3Jp
Z2luM0QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5k
QnVmZmVyLmNwcDogQWRkIGNvcHkgdmlldyBzdHJ1Y3QgaW1wbGVtZW50YXRpb25zLgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR1BVQnVmZmVyQ29weVZpZXc6OmFzR1BVQnVmZmVyQ29weVZpZXcgY29u
c3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVRleHR1cmVDb3B5Vmlldzo6YXNH
UFVUZXh0dXJlQ29weVZpZXcgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdQ
VUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcik6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb0J1ZmZl
cik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRl
eHR1cmVUb1RleHR1cmUpOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21tYW5kQnVmZmVyLmg6IEFkZCBuZXcgZnVuY3Rpb25zIGFuZCBzdXBwb3J0aW5nIHN0cnVjdHMu
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGw6IERpdHRv
LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNw
cDogUmVmYWN0b3IgY29uc3RydWN0b3JzIHRvIGNvcHkgdGhlIGVudGlyZSBiYXNlIGNsYXNzLgor
ICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3I6
OkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVu
ZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOjphc0dQVVJlbmRlclBhc3NEZXNjcmlwdG9y
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnQpOiBEZWxldGVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdQVVRleHR1cmU6OnRleHR1cmUgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpHUFVCdWZmZXI6OmJ5
dGVMZW5ndGggY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUJ1ZmZlcjo6aXNU
cmFuc2ZlclNvdXJjZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVy
Ojppc1RyYW5zZmVyRGVzdGluYXRpb24gY29uc3QpOiBSZW5hbWVkIGZyb20gaXNUcmFuc2ZlckRz
dC4gUmVmYWN0b3JlZCBmb3IgT3B0aW9uU2V0IEFQSS4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUJ1
ZmZlcjo6aXNWZXJ0ZXggY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUJ1ZmZl
cjo6aXNVbmlmb3JtIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHUFVCdWZmZXI6
OmlzU3RvcmFnZSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpp
c01hcHBhYmxlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHUFVCdWZmZXI6Omlz
TWFwV3JpdGUgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUJ1ZmZlcjo6aXNN
YXBSZWFkIGNvbnN0KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQ
VUJ1ZmZlclVzYWdlLmg6IFJlZmFjdG9yZWQgZm9yIGJldHRlciBiaXQgZmxhZyBzdHlsZS4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6R1BVQ29tbWFuZEJ1ZmZlcjo6YmxpdEVuY29kZXIgY29uc3QpOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
aDogCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaDogQ2FjaGUg
dXNhZ2UgZmxhZ3MgZm9yIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkdQVVRleHR1cmU6
OmlzVHJhbnNmZXJTcmMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVVRleHR1
cmU6OmlzVHJhbnNmZXJEc3QgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVVRl
eHR1cmU6OmlzT3V0cHV0QXR0YWNobWVudCBjb25zdCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlVXNhZ2UuaDogUmVmYWN0b3IgdG8gbWF0Y2ggR1BV
QnVmZmVyVXNhZ2UuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
QnVmZmVyTWV0YWwubW06CisgICAgICAgIChXZWJDb3JlOjpHUFVCdWZmZXI6OnZhbGlkYXRlQnVm
ZmVyVXNhZ2UpOiBSZW5hbWVkIGZyb20gdmFsaWRhdGVCdWZmZXJDcmVhdGUsIHJlZmFjdG9yZWQg
Zm9yIE9wdGlvblNldC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUJ1ZmZlcjo6dHJ5Q3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdQVUJ1ZmZlcjo6R1BVQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdQVUJ1ZmZlcjo6aXNSZWFkT25seSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVC
dWZmZXI6OnNldFN1YkRhdGEpOiBBZGQgYWxpZ25tZW50IGNoZWNrIGFjY29yZGluZyB0byBNZXRh
bCBkb2NzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21tYW5k
QnVmZmVyTWV0YWwubW06IAorICAgICAgICAoV2ViQ29yZTo6R1BVQ29tbWFuZEJ1ZmZlcjo6Y3Jl
YXRlKTogTm8gbmVlZCB0byB1c2UgdGhpcyBhbGlhcyBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6
R1BVQ29tbWFuZEJ1ZmZlcjo6R1BVQ29tbWFuZEJ1ZmZlcik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6R1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHUFVDb21tYW5kQnVmZmVyOjpjb3B5VGV4dHVyZVRvQnVm
ZmVyKTogQWRkZWQuIAorICAgICAgICAoV2ViQ29yZTo6R1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRl
eHR1cmVUb1RleHR1cmUpOiBBZGRlZC4gCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVVF1ZXVlTWV0YWwubW06CisgICAgICAgIChXZWJDb3JlOjpHUFVRdWV1ZTo6c3Vi
bWl0KTogRW5kIGVuY29kaW5nIG9uIHRoZSBNVExDb21tYW5kQnVmZmVyJ3MgYmxpdENvbW1hbmRF
bmNvZGVyIGlmIGl0IHdhcyB1c2VkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVN3YXBDaGFp
bjo6Z2V0TmV4dFRleHR1cmUpOiBOb3cgcHJvdmlkZSB1c2FnZSBmbGFncyB0byB0ZXh0dXJlIGNy
ZWF0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJl
TWV0YWwubW06CisgICAgICAgIChXZWJDb3JlOjptdGxUZXh0dXJlVXNhZ2VGb3JHUFVUZXh0dXJl
VXNhZ2VGbGFncyk6IFJlZmFjdG9yIHZhbGlkYXRpb24uCisgICAgICAgIChXZWJDb3JlOjp0cnlD
cmVhdGVNdGxUZXh0dXJlRGVzY3JpcHRvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R1BV
VGV4dHVyZTo6dHJ5Q3JlYXRlKTogTm93IHByb3ZpZGUgdXNhZ2UgZmxhZ3MgdG8gdGV4dHVyZSBj
cmVhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkdQVVRleHR1cmU6OmNyZWF0ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6R1BVVGV4dHVyZTo6R1BVVGV4dHVyZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6R1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KTogRGl0dG8u
CisKIDIwMTktMDItMjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4K
IAogICAgICAgICBVc2UtYWZ0ZXItbW92ZSBpbiBSZW5kZXJDb21iaW5lVGV4dDo6Y29tYmluZVRl
eHRJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGNkNjMxOTJjNGJkOTVmNjg1MjVh
MTRlMDIxODRjNWQxMjYyZmQwOTEuLjYwMTI0ZmMxY2RlMTdhNDA5OTkxYWFmMDZhZGY3YjMzOWQ3
YjhlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00NjksNiArNDY5LDcgQEAgc2V0KFdlYkNv
cmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmdwdS9HUFVEZXB0aFN0ZW5jaWxT
dGF0ZURlc2NyaXB0b3IuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvR1BVRXh0ZW50M0QuaWRsCiAg
ICAgTW9kdWxlcy93ZWJncHUvR1BVTG9hZE9wLmlkbAorICAgIE1vZHVsZXMvd2ViZ3B1L0dQVU9y
aWdpbjNELmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5p
ZGwKICAgICBNb2R1bGVzL3dlYmdwdS9HUFVTdG9yZU9wLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1
L0dQVVRleHR1cmVEZXNjcmlwdG9yLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggN2U2YmY1YjI4NTNhNDBlZTc4YmJhZmNiMTg5OTBk
ZWE5MTNlZmU3NS4uMjU1YWI0NGQ2ZWI1ZDI1NDRmNGY1OTVhNzRjNjVhNDNkZDdkOGQ2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0z
MjEsMTMgKzMyMSwxNCBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uQ2FsbGJhY2suaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViZHJpdmVyL05hdmlnYXRvcldlYkRyaXZlci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViZ3B1L0RPTVdpbmRvd1dlYkdQVS5pZGwKLSQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1
L0dQVUNvbG9yLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQnVmZmVyRGVz
Y3JpcHRvci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlclVzYWdl
LmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQ29sb3IuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVDb21wYXJlRnVuY3Rpb24uaWRsCiAkKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaWRsCiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVFeHRlbnQzRC5pZGwKICQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViZ3B1L0dQVUxvYWRPcC5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViZ3B1L0dQVU9yaWdpbjNELmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BV
UmVxdWVzdEFkYXB0ZXJPcHRpb25zLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUv
R1BVU3RvcmVPcC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVE
ZXNjcmlwdG9yLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAppbmRleCBjZWRkYmFlMzliMzUzN2E2YTJlMmNlM2UzZDI0YTMwZGMwZWQ1ZWEw
Li5iNWYwMjJkYjZiYzM4Yzg3MDUzNzZkMzVkYzBhZTBmNTI1ZjllMWU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNTc3LDEyICs1
NzcsMTIgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNG
b250RmFjZVNldC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTRm9udEZhY2VTZXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNHQ09ic2VydmF0aW9uLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHQ09ic2VydmF0aW9uLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3IuY3BwCi0kKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9yLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQnVmZmVyRGVzY3JpcHRvci5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQnVmZmVy
RGVzY3JpcHRvci5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0dQVUJ1ZmZlclVzYWdlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNHUFVCdWZmZXJVc2FnZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9yLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvci5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbXBhcmVGdW5jdGlvbi5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29tcGFyZUZ1bmN0
aW9uLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BV
RGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmNwcApAQCAtNTkxLDYgKzU5MSw4IEBAICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVRXh0ZW50M0QuY3Bw
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUV4dGVu
dDNELmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BV
TG9hZE9wLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHUFVMb2FkT3AuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHUFVPcmlnaW4zRC5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTR1BVT3JpZ2luM0QuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVVJlcXVlc3RBZGFwdGVyT3B0
aW9ucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQ
VVN0b3JlT3AuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5ZTE4MThkODI2
NTAzMDE0MzdkMjQ2N2Q2OGM5ZDVlN2EwY2Y5NTAwLi4wNjY4NzkyNjU5Mjg0ZGE3NGNkNjk5ZDk4
NmE1MDUxZjY0NGJkNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTM3OSw2
ICszNzksNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmdwdS9HUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmdwdS9HUFVMb2FkT3AuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQ
VU9yaWdpbjNELmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVSZXF1ZXN0
QWRhcHRlck9wdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVN0
b3JlT3AuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L0dQVVRleHR1cmVEZXNj
cmlwdG9yLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVPcmlnaW4zRC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0Qu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNTk1NDBlZGNiZjg5MTk3NjRiZTZjOTIxYjdjYTkwY2M4OGM3MDIxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2lu
M0QuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBHUFVPcmlnaW4z
RCB7CisgICAgdW5zaWduZWQgeDsKKyAgICB1bnNpZ25lZCB5OworICAgIHVuc2lnbmVkIHo7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjgxM2EyMzE0YmRmNWM2YThjYTJhNjJlZDcwNWVjZjU3NmUwZDI5NGIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVPcmlnaW4zRC5pZGwKQEAg
LTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dw
dXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAorCit0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgdTMyOworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1
bnRpbWU9V2ViR1BVCitdIGRpY3Rpb25hcnkgR1BVT3JpZ2luM0QgeworICAgIHUzMiB4OworICAg
IHUzMiB5OworICAgIHUzMiB6OworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHAKaW5kZXggMjhhNWFiNzJkNzliOTJhYTI3
MTRmMWIxMzM1MGFlYTlmNzk0ZjI4OC4uZGJhOWE2MDJjMWM2NWE5Zjc0ZTUwMzZmMGU5ZDAzYTMx
NjcyYTk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tbWFuZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5jcHAKQEAgLTMwLDExICszMCwzNyBAQAogCiAjaW5jbHVkZSAiR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJHUFVSZW5kZXJQYXNzRW5jb2Rlci5o
IgorI2luY2x1ZGUgIldlYkdQVUJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaCIKKyNpbmNs
dWRlICJXZWJHUFVUZXh0dXJlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorT3B0aW9uYWw8
R1BVQnVmZmVyQ29weVZpZXc+IFdlYkdQVUJ1ZmZlckNvcHlWaWV3Ojphc0dQVUJ1ZmZlckNvcHlW
aWV3KCkgY29uc3QKK3sKKyAgICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5idWZmZXIoKSkgewor
ICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEVuY29kZXI6IEludmFsaWQgYnVmZmVyIGZv
ciBjb3B5ISIpOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKworICAgIC8v
IEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgorCisgICAgcmV0dXJuIEdQVUJ1ZmZlckNv
cHlWaWV3KGJ1ZmZlci0+YnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgKnRoaXMpOworfQorCitP
cHRpb25hbDxHUFVUZXh0dXJlQ29weVZpZXc+IFdlYkdQVVRleHR1cmVDb3B5Vmlldzo6YXNHUFVU
ZXh0dXJlQ29weVZpZXcoKSBjb25zdAoreworICAgIGlmICghdGV4dHVyZSB8fCAhdGV4dHVyZS0+
dGV4dHVyZSgpKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kRW5jb2RlcjogSW52
YWxpZCB0ZXh0dXJlIGZvciBjb3B5ISIpOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIH0KKworICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgorCisgICAgcmV0
dXJuIEdQVVRleHR1cmVDb3B5Vmlldyh0ZXh0dXJlLT50ZXh0dXJlKCkucmVsZWFzZU5vbk51bGwo
KSwgKnRoaXMpOworfQorCiBSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVQ29tbWFuZEJ1
ZmZlcjo6Y3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVDb21tYW5kQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkpOwpA
QCAtNTYsNiArODIsNTcgQEAgUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVD
b21tYW5kQnVmZmVyOjpiZWdpblJlbmRlclBhc3MoV2ViR1BVUmVuZGUKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAordm9pZCBXZWJHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIo
Y29uc3QgV2ViR1BVQnVmZmVyJiBzcmMsIHVuc2lnbmVkIGxvbmcgc3JjT2Zmc2V0LCBjb25zdCBX
ZWJHUFVCdWZmZXImIGRzdCwgdW5zaWduZWQgbG9uZyBkc3RPZmZzZXQsIHVuc2lnbmVkIGxvbmcg
c2l6ZSkKK3sKKyAgICBpZiAoIXNyYy5idWZmZXIoKSB8fCAhZHN0LmJ1ZmZlcigpKSB7CisgICAg
ICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoKTog
SW52YWxpZCBHUFVCdWZmZXIhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBG
SVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KKworICAgIG1fY29tbWFuZEJ1ZmZlci0+Y29w
eUJ1ZmZlclRvQnVmZmVyKHNyYy5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBzcmNPZmZzZXQs
IGRzdC5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBkc3RPZmZzZXQsIHNpemUpOworfQorCit2
b2lkIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV2ViR1BV
QnVmZmVyQ29weVZpZXcmIHNyY0J1ZmZlciwgY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBk
c3RUZXh0dXJlLCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKK3sKKyAgICBhdXRvIGdwdUJ1ZmZl
clZpZXcgPSBzcmNCdWZmZXIuYXNHUFVCdWZmZXJDb3B5VmlldygpOworICAgIGF1dG8gZ3B1VGV4
dHVyZVZpZXcgPSBkc3RUZXh0dXJlLmFzR1BVVGV4dHVyZUNvcHlWaWV3KCk7CisKKyAgICBpZiAo
IWdwdUJ1ZmZlclZpZXcgfHwgIWdwdVRleHR1cmVWaWV3KQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KKworICAgIG1fY29tbWFuZEJ1ZmZl
ci0+Y29weUJ1ZmZlclRvVGV4dHVyZSgqZ3B1QnVmZmVyVmlldywgKmdwdVRleHR1cmVWaWV3LCBz
aXplKTsKK30KKwordm9pZCBXZWJHUFVDb21tYW5kQnVmZmVyOjpjb3B5VGV4dHVyZVRvQnVmZmVy
KGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYgc3JjVGV4dHVyZSwgY29uc3QgV2ViR1BVQnVm
ZmVyQ29weVZpZXcmIGRzdEJ1ZmZlciwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCit7CisgICAg
YXV0byBncHVUZXh0dXJlVmlldyA9IHNyY1RleHR1cmUuYXNHUFVUZXh0dXJlQ29weVZpZXcoKTsK
KyAgICBhdXRvIGdwdUJ1ZmZlclZpZXcgPSBkc3RCdWZmZXIuYXNHUFVCdWZmZXJDb3B5Vmlldygp
OworCisgICAgaWYgKCFncHVUZXh0dXJlVmlldyB8fCAhZ3B1QnVmZmVyVmlldykKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCisKKyAgICBt
X2NvbW1hbmRCdWZmZXItPmNvcHlUZXh0dXJlVG9CdWZmZXIoKmdwdVRleHR1cmVWaWV3LCAqZ3B1
QnVmZmVyVmlldywgc2l6ZSk7Cit9CisKK3ZvaWQgV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRl
eHR1cmVUb1RleHR1cmUoY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiBzcmMsIGNvbnN0IFdl
YkdQVVRleHR1cmVDb3B5VmlldyYgZHN0LCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKK3sKKyAg
ICBhdXRvIGdwdVNyY1ZpZXcgPSBzcmMuYXNHUFVUZXh0dXJlQ29weVZpZXcoKTsKKyAgICBhdXRv
IGdwdURzdFZpZXcgPSBkc3QuYXNHUFVUZXh0dXJlQ29weVZpZXcoKTsKKworICAgIGlmICghZ3B1
U3JjVmlldyB8fCAhZ3B1RHN0VmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6
IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCisKKyAgICBtX2NvbW1hbmRCdWZmZXItPmNvcHlUZXh0
dXJlVG9UZXh0dXJlKCpncHVTcmNWaWV3LCAqZ3B1RHN0Vmlldywgc2l6ZSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKaW5kZXgg
OThlZTQwY2RkZDQ0NGIxMDU2NWJjZDQ3ZDM3NDg0MzVjYmNiZTlhZC4uYTA5YjdmMWU5N2E4OWRh
NjQ3NDliZjYwYjZjNWNmN2QzNzJmNjA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaApAQCAtMjksMTYgKzI5LDMyIEBACiAK
ICNpbmNsdWRlICJHUFVDb21tYW5kQnVmZmVyLmgiCiAKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwu
aD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV2Vi
R1BVQnVmZmVyOwogY2xhc3MgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI7CitjbGFzcyBXZWJHUFVU
ZXh0dXJlOwogCitzdHJ1Y3QgR1BVRXh0ZW50M0Q7CiBzdHJ1Y3QgV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3I7CiAKK3N0cnVjdCBXZWJHUFVCdWZmZXJDb3B5VmlldyA6IEdQVUJ1ZmZlckNvcHlW
aWV3QmFzZSB7CisgICAgT3B0aW9uYWw8R1BVQnVmZmVyQ29weVZpZXc+IGFzR1BVQnVmZmVyQ29w
eVZpZXcoKSBjb25zdDsKKworICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGJ1ZmZlcjsKK307CisK
K3N0cnVjdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcgOiBHUFVUZXh0dXJlQ29weVZpZXdCYXNlIHsK
KyAgICBPcHRpb25hbDxHUFVUZXh0dXJlQ29weVZpZXc+IGFzR1BVVGV4dHVyZUNvcHlWaWV3KCkg
Y29uc3Q7CisKKyAgICBSZWZQdHI8V2ViR1BVVGV4dHVyZT4gdGV4dHVyZTsKK307CisKIGNsYXNz
IFdlYkdQVUNvbW1hbmRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVDb21tYW5kQnVm
ZmVyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBjcmVh
dGUoUmVmPEdQVUNvbW1hbmRCdWZmZXI+JiYpOwpAQCAtNDYsNiArNjIsMTAgQEAgcHVibGljOgog
ICAgIGNvbnN0IEdQVUNvbW1hbmRCdWZmZXImIGNvbW1hbmRCdWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX2NvbW1hbmRCdWZmZXIuZ2V0KCk7IH0KIAogICAgIFJlZlB0cjxXZWJHUFVSZW5kZXJQYXNz
RW5jb2Rlcj4gYmVnaW5SZW5kZXJQYXNzKFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yJiYpOwor
ICAgIHZvaWQgY29weUJ1ZmZlclRvQnVmZmVyKGNvbnN0IFdlYkdQVUJ1ZmZlciYsIHVuc2lnbmVk
IGxvbmcgc3JjT2Zmc2V0LCBjb25zdCBXZWJHUFVCdWZmZXImLCB1bnNpZ25lZCBsb25nIGRzdE9m
ZnNldCwgdW5zaWduZWQgbG9uZyBzaXplKTsKKyAgICB2b2lkIGNvcHlCdWZmZXJUb1RleHR1cmUo
Y29uc3QgV2ViR1BVQnVmZmVyQ29weVZpZXcmLCBjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcm
LCBjb25zdCBHUFVFeHRlbnQzRCYpOworICAgIHZvaWQgY29weVRleHR1cmVUb0J1ZmZlcihjb25z
dCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBXZWJHUFVCdWZmZXJDb3B5VmlldyYsIGNv
bnN0IEdQVUV4dGVudDNEJik7CisgICAgdm9pZCBjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBX
ZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25z
dCBHUFVFeHRlbnQzRCYpOwogCiBwcml2YXRlOgogICAgIFdlYkdQVUNvbW1hbmRCdWZmZXIoUmVm
PEdQVUNvbW1hbmRCdWZmZXI+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmlkbAppbmRleCBiOWY0MmNmZGFhYmY1OGY5Njlj
MDBkNjI4NGJkOTNjOWIyMDliNGY4Li4xYmQ2ZjU0NTMzZTgxYmY5MDAyMTMyMzYyYzJjMDdmZmY1
MzNmOWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21tYW5kQnVmZmVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kQnVmZmVyLmlkbApAQCAtMjQsNiArMjQsMzEgQEAKICAqLwogLy8gaHR0cHM6Ly9n
aXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWduL3NrZXRjaC53ZWJpZGwK
IAordHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25n
IHU2NDsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1l
PVdlYkdQVSwKKyAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVUJ1ZmZlckNvcHlWaWV3CitdIGRpY3Rp
b25hcnkgR1BVQnVmZmVyQ29weVZpZXcgeworICAgIFdlYkdQVUJ1ZmZlciBidWZmZXI7CisgICAg
dTY0IG9mZnNldDsKKyAgICB1NjQgcm93UGl0Y2g7CisgICAgdTMyIGltYWdlSGVpZ2h0OworfTsK
KworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQ
VSwKKyAgICBJbXBsZW1lbnRlZEFzPVdlYkdQVVRleHR1cmVDb3B5VmlldworXSBkaWN0aW9uYXJ5
IEdQVVRleHR1cmVDb3B5VmlldyB7CisgICAgV2ViR1BVVGV4dHVyZSB0ZXh0dXJlOworICAgIHUz
MiBtaXBMZXZlbDsKKyAgICB1MzIgYXJyYXlMYXllcjsKKyAgICBHUFVPcmlnaW4zRCBvcmlnaW47
Cit9OworCiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9
V2ViR1BVLApAQCAtMzEsMTEgKzU2LDcgQEAKIF0gaW50ZXJmYWNlIFdlYkdQVUNvbW1hbmRCdWZm
ZXIgewogICAgIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGJlZ2luUmVuZGVyUGFzcyhXZWJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKIAotLyogTm90IFlldCBJbXBsZW1lbnRl
ZAotICAgIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2RlciBiZWdpbkNvbXB1dGVQYXNzKCk7Ci0KLSAg
ICAvLyBDb21tYW5kcyBhbGxvd2VkIG91dHNpZGUgb2YgInBhc3NlcyIKLSAgICAgICAgdm9pZCBj
b3B5QnVmZmVyVG9CdWZmZXIoCisgICAgdm9pZCBjb3B5QnVmZmVyVG9CdWZmZXIoCiAgICAgICAg
IFdlYkdQVUJ1ZmZlciBzcmMsCiAgICAgICAgIHU2NCBzcmNPZmZzZXQsCiAgICAgICAgIFdlYkdQ
VUJ1ZmZlciBkc3QsCkBAIC00MywyMSArNjQsMjAgQEAKICAgICAgICAgdTY0IHNpemUpOwogCiAg
ICAgdm9pZCBjb3B5QnVmZmVyVG9UZXh0dXJlKAotICAgICAgICBXZWJHUFVCdWZmZXJDb3B5Vmll
dyBzb3VyY2UsCi0gICAgICAgIFdlYkdQVVRleHR1cmVDb3B5VmlldyBkZXN0aW5hdGlvbiwKLSAg
ICAgICAgV2ViR1BVRXh0ZW50M0QgY29weVNpemUpOworICAgICAgICBHUFVCdWZmZXJDb3B5Vmll
dyBzb3VyY2UsCisgICAgICAgIEdQVVRleHR1cmVDb3B5VmlldyBkZXN0aW5hdGlvbiwKKyAgICAg
ICAgR1BVRXh0ZW50M0QgY29weVNpemUpOwogCiAgICAgdm9pZCBjb3B5VGV4dHVyZVRvQnVmZmVy
KAotICAgICAgICBXZWJHUFVUZXh0dXJlQ29weVZpZXcgc291cmNlLAotICAgICAgICBXZWJHUFVC
dWZmZXJDb3B5VmlldyBkZXN0aW5hdGlvbiwKLSAgICAgICAgV2ViR1BVRXh0ZW50M0QgY29weVNp
emUpOworICAgICAgICBHUFVUZXh0dXJlQ29weVZpZXcgc291cmNlLAorICAgICAgICBHUFVCdWZm
ZXJDb3B5VmlldyBkZXN0aW5hdGlvbiwKKyAgICAgICAgR1BVRXh0ZW50M0QgY29weVNpemUpOwog
CiAgICAgdm9pZCBjb3B5VGV4dHVyZVRvVGV4dHVyZSgKLSAgICAgICAgV2ViR1BVVGV4dHVyZUNv
cHlWaWV3IHNvdXJjZSwKLSAgICAgICAgV2ViR1BVVGV4dHVyZUNvcHlWaWV3IGRlc3RpbmF0aW9u
LAotICAgICAgICBXZWJHUFVFeHRlbnQzRCBjb3B5U2l6ZSk7CisgICAgICAgIEdQVVRleHR1cmVD
b3B5VmlldyBzb3VyY2UsCisgICAgICAgIEdQVVRleHR1cmVDb3B5VmlldyBkZXN0aW5hdGlvbiwK
KyAgICAgICAgR1BVRXh0ZW50M0QgY29weVNpemUpOwogCi0gICAgLy8gVE9ETyBmaWd1cmUgd2hp
Y2ggb3RoZXIgY29tbWFuZHMgYXJlIG5lZWRlZAotICAgIHZvaWQgYmxpdCgpOwotKi8KKyAgICAv
LyBOb3QgWWV0IEltcGxlbWVudGVkCisgICAgLy8gV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyIGJl
Z2luQ29tcHV0ZVBhc3MoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKaW5kZXggMmQyOGFi
YzRiOTg0NzAzNjgyMGRiNjk5NmQ1NDk3M2IyYjZlMjRiMi4uM2U4YjY5OGM4MzAwN2E3YjdmOTgx
ZDFiZGQ4ZGFhMWIzNzQ0MTUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcApAQCAtMzMsMTQg
KzMzLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3I6OkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1cmUsIEdQVUxvYWRPcCBsb2FkLCBHUFVTdG9yZU9wIHN0
b3JlLCBHUFVDb2xvciBjb2xvcikKLSAgICA6IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQmFzZSB7IGxvYWQsIHN0b3JlLCBjb2xvciB9CitHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IoUmVmPEdQVVRleHR1cmU+JiYgdGV4dHVyZSwgY29uc3QgR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JCYXNlJiBiYXNlKQorICAgIDogR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JCYXNlKGJhc2UpCiAgICAgLCBhdHRhY2htZW50KFdURk1vdmUodGV4
dHVyZSkpCiB7CiB9CiAKLUdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3Jp
cHRvcjo6R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxH
UFVUZXh0dXJlPiYmIHRleHR1cmUsIEdQVUxvYWRPcCBsb2FkLCBHUFVTdG9yZU9wIHN0b3JlLCBm
bG9hdCBkZXB0aCkKLSAgICA6IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVz
Y3JpcHRvckJhc2UgeyBsb2FkLCBzdG9yZSwgZGVwdGggfQorR1BVUmVuZGVyUGFzc0RlcHRoU3Rl
bmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNo
bWVudERlc2NyaXB0b3IoUmVmPEdQVVRleHR1cmU+JiYgdGV4dHVyZSwgY29uc3QgR1BVUmVuZGVy
UGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSYgYmFzZSkKKyAgICA6IEdQ
VVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvckJhc2UoYmFzZSkKICAg
ICAsIGF0dGFjaG1lbnQoV1RGTW92ZSh0ZXh0dXJlKSkKIHsKIH0KQEAgLTU2LDIxICs1NiwyMSBA
QCBPcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcj4gV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3I6OmFzR1BVUmVuZGVyUGFzc0RlcwogICAgIFZlY3RvcjxHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvcj4gZ3B1Q29sb3JBdHRhY2htZW50czsKIAogICAgIGZvciAoY29u
c3QgYXV0byYgY29sb3JBdHRhY2htZW50IDogY29sb3JBdHRhY2htZW50cykgewotICAgICAgICBp
ZiAoIWNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50KSB7CisgICAgICAgIGlmICghY29sb3JBdHRh
Y2htZW50LmF0dGFjaG1lbnQgfHwgIWNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50LT50ZXh0dXJl
KCktPmlzT3V0cHV0QXR0YWNobWVudCgpKSB7CiAgICAgICAgICAgICBMT0coV2ViR1BVLCAiR1BV
UmVuZGVyUGFzc0Rlc2NyaXB0b3I6IEludmFsaWQgYXR0YWNobWVudCBpbiBHUFVSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50RGVzY3JpcHRvciEiKTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAgICAgICAgIH0KLSAgICAgICAgZ3B1Q29sb3JBdHRhY2htZW50cy5hcHBlbmQoR1BV
UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IoY29sb3JBdHRhY2htZW50LmF0dGFj
aG1lbnQtPnRleHR1cmUoKSwgY29sb3JBdHRhY2htZW50LmxvYWRPcCwgY29sb3JBdHRhY2htZW50
LnN0b3JlT3AsIGNvbG9yQXR0YWNobWVudC5jbGVhckNvbG9yKSk7CisgICAgICAgIGdwdUNvbG9y
QXR0YWNobWVudHMuYXBwZW5kKEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9y
KGNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50LT50ZXh0dXJlKCksIGNvbG9yQXR0YWNobWVudCkp
OwogICAgIH0KIAogICAgIE9wdGlvbmFsPEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50RGVzY3JpcHRvcj4gZ3B1RGVwdGhBdHRhY2htZW50OwogCiAgICAgaWYgKGRlcHRoU3RlbmNp
bEF0dGFjaG1lbnQpIHsKLSAgICAgICAgaWYgKCFkZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5hdHRh
Y2htZW50KSB7CisgICAgICAgIGlmICghZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+YXR0YWNobWVu
dCB8fCAhZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+YXR0YWNobWVudC0+dGV4dHVyZSgpLT5pc091
dHB1dEF0dGFjaG1lbnQoKSkgewogICAgICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yOiBJbnZhbGlkIGF0dGFjaG1lbnQgaW4gR1BVUmVuZGVyUGFzc0RlcHRoU3Rl
bmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yISIpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICAgICAgfQotICAgICAgICBncHVEZXB0aEF0dGFjaG1lbnQgPSBHUFVSZW5kZXJQ
YXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3IoZGVwdGhTdGVuY2lsQXR0YWNobWVu
dC0+YXR0YWNobWVudC0+dGV4dHVyZSgpLCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5kZXB0aExv
YWRPcCwgZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+ZGVwdGhTdG9yZU9wLCBkZXB0aFN0ZW5jaWxB
dHRhY2htZW50LT5jbGVhckRlcHRoKTsKKyAgICAgICAgZ3B1RGVwdGhBdHRhY2htZW50ID0gR1BV
UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQtPmF0dGFjaG1lbnQtPnRleHR1cmUoKSwgKmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQp
OwogICAgIH0KIAogICAgIHJldHVybiBHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciB7IFdURk1vdmUo
Z3B1Q29sb3JBdHRhY2htZW50cyksIFdURk1vdmUoZ3B1RGVwdGhBdHRhY2htZW50KSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oCmluZGV4IGM1OTBi
ZGY2OTQyZDdiOWJmZmZkMWU3MmI2MTI4OWJkODBkMzliMzIuLjYyZmVkOThlMDhjOTdmZjIwZTdj
MDY2ZWIyZDk0N2VjMzkwMWYzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVUZXh0dXJlLmgKQEAgLTQwLDYgKzQwLDggQEAgY2xhc3MgV2ViR1BVVGV4dHVyZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVRleHR1cmU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFdlYkdQVVRleHR1cmU+IGNyZWF0ZShSZWZQdHI8R1BVVGV4dHVyZT4mJik7CiAKKyAgICBS
ZWZQdHI8R1BVVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZTsgfQor
CiAgICAgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBjcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXco
KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggOTY1ZDA0MjNmNzhiMTc1OGE2M2QyODhm
OTJmODIwZTYyM2YwMGZiOS4uYjU3NWU2OGJmZmJhYmFlOTIxNjUwZDRhOWJmNmM0MjUzMWExZDc5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTI3NzUsNiArMjc3NSw3IEBAIEpTR1BVQ29tcGFyZUZ1bmN0
aW9uLmNwcAogSlNHUFVEZXB0aFN0ZW5jaWxTdGF0ZURlc2NyaXB0b3IuY3BwCiBKU0dQVUV4dGVu
dDNELmNwcAogSlNHUFVMb2FkT3AuY3BwCitKU0dQVU9yaWdpbjNELmNwcAogSlNHUFVSZXF1ZXN0
QWRhcHRlck9wdGlvbnMuY3BwCiBKU0dQVVN0b3JlT3AuY3BwCiBKU0dQVVRleHR1cmVEZXNjcmlw
dG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDI0NDE5NTk3NzliYzA3MGZhNGUzNDQxZTM4Y2M1ZmI1MTczOWRiMzYuLjUy
ODhhZDQ3OGE0Y2FmODBiYjE3NmI4Y2RhYjljMTZhYTFiYmE0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MTM1LDYgKzE0
MTM1LDggQEAKIAkJRDBDQUFFOUMyMTY4MjRBNzAwMUM5MUM3IC8qIFdlYk1ldGFsQ29tcHV0ZUNv
bW1hbmRFbmNvZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1ldGFsQ29tcHV0ZUNvbW1h
bmRFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBDQUFFOUQyMTY4
MjRBNzAwMUM5MUM3IC8qIFdlYk1ldGFsQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1ldGFs
QnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTlFMjE2ODI0QTgw
MDFDOTFDNyAvKiBXZWJNZXRhbENvbW1hbmRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViTWV0YWxDb21tYW5kQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RDBDQ0E5NDkyMjI5OUY5NzAwNjk3OUI2IC8qIEdQVU9yaWdpbjNELmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVU9yaWdpbjNELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQ0NBOTRBMjIy
OTlGOTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR1BVT3JpZ2luM0QuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEQ4NjQ4NzIxQjY0Q0FBMDAzQzk4M0MgLyog
R1BVQnVmZmVyRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVCdWZmZXJEZXNjcmlwdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRDg2NDhDMjFCNzA2NzYwMDNDOTgz
QyAvKiBXZWJHUFVCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQnVmZmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRDg2NDhEMjFCNzA2NzYwMDNDOTgzQyAvKiBXZWJH
UFVCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQnVmZmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2MDcyLDYgKzI2MDc0LDggQEAKIAkJCQlEMDNDODRB
MjIxRkZENzIzMDAwMjIyN0YgLyogR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlkbCAq
LywKIAkJCQlEMDI2RjQ4MDIyMEEyQjcwMDBBQzVGNDkgLyogR1BVRXh0ZW50M0QuaWRsICovLAog
CQkJCUQwOEFBMDJEMjIwRDBCOUMwMDU4QzUwMiAvKiBHUFVMb2FkT3AuaWRsICovLAorCQkJCUQw
Q0NBOTQ5MjIyOTlGOTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5oICovLAorCQkJCUQwQ0NBOTRB
MjIyOTlGOTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5pZGwgKi8sCiAJCQkJRDAyQzI2OTIyMTgx
NDE2RDAwRDgxOEU0IC8qIEdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwgKi8sCiAJCQkJRDA4
QUEwMzEyMjBEMENFNjAwNThDNTAyIC8qIEdQVVN0b3JlT3AuaWRsICovLAogCQkJCUQwMjZGNDhC
MjIwQTVCMEIwMEFDNUY0OSAvKiBHUFVUZXh0dXJlRGVzY3JpcHRvci5pZGwgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmgKaW5kZXggZDky
OWZkMTk3N2U1ZDY4Mzg5YTNhY2NkZWJlNmU0ZmYzN2I2ZWQ4Zi4uYjBjYTI3ZTY5NDg5ODc3ZmFh
NWMyYzE5ZTkxMzA0Y2NlNTJlMjFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkRl
ZmVycmFibGVUYXNrLmgiCiAjaW5jbHVkZSAiR1BVQnVmZmVyVXNhZ2UuaCIKICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgpAQCAtNzAsMTIgKzcxLDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdQ
VUJ1ZmZlcj4gdHJ5Q3JlYXRlKFJlZjxHUFVEZXZpY2U+JiYsIEdQVUJ1ZmZlckRlc2NyaXB0b3Im
Jik7CiAKICAgICBQbGF0Zm9ybUJ1ZmZlciAqcGxhdGZvcm1CdWZmZXIoKSBjb25zdCB7IHJldHVy
biBtX3BsYXRmb3JtQnVmZmVyLmdldCgpOyB9Ci0gICAgYm9vbCBpc1RyYW5zZmVyRHN0KCkgY29u
c3QgeyByZXR1cm4gbV91c2FnZSAmIEdQVUJ1ZmZlclVzYWdlOjpUcmFuc2ZlckRzdDsgfQotICAg
IGJvb2wgaXNWZXJ0ZXgoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlICYgR1BVQnVmZmVyVXNhZ2U6
OlZlcnRleDsgfQotICAgIGJvb2wgaXNVbmlmb3JtKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZSAm
IEdQVUJ1ZmZlclVzYWdlOjpVbmlmb3JtOyB9Ci0gICAgYm9vbCBpc1N0b3JhZ2UoKSBjb25zdCB7
IHJldHVybiBtX3VzYWdlICYgR1BVQnVmZmVyVXNhZ2U6OlN0b3JhZ2U7IH0KKyAgICB1bnNpZ25l
ZCBsb25nIGJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2J5dGVMZW5ndGg7IH0KKyAgICBi
b29sIGlzVHJhbnNmZXJTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQ
VUJ1ZmZlclVzYWdlOjpGbGFnczo6VHJhbnNmZXJTb3VyY2UpOyB9CisgICAgYm9vbCBpc1RyYW5z
ZmVyRGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1ZmZl
clVzYWdlOjpGbGFnczo6VHJhbnNmZXJEZXN0aW5hdGlvbik7IH0KKyAgICBib29sIGlzVmVydGV4
KCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6
OlZlcnRleCk7IH0KKyAgICBib29sIGlzVW5pZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2Uu
Y29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpVbmlmb3JtKTsgfQorICAgIGJvb2wgaXNT
dG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVCdWZmZXJVc2FnZTo6
RmxhZ3M6OlN0b3JhZ2UpOyB9CiAgICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3Q7Ci0gICAgYm9v
bCBpc01hcHBhYmxlKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZSAmIChHUFVCdWZmZXJVc2FnZTo6
TWFwV3JpdGUgfCBHUFVCdWZmZXJVc2FnZTo6TWFwUmVhZCk7IH0KKyAgICBib29sIGlzTWFwcGFi
bGUoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zQW55KHsgR1BVQnVmZmVyVXNhZ2U6
OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBSZWFkIH0pOyB9CiAg
ICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKIAogI2lmIFVTRShNRVRBTCkKQEAgLTEwNCwxNiArMTA3
LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIFBlbmRpbmdNYXBwaW5nQ2FsbGJhY2soTWFwcGluZ0Nh
bGxiYWNrJiYpOwogICAgIH07CiAKLSAgICBzdGF0aWMgYm9vbCB2YWxpZGF0ZUJ1ZmZlckNyZWF0
ZShjb25zdCBHUFVEZXZpY2UmLCBjb25zdCBHUFVCdWZmZXJEZXNjcmlwdG9yJik7CisgICAgc3Rh
dGljIGJvb2wgdmFsaWRhdGVCdWZmZXJVc2FnZShjb25zdCBHUFVEZXZpY2UmLCBPcHRpb25TZXQ8
R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPik7CiAKLSAgICBHUFVCdWZmZXIoUGxhdGZvcm1CdWZmZXJT
bWFydFB0ciYmLCBjb25zdCBHUFVCdWZmZXJEZXNjcmlwdG9yJiwgUmVmPEdQVURldmljZT4mJik7
CisgICAgR1BVQnVmZmVyKFBsYXRmb3JtQnVmZmVyU21hcnRQdHImJiwgY29uc3QgR1BVQnVmZmVy
RGVzY3JpcHRvciYsIE9wdGlvblNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+LCBSZWY8R1BVRGV2
aWNlPiYmKTsKIAogICAgIEpTQzo6QXJyYXlCdWZmZXIqIHN0YWdpbmdCdWZmZXJGb3JSZWFkKCk7
CiAgICAgSlNDOjpBcnJheUJ1ZmZlciogc3RhZ2luZ0J1ZmZlckZvcldyaXRlKCk7CiAgICAgdm9p
ZCBydW5NYXBwaW5nQ2FsbGJhY2soKTsKIAotICAgIGJvb2wgaXNNYXBXcml0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdXNhZ2UgJiBHUFVCdWZmZXJVc2FnZTo6TWFwV3JpdGU7IH0KLSAgICBib29sIGlz
TWFwUmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UgJiBHUFVCdWZmZXJVc2FnZTo6TWFwUmVh
ZDsgfQorICAgIGJvb2wgaXNNYXBXcml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFp
bnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSk7IH0KKyAgICBib29sIGlzTWFwUmVh
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNhZ2U6OkZsYWdz
OjpNYXBSZWFkKTsgfQogICAgIGJvb2wgaXNNYXBXcml0ZWFibGUoKSBjb25zdCB7IHJldHVybiBp
c01hcFdyaXRlKCkgJiYgc3RhdGUoKSA9PSBTdGF0ZTo6VW5tYXBwZWQ7IH0KICAgICBib29sIGlz
TWFwUmVhZGFibGUoKSBjb25zdCB7IHJldHVybiBpc01hcFJlYWQoKSAmJiBzdGF0ZSgpID09IFN0
YXRlOjpVbm1hcHBlZDsgfQogCkBAIC0xMjksNyArMTMyLDcgQEAgcHJpdmF0ZToKICAgICBEZWZl
cnJhYmxlVGFzazxUaW1lcj4gbV9tYXBwaW5nQ2FsbGJhY2tUYXNrOwogCiAgICAgdW5zaWduZWQg
bG9uZyBtX2J5dGVMZW5ndGg7Ci0gICAgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzIG1fdXNhZ2U7Cisg
ICAgT3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz4gbV91c2FnZTsKICAgICB1bnNpZ25l
ZCBtX251bVNjaGVkdWxlZENvbW1hbmRCdWZmZXJzID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJVc2FnZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlclVzYWdlLmgKaW5kZXgg
ZDJjNGE2N2IwN2U2ZTdjMjU1ZGRiNGViZjUyMjkwZjY1ODAxZDQ0Yy4uOTgzZGI0ODkwNjUzYWRh
NGU5M2JjNjkwZjY1MjYxYTM2NDVmNDQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlclVzYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlclVzYWdlLmgKQEAgLTMxLDIwICszMSwyMCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIEdQVUJ1ZmZlclVzYWdlRmxhZ3MgPSB1
bnNpZ25lZCBsb25nOwordXNpbmcgR1BVQnVmZmVyVXNhZ2VGbGFncyA9IHVuc2lnbmVkOwogCiBj
bGFzcyBHUFVCdWZmZXJVc2FnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVUJ1ZmZlclVzYWdlPiB7
CiBwdWJsaWM6Ci0gICAgZW51bSBGbGFncyA6IEdQVUJ1ZmZlclVzYWdlRmxhZ3MgeworICAgIGVu
dW0gY2xhc3MgRmxhZ3MgOiBHUFVCdWZmZXJVc2FnZUZsYWdzIHsKICAgICAgICAgTm9uZSA9IDAs
Ci0gICAgICAgIE1hcFJlYWQgPSAxLAotICAgICAgICBNYXBXcml0ZSA9IDIsCi0gICAgICAgIFRy
YW5zZmVyU3JjID0gNCwKLSAgICAgICAgVHJhbnNmZXJEc3QgPSA4LAotICAgICAgICBJbmRleCA9
IDE2LAotICAgICAgICBWZXJ0ZXggPSAzMiwKLSAgICAgICAgVW5pZm9ybSA9IDY0LAotICAgICAg
ICBTdG9yYWdlID0gMTI4CisgICAgICAgIE1hcFJlYWQgPSAxIDw8IDAsCisgICAgICAgIE1hcFdy
aXRlID0gMSA8PCAxLAorICAgICAgICBUcmFuc2ZlclNvdXJjZSA9IDEgPDwgMiwKKyAgICAgICAg
VHJhbnNmZXJEZXN0aW5hdGlvbiA9IDEgPDwgMywKKyAgICAgICAgSW5kZXggPSAxIDw8IDQsCisg
ICAgICAgIFZlcnRleCA9IDEgPDwgNSwKKyAgICAgICAgVW5pZm9ybSA9IDEgPDwgNiwKKyAgICAg
ICAgU3RvcmFnZSA9IDEgPDwgNywKICAgICB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmgKaW5kZXggOTli
Y2VmMDI2YTQwNTM2ODE3NzQ3MTIwOGQxODljMjQ3MDIzOWExYy4uYTU4MjVjMTg4ZTQ1NGE1NWUy
MDUxYjk1ZmEzNDRlODliZjhkMWI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5oCkBAIC0yNywyNyArMjcsNzIg
QEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNpbmNsdWRlICJHUFVPcmlnaW4zRC5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKK09CSkNfUFJP
VE9DT0woTVRMQmxpdENvbW1hbmRFbmNvZGVyKTsKIE9CSkNfUFJPVE9DT0woTVRMQ29tbWFuZEJ1
ZmZlcik7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1BVQnVmZmVyOwogY2xhc3Mg
R1BVRGV2aWNlOworY2xhc3MgR1BVVGV4dHVyZTsKKworc3RydWN0IEdQVUV4dGVudDNEOwogCiB1
c2luZyBQbGF0Zm9ybUNvbW1hbmRCdWZmZXIgPSBNVExDb21tYW5kQnVmZmVyOwogdXNpbmcgUGxh
dGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHIgPSBSZXRhaW5QdHI8TVRMQ29tbWFuZEJ1ZmZlcj47
CiAKK3N0cnVjdCBHUFVCdWZmZXJDb3B5Vmlld0Jhc2UgeworICAgIHVuc2lnbmVkIGxvbmcgb2Zm
c2V0OworICAgIHVuc2lnbmVkIGxvbmcgcm93UGl0Y2g7CisgICAgdW5zaWduZWQgaW1hZ2VIZWln
aHQ7Cit9OworCitzdHJ1Y3QgR1BVQnVmZmVyQ29weVZpZXcgZmluYWwgOiBHUFVCdWZmZXJDb3B5
Vmlld0Jhc2UgeworICAgIEdQVUJ1ZmZlckNvcHlWaWV3KFJlZjxHUFVCdWZmZXI+JiYgYnVmZmVy
Q29weSwgY29uc3QgR1BVQnVmZmVyQ29weVZpZXdCYXNlJiBiYXNlKQorICAgICAgICA6IEdQVUJ1
ZmZlckNvcHlWaWV3QmFzZShiYXNlKQorICAgICAgICAsIGJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlckNv
cHkpKQorICAgIHsKKyAgICB9CisKKyAgICBSZWY8R1BVQnVmZmVyPiBidWZmZXI7Cit9OworCitz
dHJ1Y3QgR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSB7CisgICAgdW5zaWduZWQgbWlwTGV2ZWw7Cisg
ICAgdW5zaWduZWQgYXJyYXlMYXllcjsKKyAgICBHUFVPcmlnaW4zRCBvcmlnaW47Cit9OworCitz
dHJ1Y3QgR1BVVGV4dHVyZUNvcHlWaWV3IGZpbmFsIDogR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSB7
CisgICAgR1BVVGV4dHVyZUNvcHlWaWV3KFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1cmVDb3B5LCBj
b25zdCBHUFVUZXh0dXJlQ29weVZpZXdCYXNlJiBiYXNlKQorICAgICAgICA6IEdQVVRleHR1cmVD
b3B5Vmlld0Jhc2UoYmFzZSkKKyAgICAgICAgLCB0ZXh0dXJlKFdURk1vdmUodGV4dHVyZUNvcHkp
KQorICAgIHsKKyAgICB9CisKKyAgICBSZWY8R1BVVGV4dHVyZT4gdGV4dHVyZTsKK307CisKIGNs
YXNzIEdQVUNvbW1hbmRCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVDb21tYW5kQnVmZmVy
PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBjcmVhdGUo
R1BVRGV2aWNlJik7CiAKICAgICBQbGF0Zm9ybUNvbW1hbmRCdWZmZXIqIHBsYXRmb3JtQ29tbWFu
ZEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Db21tYW5kQnVmZmVyLmdldCgpOyB9
CiAgICAgY29uc3QgVmVjdG9yPFJlZjxHUFVCdWZmZXI+PiYgdXNlZEJ1ZmZlcnMoKSBjb25zdCB7
IHJldHVybiBtX3VzZWRCdWZmZXJzOyB9CisjaWYgVVNFKE1FVEFMKQorICAgIE1UTEJsaXRDb21t
YW5kRW5jb2RlciAqYmxpdEVuY29kZXIoKSBjb25zdDsKKyNlbmRpZgorCisgICAgdm9pZCBjb3B5
QnVmZmVyVG9CdWZmZXIoUmVmPEdQVUJ1ZmZlcj4mJiwgdW5zaWduZWQgbG9uZyBzcmNPZmZzZXQs
IFJlZjxHUFVCdWZmZXI+JiYsIHVuc2lnbmVkIGxvbmcgZHN0T2Zmc2V0LCB1bnNpZ25lZCBsb25n
IHNpemUpOworICAgIHZvaWQgY29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBHUFVCdWZmZXJDb3B5
VmlldyYsIGNvbnN0IEdQVVRleHR1cmVDb3B5VmlldyYsIGNvbnN0IEdQVUV4dGVudDNEJik7Cisg
ICAgdm9pZCBjb3B5VGV4dHVyZVRvQnVmZmVyKGNvbnN0IEdQVVRleHR1cmVDb3B5VmlldyYsIGNv
bnN0IEdQVUJ1ZmZlckNvcHlWaWV3JiwgY29uc3QgR1BVRXh0ZW50M0QmKTsKKyAgICB2b2lkIGNv
cHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IEdQVVRleHR1cmVDb3B5VmlldyYsIGNvbnN0IEdQVVRl
eHR1cmVDb3B5VmlldyYsIGNvbnN0IEdQVUV4dGVudDNEJik7CiAKICAgICB2b2lkIHVzZUJ1ZmZl
cihSZWY8R1BVQnVmZmVyPiYmIGJ1ZmZlcikgeyBtX3VzZWRCdWZmZXJzLmFwcGVuZChXVEZNb3Zl
KGJ1ZmZlcikpOyB9CiAKQEAgLTU2LDYgKzEwMSw5IEBAIHByaXZhdGU6CiAKICAgICBQbGF0Zm9y
bUNvbW1hbmRCdWZmZXJTbWFydFB0ciBtX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlcjsKICAgICBWZWN0
b3I8UmVmPEdQVUJ1ZmZlcj4+IG1fdXNlZEJ1ZmZlcnM7CisjaWYgVVNFKE1FVEFMKQorICAgIG11
dGFibGUgUmV0YWluUHRyPE1UTEJsaXRDb21tYW5kRW5jb2Rlcj4gbV9ibGl0RW5jb2RlcjsKKyNl
bmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaAppbmRleCBmNGFjNjlhYTQ1YmJjNzdlZDRiYmRjYmZhYjdhMGYzMDhkYzViYzg2Li5kNjRj
ZjVmMzk3MDJjMzZjMmUxZTJkZWFmNWI0OGFlMTUwZGJmZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuaApAQCAtNDMsNyArNDMsNyBAQCBzdHJ1Y3QgR1BVUmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudERlc2NyaXB0b3JCYXNlIHsKIH07CiAKIHN0cnVjdCBHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvciBmaW5hbCA6IEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnRE
ZXNjcmlwdG9yQmFzZSB7Ci0gICAgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IoUmVmPEdQVVRleHR1cmU+JiYsIEdQVUxvYWRPcCwgR1BVU3RvcmVPcCwgR1BVQ29sb3IpOwor
ICAgIEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0dXJl
PiYmLCBjb25zdCBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvckJhc2UmKTsK
IAogICAgIFJlZjxHUFVUZXh0dXJlPiBhdHRhY2htZW50OwogfTsKQEAgLTU3LDcgKzU3LDcgQEAg
c3RydWN0IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvckJhc2Ug
ewogfTsKIAogc3RydWN0IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3Jp
cHRvciBmaW5hbCA6IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRv
ckJhc2UgewotICAgIEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRv
cihSZWY8R1BVVGV4dHVyZT4mJiwgR1BVTG9hZE9wLCBHUFVTdG9yZU9wLCBmbG9hdCk7CisgICAg
R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0
dXJlPiYmLCBjb25zdCBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0
b3JCYXNlJik7CiAKICAgICBSZWY8R1BVVGV4dHVyZT4gYXR0YWNobWVudDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaAppbmRleCA1
NWQxZTNjODI4OTdlMzQ1ZjliM2E3Mjc2ODc1MGFkNTRhMzQ3YTI3Li45YTM2OTNhYjRlNDc3ODAy
MjgzOWQ3MTg5ODVkY2JjOTBiOGFhYzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2lmIEVO
QUJMRShXRUJHUFUpCiAKKyNpbmNsdWRlICJHUFVUZXh0dXJlVXNhZ2UuaCIKKyNpbmNsdWRlIDx3
dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtNDQsMTcgKzQ2LDIy
IEBAIHVzaW5nIFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTFRleHR1cmU+
OwogCiBjbGFzcyBHUFVUZXh0dXJlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVVGV4dHVyZT4gewog
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8R1BVVGV4dHVyZT4gdHJ5Q3JlYXRlKGNvbnN0IEdQ
VURldmljZSYsIEdQVVRleHR1cmVEZXNjcmlwdG9yJiYpOwotICAgIHN0YXRpYyBSZWY8R1BVVGV4
dHVyZT4gY3JlYXRlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYpOworICAgIHN0YXRpYyBSZWZQ
dHI8R1BVVGV4dHVyZT4gdHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYsIGNvbnN0IEdQVVRleHR1
cmVEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIFJlZjxHUFVUZXh0dXJlPiBjcmVhdGUoUGxhdGZv
cm1UZXh0dXJlU21hcnRQdHImJiwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+KTsK
IAogICAgIFBsYXRmb3JtVGV4dHVyZSAqcGxhdGZvcm1UZXh0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybVRleHR1cmUuZ2V0KCk7IH0KKyAgICBib29sIGlzVHJhbnNmZXJTb3VyY2UoKSBj
b25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlRy
YW5zZmVyU291cmNlKTsgfQorICAgIGJvb2wgaXNUcmFuc2ZlckRlc3RpbmF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpUcmFuc2Zl
ckRlc3RpbmF0aW9uKTsgfQorICAgIGJvb2wgaXNPdXRwdXRBdHRhY2htZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpPdXRwdXRBdHRh
Y2htZW50KTsgfQogCiAgICAgUmVmUHRyPEdQVVRleHR1cmU+IGNyZWF0ZURlZmF1bHRUZXh0dXJl
VmlldygpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEdQVVRleHR1cmUoUGxhdGZvcm1UZXh0
dXJlU21hcnRQdHImJik7CisgICAgZXhwbGljaXQgR1BVVGV4dHVyZShQbGF0Zm9ybVRleHR1cmVT
bWFydFB0ciYmLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4pOwogCiAgICAgUGxh
dGZvcm1UZXh0dXJlU21hcnRQdHIgbV9wbGF0Zm9ybVRleHR1cmU7CisKKyAgICBPcHRpb25TZXQ8
R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gbV91c2FnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVUZXh0dXJlVXNhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVUZXh0dXJlVXNhZ2UuaAppbmRleCAxN2EwMzAwN2Q0OTZiYzg3MjFjYTk0ZTQwNTg2YzFmMjlh
MjRhNDc1Li42Mjg5ZjkyZDg3MjU4MjdkOGRmMzUxNTdhYTdhZDBhNGNmMjQzYzBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVVzYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmVV
c2FnZS5oCkBAIC0zMSwxNiArMzEsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAot
dXNpbmcgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgPSB1bnNpZ25lZCBsb25nOwordXNpbmcgR1BVVGV4
dHVyZVVzYWdlRmxhZ3MgPSB1bnNpZ25lZDsKICAgICAKIGNsYXNzIEdQVVRleHR1cmVVc2FnZSA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVVRleHR1cmVVc2FnZT4gewogcHVibGljOgotICAgIHN0YXRp
YyBjb25zdCBHUFVUZXh0dXJlVXNhZ2VGbGFncyBOb25lID0gMDsKLSAgICBzdGF0aWMgY29uc3Qg
R1BVVGV4dHVyZVVzYWdlRmxhZ3MgVHJhbnNmZXJTcmMgPSAxOwotICAgIHN0YXRpYyBjb25zdCBH
UFVUZXh0dXJlVXNhZ2VGbGFncyBUcmFuc2ZlckRzdCA9IDI7Ci0gICAgc3RhdGljIGNvbnN0IEdQ
VVRleHR1cmVVc2FnZUZsYWdzIFNhbXBsZWQgPSA0OwotICAgIHN0YXRpYyBjb25zdCBHUFVUZXh0
dXJlVXNhZ2VGbGFncyBTdG9yYWdlID0gODsKLSAgICBzdGF0aWMgY29uc3QgR1BVVGV4dHVyZVVz
YWdlRmxhZ3MgT3V0cHV0QXR0YWNobWVudCA9IDE2OworICAgIGVudW0gY2xhc3MgRmxhZ3MgOiBH
UFVUZXh0dXJlVXNhZ2VGbGFncyB7CisgICAgICAgIE5vbmUgPSAwLAorICAgICAgICBUcmFuc2Zl
clNvdXJjZSA9IDEgPDwgMCwKKyAgICAgICAgVHJhbnNmZXJEZXN0aW5hdGlvbiA9IDEgPDwgMSwK
KyAgICAgICAgU2FtcGxlZCA9IDEgPDwgMiwKKyAgICAgICAgU3RvcmFnZSA9IDEgPDwgMywKKyAg
ICAgICAgT3V0cHV0QXR0YWNobWVudCA9IDEgPDwgNCwKKyAgICB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCmluZGV4IDBkOGMyMDgxODBjMGI1
MTZlYzhlOWQ1NmQzNjI3MmFmNTk5ZmEwZjUuLjg2OWFlOTAzOTZiMzJlZGNiNzE5NjYwYzcxYTFl
NTkyMWEzNWNmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KQEAgLTM5LDIyICszOSwyMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBhdXRvIHJlYWRPbmx5TWFz
ayA9IEdQVUJ1ZmZlclVzYWdlOjpJbmRleCB8IEdQVUJ1ZmZlclVzYWdlOjpWZXJ0ZXggfCBHUFVC
dWZmZXJVc2FnZTo6VW5pZm9ybSB8IEdQVUJ1ZmZlclVzYWdlOjpUcmFuc2ZlclNyYzsKK3N0YXRp
YyBjb25zdCBhdXRvIHJlYWRPbmx5RmxhZ3MgPSBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZs
YWdzPiB7IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6SW5kZXgsIEdQVUJ1ZmZlclVzYWdlOjpGbGFn
czo6VmVydGV4LCBHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OlVuaWZvcm0sIEdQVUJ1ZmZlclVzYWdl
OjpGbGFnczo6VHJhbnNmZXJTb3VyY2UgfTsKIAogCi1ib29sIEdQVUJ1ZmZlcjo6dmFsaWRhdGVC
dWZmZXJDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIGNvbnN0IEdQVUJ1ZmZlckRlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEdQVUJ1ZmZlcjo6dmFsaWRhdGVCdWZmZXJVc2FnZShj
b25zdCBHUFVEZXZpY2UmIGRldmljZSwgT3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz4g
dXNhZ2UpCiB7CiAgICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgewogICAgICAgICBM
T0coV2ViR1BVLCAiR1BVQnVmZmVyOjpjcmVhdGUoKTogSW52YWxpZCBHUFVEZXZpY2UhIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoKGRlc2NyaXB0b3IudXNhZ2Ug
JiBHUFVCdWZmZXJVc2FnZTo6TWFwV3JpdGUpICYmIChkZXNjcmlwdG9yLnVzYWdlICYgR1BVQnVm
ZmVyVXNhZ2U6Ok1hcFJlYWQpKSB7CisgICAgaWYgKHVzYWdlLmNvbnRhaW5zQWxsKHsgR1BVQnVm
ZmVyVXNhZ2U6OkZsYWdzOjpNYXBXcml0ZSwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpNYXBSZWFk
IH0pKSB7CiAgICAgICAgIExPRyhXZWJHUFUsICJHUFVCdWZmZXI6OmNyZWF0ZSgpOiBCdWZmZXIg
Y2Fubm90IGhhdmUgYm90aCBNQVBfUkVBRCBhbmQgTUFQX1dSSVRFIHVzYWdlISIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKChkZXNjcmlwdG9yLnVzYWdlICYgcmVh
ZE9ubHlNYXNrKSAmJiAoZGVzY3JpcHRvci51c2FnZSAmIEdQVUJ1ZmZlclVzYWdlOjpTdG9yYWdl
KSkgeworICAgIGlmICh1c2FnZS5jb250YWluc0FueShyZWFkT25seUZsYWdzKSAmJiAodXNhZ2Ug
JiBHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OlN0b3JhZ2UpKSB7CiAgICAgICAgIExPRyhXZWJHUFUs
ICJHUFVCdWZmZXI6OmNyZWF0ZSgpOiBCdWZmZXIgY2Fubm90IGhhdmUgYm90aCBTVE9SQUdFIGFu
ZCBhIHJlYWQtb25seSB1c2FnZSEiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAg
LTY0LDcgKzY0LDggQEAgYm9vbCBHUFVCdWZmZXI6OnZhbGlkYXRlQnVmZmVyQ3JlYXRlKGNvbnN0
IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVCdWZmZXJEZXMKIAogUmVmUHRyPEdQVUJ1ZmZl
cj4gR1BVQnVmZmVyOjp0cnlDcmVhdGUoUmVmPEdQVURldmljZT4mJiBkZXZpY2UsIEdQVUJ1ZmZl
ckRlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQogewotICAgIGlmICghdmFsaWRhdGVCdWZmZXJDcmVh
dGUoZGV2aWNlLmdldCgpLCBkZXNjcmlwdG9yKSkKKyAgICBhdXRvIHVzYWdlID0gT3B0aW9uU2V0
PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz46OmZyb21SYXcoZGVzY3JpcHRvci51c2FnZSk7CisgICAg
aWYgKCF2YWxpZGF0ZUJ1ZmZlclVzYWdlKGRldmljZS5nZXQoKSwgdXNhZ2UpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEZJWE1FOiBNZXRhbCBiZXN0IHByYWN0aWNlczogUmVh
ZC1vbmx5IG9uZS10aW1lLXVzZSBkYXRhIGxlc3MgdGhhbiA0IEtCIHNob3VsZCBub3QgYWxsb2Nh
dGUgYSBNVExCdWZmZXIgYW5kIGJlIHVzZWQgaW4gW01UTENvbW1hbmRFbmNvZGVyIHNldCpCeXRl
c10gY2FsbHMgaW5zdGVhZC4KQEAgLTcyLDcgKzczLDcgQEAgUmVmUHRyPEdQVUJ1ZmZlcj4gR1BV
QnVmZmVyOjp0cnlDcmVhdGUoUmVmPEdQVURldmljZT4mJiBkZXZpY2UsIEdQVUJ1ZmZlckRlc2Ny
aXAKICAgICBNVExSZXNvdXJjZU9wdGlvbnMgcmVzb3VyY2VPcHRpb25zID0gTVRMUmVzb3VyY2VD
UFVDYWNoZU1vZGVEZWZhdWx0Q2FjaGU7CiAKICAgICAvLyBNYXBwYWJsZSBidWZmZXJzIHVzZSBz
aGFyZWQgc3RvcmFnZSBhbGxvY2F0aW9uLgotICAgIHJlc291cmNlT3B0aW9ucyB8PSAoZGVzY3Jp
cHRvci51c2FnZSAmIChHUFVCdWZmZXJVc2FnZTo6TWFwV3JpdGUgfCBHUFVCdWZmZXJVc2FnZTo6
TWFwUmVhZCkpID8gTVRMUmVzb3VyY2VTdG9yYWdlTW9kZVNoYXJlZCA6IE1UTFJlc291cmNlU3Rv
cmFnZU1vZGVQcml2YXRlOworICAgIHJlc291cmNlT3B0aW9ucyB8PSB1c2FnZS5jb250YWluc0Fu
eSh7IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwV3JpdGUsIEdQVUJ1ZmZlclVzYWdlOjpGbGFn
czo6TWFwUmVhZCB9KSA/IE1UTFJlc291cmNlU3RvcmFnZU1vZGVTaGFyZWQgOiBNVExSZXNvdXJj
ZVN0b3JhZ2VNb2RlUHJpdmF0ZTsKIAogICAgIFJldGFpblB0cjxNVExCdWZmZXI+IG10bEJ1ZmZl
cjsKIApAQCAtODcsMTQgKzg4LDE0IEBAIFJlZlB0cjxHUFVCdWZmZXI+IEdQVUJ1ZmZlcjo6dHJ5
Q3JlYXRlKFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlLCBHUFVCdWZmZXJEZXNjcmlwCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVUJ1
ZmZlcihXVEZNb3ZlKG10bEJ1ZmZlciksIGRlc2NyaXB0b3IsIFdURk1vdmUoZGV2aWNlKSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdQVUJ1ZmZlcihXVEZNb3ZlKG10bEJ1ZmZlciksIGRl
c2NyaXB0b3IsIHVzYWdlLCBXVEZNb3ZlKGRldmljZSkpKTsKIH0KIAotR1BVQnVmZmVyOjpHUFVC
dWZmZXIoUmV0YWluUHRyPE1UTEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IEdQVUJ1ZmZlckRlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlKQorR1BVQnVmZmVyOjpH
UFVCdWZmZXIoUmV0YWluUHRyPE1UTEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IEdQVUJ1ZmZlckRl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIE9wdGlvblNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+IHVz
YWdlLCBSZWY8R1BVRGV2aWNlPiYmIGRldmljZSkKICAgICA6IG1fcGxhdGZvcm1CdWZmZXIoV1RG
TW92ZShidWZmZXIpKQogICAgICwgbV9kZXZpY2UoV1RGTW92ZShkZXZpY2UpKQogICAgICwgbV9i
eXRlTGVuZ3RoKGRlc2NyaXB0b3Iuc2l6ZSkKLSAgICAsIG1fdXNhZ2Uoc3RhdGljX2Nhc3Q8R1BV
QnVmZmVyVXNhZ2U6OkZsYWdzPihkZXNjcmlwdG9yLnVzYWdlKSkKKyAgICAsIG1fdXNhZ2UodXNh
Z2UpCiB7CiB9CiAKQEAgLTEwNSw3ICsxMDYsNyBAQCBHUFVCdWZmZXI6On5HUFVCdWZmZXIoKQog
CiBib29sIEdQVUJ1ZmZlcjo6aXNSZWFkT25seSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXNh
Z2UgJiByZWFkT25seU1hc2s7CisgICAgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnNBbnkocmVhZE9u
bHlGbGFncyk7CiB9CiAKIEdQVUJ1ZmZlcjo6U3RhdGUgR1BVQnVmZmVyOjpzdGF0ZSgpIGNvbnN0
CkBAIC0xMjAsMTggKzEyMSwyNCBAQCBHUFVCdWZmZXI6OlN0YXRlIEdQVUJ1ZmZlcjo6c3RhdGUo
KSBjb25zdAogCiB2b2lkIEdQVUJ1ZmZlcjo6c2V0U3ViRGF0YSh1bnNpZ25lZCBsb25nIG9mZnNl
dCwgY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgZGF0YSkKIHsKLSAgICBpZiAoIWlzVHJhbnNmZXJE
c3QoKSB8fCBzdGF0ZSgpICE9IFN0YXRlOjpVbm1hcHBlZCkgeworICAgIGlmICghaXNUcmFuc2Zl
ckRlc3RpbmF0aW9uKCkgfHwgc3RhdGUoKSAhPSBTdGF0ZTo6VW5tYXBwZWQpIHsKICAgICAgICAg
TE9HKFdlYkdQVSwgIkdQVUJ1ZmZlcjo6c2V0U3ViRGF0YSgpOiBJbnZhbGlkIG9wZXJhdGlvbiEi
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAo
b2Zmc2V0ICUgNCB8fCBkYXRhLmJ5dGVMZW5ndGgoKSAlIDQpIHsKKyAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVUJ1ZmZlcjo6c2V0U3ViRGF0YSgpOiBEYXRhIG11c3QgYmUgYWxpZ25lZCB0byBhIG11
bHRpcGxlIG9mIDQgYnl0ZXMhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwog
ICAgIGF1dG8gc3ViRGF0YUxlbmd0aCA9IGNoZWNrZWRTdW08dW5zaWduZWQgbG9uZz4oZGF0YS5i
eXRlTGVuZ3RoKCksIG9mZnNldCk7CiAgICAgaWYgKHN1YkRhdGFMZW5ndGguaGFzT3ZlcmZsb3dl
ZCgpIHx8IHN1YkRhdGFMZW5ndGgudW5zYWZlR2V0KCkgPiBtX2J5dGVMZW5ndGgpIHsKICAgICAg
ICAgTE9HKFdlYkdQVSwgIkdQVUJ1ZmZlcjo6c2V0U3ViRGF0YSgpOiBJbnZhbGlkIG9mZnNldCBv
ciBkYXRhIHNpemUhIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTog
QWRkIGFsaWdubWVudCBjaGVja3Mgb25jZSBzcGVjaWZpZWQuCi0KICAgICBpZiAobV9zdWJEYXRh
QnVmZmVycy5pc0VtcHR5KCkpIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwogICAgICAgICBtX3N1YkRhdGFCdWZmZXJzLmFwcGVuZChhZG9wdE5TKFttX3BsYXRmb3JtQnVm
ZmVyLmdldCgpLmRldmljZSBuZXdCdWZmZXJXaXRoTGVuZ3RoOm1fYnl0ZUxlbmd0aCBvcHRpb25z
Ok1UTFJlc291cmNlQ1BVQ2FjaGVNb2RlRGVmYXVsdENhY2hlXSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJN
ZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVD
b21tYW5kQnVmZmVyTWV0YWwubW0KaW5kZXggOTNlZGMxMWE4MGVjYjZhMDY0MThiNTJjMjYxNDYz
ODMyZjFmNzk2Yi4uY2JiYmYzZDI4MWQ1ZTllYjRmYTk1OTFmOWU4NGQ3NGEwMzI4NGYxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNv
bW1hbmRCdWZmZXJNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tCkBAIC0yOCwxMiArMjgsMTYgQEAK
IAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNpbXBvcnQgIkdQVUJ1ZmZlci5oIgogI2ltcG9ydCAi
R1BVRGV2aWNlLmgiCisjaW1wb3J0ICJHUFVFeHRlbnQzRC5oIgogI2ltcG9ydCAiR1BVUXVldWUu
aCIKKyNpbXBvcnQgIkdQVVRleHR1cmUuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKIAogI2ltcG9y
dCA8TWV0YWwvTWV0YWwuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+Cisj
aW1wb3J0IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01MCw3ICs1NCw3IEBAIFJlZlB0cjxHUFVDb21tYW5kQnVmZmVyPiBHUFVDb21tYW5kQnVm
ZmVyOjpjcmVhdGUoR1BVRGV2aWNlJiBkZXZpY2UpCiAKICAgICBhdXRvIG10bFF1ZXVlID0gZ3B1
Q29tbWFuZFF1ZXVlLT5wbGF0Zm9ybVF1ZXVlKCk7CiAKLSAgICBQbGF0Zm9ybUNvbW1hbmRCdWZm
ZXJTbWFydFB0ciBidWZmZXI7CisgICAgUmV0YWluUHRyPE1UTENvbW1hbmRCdWZmZXI+IGJ1ZmZl
cjsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtNjYsMTEgKzcwLDE0
MiBAQCBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gR1BVQ29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKEdQ
VURldmljZSYgZGV2aWNlKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVQ29tbWFuZEJ1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAotR1BVQ29tbWFuZEJ1ZmZlcjo6R1BVQ29tbWFuZEJ1
ZmZlcihQbGF0Zm9ybUNvbW1hbmRCdWZmZXJTbWFydFB0ciYmIGJ1ZmZlcikKK0dQVUNvbW1hbmRC
dWZmZXI6OkdQVUNvbW1hbmRCdWZmZXIoUmV0YWluUHRyPE1UTENvbW1hbmRCdWZmZXI+JiYgYnVm
ZmVyKQogICAgIDogbV9wbGF0Zm9ybUNvbW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKQogewog
fQogCitNVExCbGl0Q29tbWFuZEVuY29kZXIgKkdQVUNvbW1hbmRCdWZmZXI6OmJsaXRFbmNvZGVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ibGl0RW5jb2RlciA/IG1fYmxpdEVuY29kZXIuZ2V0
KCkgOiAobV9ibGl0RW5jb2RlciA9IFttX3BsYXRmb3JtQ29tbWFuZEJ1ZmZlciBibGl0Q29tbWFu
ZEVuY29kZXJdKS5nZXQoKTsKK30KKwordm9pZCBHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVy
VG9CdWZmZXIoUmVmPEdQVUJ1ZmZlcj4mJiBzcmMsIHVuc2lnbmVkIGxvbmcgc3JjT2Zmc2V0LCBS
ZWY8R1BVQnVmZmVyPiYmIGRzdCwgdW5zaWduZWQgbG9uZyBkc3RPZmZzZXQsIHVuc2lnbmVkIGxv
bmcgc2l6ZSkKK3sKKyAgICBpZiAoIXNyYy0+aXNUcmFuc2ZlclNvdXJjZSgpIHx8ICFkc3QtPmlz
VHJhbnNmZXJEZXN0aW5hdGlvbigpKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5k
QnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIoKTogSW52YWxpZCBvcGVyYXRpb24hIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKHNpemUgJSA0
IHx8IHNyY09mZnNldCAlIDQgfHwgZHN0T2Zmc2V0ICUgNCkgeworICAgICAgICBMT0coV2ViR1BV
LCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKCk6IENvcHkgbXVzdCBiZSBh
bGlnbmVkIHRvIGEgbXVsdGlwbGUgb2YgNCBieXRlcyEiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgorCisgICAgYXV0byBzcmNMZW5ndGggPSBjaGVja2VkU3VtPHVuc2lnbmVkIGxv
bmc+KHNpemUsIHNyY09mZnNldCk7CisgICAgYXV0byBkc3RMZW5ndGggPSBjaGVja2VkU3VtPHVu
c2lnbmVkIGxvbmc+KHNpemUsIGRzdE9mZnNldCk7CisgICAgaWYgKHNyY0xlbmd0aC5oYXNPdmVy
Zmxvd2VkKCkgfHwgZHN0TGVuZ3RoLmhhc092ZXJmbG93ZWQoKQorICAgICAgICB8fCBzcmNMZW5n
dGgudW5zYWZlR2V0KCkgPiBzcmMtPmJ5dGVMZW5ndGgoKSB8fCBkc3RMZW5ndGgudW5zYWZlR2V0
KCkgPiBkc3QtPmJ5dGVMZW5ndGgoKSkgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFu
ZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKCk6IEludmFsaWQgb2Zmc2V0IG9yIGNvcHkgc2l6
ZSEiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKKworICAgIFtibGl0RW5jb2RlcigpCisgICAgICAgIGNvcHlGcm9tQnVmZmVyOnNy
Yy0+cGxhdGZvcm1CdWZmZXIoKQorICAgICAgICBzb3VyY2VPZmZzZXQ6c3JjT2Zmc2V0CisgICAg
ICAgIHRvQnVmZmVyOmRzdC0+cGxhdGZvcm1CdWZmZXIoKQorICAgICAgICBkZXN0aW5hdGlvbk9m
ZnNldDpkc3RPZmZzZXQKKyAgICAgICAgc2l6ZTpzaXplXTsKKworICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CisKKyAgICB1c2VCdWZmZXIoV1RGTW92ZShzcmMpKTsKKyAgICB1c2VCdWZm
ZXIoV1RGTW92ZShkc3QpKTsKK30KKwordm9pZCBHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVy
VG9UZXh0dXJlKGNvbnN0IEdQVUJ1ZmZlckNvcHlWaWV3JiBzcmNCdWZmZXIsIGNvbnN0IEdQVVRl
eHR1cmVDb3B5VmlldyYgZHN0VGV4dHVyZSwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCit7Cisg
ICAgaWYgKCFzcmNCdWZmZXIuYnVmZmVyLT5pc1RyYW5zZmVyU291cmNlKCkgfHwgIWRzdFRleHR1
cmUudGV4dHVyZS0+aXNUcmFuc2ZlckRlc3RpbmF0aW9uKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQ
VSwgIkdQVUNvbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSgpOiBJbnZhbGlkIG9wZXJh
dGlvbiEiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBBZGQgTWV0
YWwgdmFsaWRhdGlvbj8KKworICAgIC8vIEdQVUJ1ZmZlckNvcHlWaWV3OjpvZmZzZXQ6IFRoZSBs
b2NhdGlvbiBtdXN0IGJlIGFsaWduZWQgdG8gdGhlIHNpemUgb2YgdGhlIGRlc3RpbmF0aW9uIHRl
eHR1cmUncyBwaXhlbCBmb3JtYXQuIFRoZSB2YWx1ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhl
IGRlc3RpbmF0aW9uIHRleHR1cmUncyBwaXhlbCBzaXplLCBpbiBieXRlcy4KKworICAgIC8vIEdQ
VUJ1ZmZlckNvcHlWaWV3Ojpyb3dQaXRjaDogVGhlIHZhbHVlIG11c3QgYmUgYSBtdWx0aXBsZSBv
ZiB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSdzIHBpeGVsIHNpemUsIGluIGJ5dGVzLiBUaGUgdmFs
dWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMzIsNzY3IG11bHRpcGxpZWQgYnkgdGhl
IGRlc3RpbmF0aW9uIHRleHR1cmXigJlzIHBpeGVsIHNpemUuCisKKyAgICAvLyBHUFVCdWZmZXJD
b3B5Vmlldzo6aW1hZ2VIZWlnaHQ6IFRoZSB2YWx1ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhl
IGRlc3RpbmF0aW9uIHRleHR1cmUncyBwaXhlbCBzaXplLCBpbiBieXRlcy4KKworICAgIC8vIEdQ
VUV4dGVudDNEOiBXaGVuIHlvdSBjb3B5IHRvIGEgMUQgdGV4dHVyZSwgaGVpZ2h0IGFuZCBkZXB0
aCBtdXN0IGJlIDEuIFdoZW4geW91IGNvcHkgdG8gYSAyRCB0ZXh0dXJlLCBkZXB0aCBtdXN0IGJl
IDEuCisKKyAgICAvLyBHUFVUZXh0dXJlQ29weVZpZXc6OnRleHR1cmU6IFRoZSB2YWx1ZSBtdXN0
IG5vdCBiZSBhIGZyYW1lYnVmZmVyT25seSB0ZXh0dXJlIGFuZCBtdXN0IG5vdCBoYXZlIGEgUFZS
VEMgcGl4ZWwgZm9ybWF0LgorCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisg
ICAgW2JsaXRFbmNvZGVyKCkKKyAgICAgICAgY29weUZyb21CdWZmZXI6c3JjQnVmZmVyLmJ1ZmZl
ci0+cGxhdGZvcm1CdWZmZXIoKQorICAgICAgICBzb3VyY2VPZmZzZXQ6c3JjQnVmZmVyLm9mZnNl
dAorICAgICAgICBzb3VyY2VCeXRlc1BlclJvdzpzcmNCdWZmZXIucm93UGl0Y2gKKyAgICAgICAg
c291cmNlQnl0ZXNQZXJJbWFnZTpzcmNCdWZmZXIuaW1hZ2VIZWlnaHQKKyAgICAgICAgc291cmNl
U2l6ZTpNVExTaXplTWFrZShzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6ZS5kZXB0aCkKKyAg
ICAgICAgdG9UZXh0dXJlOmRzdFRleHR1cmUudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkKKyAg
ICAgICAgZGVzdGluYXRpb25TbGljZTpkc3RUZXh0dXJlLmFycmF5TGF5ZXIKKyAgICAgICAgZGVz
dGluYXRpb25MZXZlbDpkc3RUZXh0dXJlLm1pcExldmVsCisgICAgICAgIGRlc3RpbmF0aW9uT3Jp
Z2luOk1UTE9yaWdpbk1ha2UoZHN0VGV4dHVyZS5vcmlnaW4ueCwgZHN0VGV4dHVyZS5vcmlnaW4u
eSwgZHN0VGV4dHVyZS5vcmlnaW4ueildOworCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKKworICAgIHVzZUJ1ZmZlcihzcmNCdWZmZXIuYnVmZmVyLmNvcHlSZWYoKSk7Cit9CisKK3Zv
aWQgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBHUFVUZXh0dXJl
Q29weVZpZXcmIHNyY1RleHR1cmUsIGNvbnN0IEdQVUJ1ZmZlckNvcHlWaWV3JiBkc3RCdWZmZXIs
IGNvbnN0IEdQVUV4dGVudDNEJiBzaXplKQoreworICAgIGlmICghc3JjVGV4dHVyZS50ZXh0dXJl
LT5pc1RyYW5zZmVyU291cmNlKCkgfHwgIWRzdEJ1ZmZlci5idWZmZXItPmlzVHJhbnNmZXJEZXN0
aW5hdGlvbigpKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVDb21tYW5kQnVmZmVyOjpjb3B5
VGV4dHVyZVRvQnVmZmVyKCk6IEludmFsaWQgb3BlcmF0aW9uISIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gRklYTUU6IEFkZCBNZXRhbCB2YWxpZGF0aW9uPworCisgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgW2JsaXRFbmNvZGVyKCkKKyAgICAgICAg
Y29weUZyb21UZXh0dXJlOnNyY1RleHR1cmUudGV4dHVyZS0+cGxhdGZvcm1UZXh0dXJlKCkKKyAg
ICAgICAgc291cmNlU2xpY2U6c3JjVGV4dHVyZS5hcnJheUxheWVyCisgICAgICAgIHNvdXJjZUxl
dmVsOnNyY1RleHR1cmUubWlwTGV2ZWwKKyAgICAgICAgc291cmNlT3JpZ2luOk1UTE9yaWdpbk1h
a2Uoc3JjVGV4dHVyZS5vcmlnaW4ueCwgc3JjVGV4dHVyZS5vcmlnaW4ueSwgc3JjVGV4dHVyZS5v
cmlnaW4ueikKKyAgICAgICAgc291cmNlU2l6ZTpNVExTaXplTWFrZShzaXplLndpZHRoLCBzaXpl
LmhlaWdodCwgc2l6ZS5kZXB0aCkKKyAgICAgICAgdG9CdWZmZXI6ZHN0QnVmZmVyLmJ1ZmZlci0+
cGxhdGZvcm1CdWZmZXIoKQorICAgICAgICBkZXN0aW5hdGlvbk9mZnNldDpkc3RCdWZmZXIub2Zm
c2V0CisgICAgICAgIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3c6ZHN0QnVmZmVyLnJvd1BpdGNoCisg
ICAgICAgIGRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZTpkc3RCdWZmZXIuaW1hZ2VIZWlnaHRdOwor
CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIHVzZUJ1ZmZlcihkc3RCdWZm
ZXIuYnVmZmVyLmNvcHlSZWYoKSk7Cit9CisKK3ZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRl
eHR1cmVUb1RleHR1cmUoY29uc3QgR1BVVGV4dHVyZUNvcHlWaWV3JiBzcmMsIGNvbnN0IEdQVVRl
eHR1cmVDb3B5VmlldyYgZHN0LCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKK3sKKyAgICBpZiAo
IXNyYy50ZXh0dXJlLT5pc1RyYW5zZmVyU291cmNlKCkgfHwgIWRzdC50ZXh0dXJlLT5pc1RyYW5z
ZmVyRGVzdGluYXRpb24oKSkgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZl
cjo6Y29weVRleHR1cmVUb1RleHR1cmUoKTogSW52YWxpZCBvcGVyYXRpb24hIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogQWRkIE1ldGFsIHZhbGlkYXRpb24/CisK
KyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBbYmxpdEVuY29kZXIoKQor
ICAgICAgICBjb3B5RnJvbVRleHR1cmU6c3JjLnRleHR1cmUtPnBsYXRmb3JtVGV4dHVyZSgpCisg
ICAgICAgIHNvdXJjZVNsaWNlOnNyYy5hcnJheUxheWVyCisgICAgICAgIHNvdXJjZUxldmVsOnNy
Yy5taXBMZXZlbAorICAgICAgICBzb3VyY2VPcmlnaW46TVRMT3JpZ2luTWFrZShzcmMub3JpZ2lu
LngsIHNyYy5vcmlnaW4ueSwgc3JjLm9yaWdpbi56KQorICAgICAgICBzb3VyY2VTaXplOk1UTFNp
emVNYWtlKHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBzaXplLmRlcHRoKQorICAgICAgICB0b1Rl
eHR1cmU6ZHN0LnRleHR1cmUtPnBsYXRmb3JtVGV4dHVyZSgpCisgICAgICAgIGRlc3RpbmF0aW9u
U2xpY2U6c3JjLmFycmF5TGF5ZXIKKyAgICAgICAgZGVzdGluYXRpb25MZXZlbDpzcmMubWlwTGV2
ZWwKKyAgICAgICAgZGVzdGluYXRpb25PcmlnaW46TVRMT3JpZ2luTWFrZShkc3Qub3JpZ2luLngs
IGRzdC5vcmlnaW4ueSwgZHN0Lm9yaWdpbi56KV07CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbQppbmRleCA5MWJiZDVhNjBlNDcyYWY5NzAxYjc5
OTlhOTZjMjI0MDIyZDJmMjAwLi5iOTllM2M2YWE2ZTgzZjBjZjE2N2VmMTAyZDM1ZGE2Nzk5ZGM2
YjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVUXVldWVNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVUXVldWVNZXRhbC5tbQpAQCAtNzIsNyArNzIsMTEgQEAgR1BVUXVldWU6
OkdQVVF1ZXVlKFBsYXRmb3JtUXVldWVTbWFydFB0ciYmIHF1ZXVlKQogCiB2b2lkIEdQVVF1ZXVl
OjpzdWJtaXQoVmVjdG9yPFJlZjxjb25zdCBHUFVDb21tYW5kQnVmZmVyPj4mJiBjb21tYW5kQnVm
ZmVycykKIHsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKICAgICBmb3IgKGF1
dG8mIGNvbW1hbmRCdWZmZXIgOiBjb21tYW5kQnVmZmVycykgeworICAgICAgICBpZiAoY29tbWFu
ZEJ1ZmZlci0+YmxpdEVuY29kZXIoKSkKKyAgICAgICAgICAgIFtjb21tYW5kQnVmZmVyLT5ibGl0
RW5jb2RlcigpIGVuZEVuY29kaW5nXTsKICAgICAgICAgLy8gUHJldmVudCBhbnkgYnVmZmVyIG1h
cHBpbmcgY2FsbGJhY2tzIGZyb20gZXhlY3V0aW5nIHVudGlsIGNvbW1hbmQgYnVmZmVyIGlzIGNv
bXBsZXRlLgogICAgICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGNvbW1hbmRCdWZmZXItPnVzZWRC
dWZmZXJzKCkpIHsKICAgICAgICAgICAgIGlmIChidWZmZXItPnN0YXRlKCkgIT0gR1BVQnVmZmVy
OjpTdGF0ZTo6VW5tYXBwZWQpIHsKQEAgLTg0LDYgKzg4LDggQEAgdm9pZCBHUFVRdWV1ZTo6c3Vi
bWl0KFZlY3RvcjxSZWY8Y29uc3QgR1BVQ29tbWFuZEJ1ZmZlcj4+JiYgY29tbWFuZEJ1ZmZlcnMp
CiAKICAgICAgICAgW2NvbW1hbmRCdWZmZXItPnBsYXRmb3JtQ29tbWFuZEJ1ZmZlcigpIGNvbW1p
dF07CiAgICAgfQorCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAogU3RyaW5n
IEdQVVF1ZXVlOjpsYWJlbCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KaW5k
ZXggMTU1MDJlOWNkNmI2YzUzODcwZWM2YjNkYWRmMmY4OGNjNjMwMGI5ZC4uZDJjYjgyNGVhZDQ4
OWE3NmNiZmQ3MmNiNWIyY2NkZWYzYWYwOGY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRh
bC5tbQpAQCAtMTE3LDcgKzExNyw3IEBAIFJlZlB0cjxHUFVUZXh0dXJlPiBHUFVTd2FwQ2hhaW46
OmdldE5leHRUZXh0dXJlKCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
cmV0dXJuIEdQVVRleHR1cmU6OmNyZWF0ZShXVEZNb3ZlKG10bFRleHR1cmUpKTsKKyAgICByZXR1
cm4gR1BVVGV4dHVyZTo6Y3JlYXRlKFdURk1vdmUobXRsVGV4dHVyZSksIEdQVVRleHR1cmVVc2Fn
ZTo6RmxhZ3M6Ok91dHB1dEF0dGFjaG1lbnQpOwogfQogCiB2b2lkIEdQVVN3YXBDaGFpbjo6cHJl
c2VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQppbmRleCBiNzkzZTAyNWU1YjNiYWU0ZmE3
MTRmNDg5MzAwNDI1NjYxMzMxNWEyLi4xYTE1N2JjNjIzYjA0MGFkYmFiYjlmZjk3Mzg0NDk2NmZm
YWQyYTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KQEAgLTU0LDI1ICs1NCwzMiBAQCBz
dGF0aWMgTVRMVGV4dHVyZVR5cGUgbXRsVGV4dHVyZVR5cGVGb3JHUFVUZXh0dXJlRGVzY3JpcHRv
cihjb25zdCBHUFVUZXh0dXJlRGVzYwogICAgIH0KIH0KIAotc3RhdGljIE9wdGlvbmFsPE1UTFRl
eHR1cmVVc2FnZT4gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3MoR1BVVGV4
dHVyZVVzYWdlRmxhZ3MgZmxhZ3MpCitzdGF0aWMgT3B0aW9uYWw8TVRMVGV4dHVyZVVzYWdlPiBt
dGxUZXh0dXJlVXNhZ2VGb3JHUFVUZXh0dXJlVXNhZ2VGbGFncyhPcHRpb25TZXQ8R1BVVGV4dHVy
ZVVzYWdlOjpGbGFncz4gZmxhZ3MsIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSkKIHsK
LSAgICBNVExUZXh0dXJlVXNhZ2UgdXNhZ2UgPSBNVExUZXh0dXJlVXNhZ2VVbmtub3duOwotCi0g
ICAgaWYgKGZsYWdzICYgR1BVVGV4dHVyZVVzYWdlOjpTdG9yYWdlKQotICAgICAgICB1c2FnZSB8
PSBNVExUZXh0dXJlVXNhZ2VTaGFkZXJXcml0ZSB8IE1UTFRleHR1cmVVc2FnZVNoYWRlclJlYWQg
fCBNVExUZXh0dXJlVXNhZ2VQaXhlbEZvcm1hdFZpZXc7CisjaWYgTE9HX0RJU0FCTEVECisgICAg
VU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7CisjZW5kaWYKKyAgICBpZiAoZmxhZ3MuY29udGFp
bnNBbnkoeyBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpUcmFuc2ZlclNvdXJjZSwgR1BVVGV4dHVy
ZVVzYWdlOjpGbGFnczo6U2FtcGxlZCB9KSAmJiAoZmxhZ3MgJiBHUFVUZXh0dXJlVXNhZ2U6OkZs
YWdzOjpTdG9yYWdlKSkgeworICAgICAgICBMT0coV2ViR1BVLCAiJXM6IFRleHR1cmUgY2Fubm90
IGhhdmUgYm90aCBTVE9SQUdFIGFuZCBhIHJlYWQtb25seSB1c2FnZSEiLCBmdW5jdGlvbk5hbWUp
OworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KIAotICAgIGlmIChmbGFncyAm
IEdQVVRleHR1cmVVc2FnZTo6U2FtcGxlZCkgewotICAgICAgICAvLyBTQU1QTEVEIGlzIGEgcmVh
ZC1vbmx5IHVzYWdlLgotICAgICAgICBpZiAoZmxhZ3MgJiBHUFVUZXh0dXJlVXNhZ2U6OlN0b3Jh
Z2UpCisgICAgaWYgKGZsYWdzICYgR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6T3V0cHV0QXR0YWNo
bWVudCkgeworICAgICAgICBpZiAoZmxhZ3MuY29udGFpbnNBbnkoeyBHUFVUZXh0dXJlVXNhZ2U6
OkZsYWdzOjpTdG9yYWdlLCBHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzOjpTYW1wbGVkIH0pKSB7Cisg
ICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IFRleHR1cmUgY2Fubm90IGhhdmUgT1VUUFVUX0FU
VEFDSE1FTlQgdXNhZ2Ugd2l0aCBTVE9SQUdFIG9yIFNBTVBMRUQgdXNhZ2VzISIsIGZ1bmN0aW9u
TmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9CiAKLSAg
ICAgICAgdXNhZ2UgfD0gTVRMVGV4dHVyZVVzYWdlU2hhZGVyUmVhZCB8IE1UTFRleHR1cmVVc2Fn
ZVBpeGVsRm9ybWF0VmlldzsKKyAgICAgICAgcmV0dXJuIE1UTFRleHR1cmVVc2FnZVJlbmRlclRh
cmdldCB8IE1UTFRleHR1cmVVc2FnZVBpeGVsRm9ybWF0VmlldzsKICAgICB9CiAKLSAgICBpZiAo
ZmxhZ3MgJiBHUFVUZXh0dXJlVXNhZ2U6Ok91dHB1dEF0dGFjaG1lbnQpCi0gICAgICAgIHVzYWdl
IHw9IE1UTFRleHR1cmVVc2FnZVJlbmRlclRhcmdldDsKKyAgICBpZiAoZmxhZ3MgJiBHUFVUZXh0
dXJlVXNhZ2U6OkZsYWdzOjpTdG9yYWdlKQorICAgICAgICByZXR1cm4gTVRMVGV4dHVyZVVzYWdl
U2hhZGVyV3JpdGUgfCBNVExUZXh0dXJlVXNhZ2VTaGFkZXJSZWFkIHwgTVRMVGV4dHVyZVVzYWdl
UGl4ZWxGb3JtYXRWaWV3OworCisgICAgaWYgKGZsYWdzICYgR1BVVGV4dHVyZVVzYWdlOjpGbGFn
czo6U2FtcGxlZCkKKyAgICAgICAgcmV0dXJuIE1UTFRleHR1cmVVc2FnZVNoYWRlclJlYWQgfCBN
VExUZXh0dXJlVXNhZ2VQaXhlbEZvcm1hdFZpZXc7CiAKLSAgICByZXR1cm4gdXNhZ2U7CisgICAg
cmV0dXJuIE1UTFRleHR1cmVVc2FnZVVua25vd247CiB9CiAKIHN0YXRpYyBNVExTdG9yYWdlTW9k
ZSBzdG9yYWdlTW9kZUZvclBpeGVsRm9ybWF0QW5kU2FtcGxlQ291bnQoTVRMUGl4ZWxGb3JtYXQg
Zm9ybWF0LCB1bnNpZ25lZCBsb25nIHNhbXBsZXMpCkBAIC04OCwxMiArOTUsOCBAQCBzdGF0aWMg
TVRMU3RvcmFnZU1vZGUgc3RvcmFnZU1vZGVGb3JQaXhlbEZvcm1hdEFuZFNhbXBsZUNvdW50KE1U
TFBpeGVsRm9ybWF0IGZvcgogI2VuZGlmCiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8TVRMVGV4dHVy
ZURlc2NyaXB0b3I+IHRyeUNyZWF0ZU10bFRleHR1cmVEZXNjcmlwdG9yKGNvbnN0IGNoYXIqIGNv
bnN0IGZ1bmN0aW9uTmFtZSwgY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9y
KQorc3RhdGljIFJldGFpblB0cjxNVExUZXh0dXJlRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlTXRsVGV4
dHVyZURlc2NyaXB0b3IoY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lLCBjb25zdCBHUFVU
ZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6
RmxhZ3M+IHVzYWdlKQogewotI2lmIExPR19ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShmdW5j
dGlvbk5hbWUpOwotI2VuZGlmCi0KICAgICBSZXRhaW5QdHI8TVRMVGV4dHVyZURlc2NyaXB0b3I+
IG10bERlc2NyaXB0b3I7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC0x
MTAsMTEgKzExMyw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8TVRMVGV4dHVyZURlc2NyaXB0b3I+IHRy
eUNyZWF0ZU10bFRleHR1cmVEZXNjcmlwdG9yKGNvbnN0IGNoYXIqCiAgICAgLy8gRklYTUU6IEFk
ZCBtb3JlIHZhbGlkYXRpb24gYXMgY29uc3RyYWludHMgYXJlIGFkZGVkIHRvIHNwZWMuCiAgICAg
YXV0byBwaXhlbEZvcm1hdCA9IHN0YXRpY19jYXN0PE1UTFBpeGVsRm9ybWF0PihwbGF0Zm9ybVRl
eHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KGRlc2NyaXB0b3IuZm9ybWF0KSk7CiAKLSAg
ICBhdXRvIHVzYWdlID0gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3MoZGVz
Y3JpcHRvci51c2FnZSk7Ci0gICAgaWYgKCF1c2FnZSkgewotICAgICAgICBMT0coV2ViR1BVLCAi
JXM6IEludmFsaWQgR1BVVGV4dHVyZVVzYWdlRmxhZ3MhIiwgZnVuY3Rpb25OYW1lKTsKKyAgICBh
dXRvIG10bFVzYWdlID0gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3ModXNh
Z2UsIGZ1bmN0aW9uTmFtZSk7CisgICAgaWYgKCFtdGxVc2FnZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgfQogCiAgICAgYXV0byBzdG9yYWdlTW9kZSA9IHN0b3JhZ2VNb2RlRm9yUGl4
ZWxGb3JtYXRBbmRTYW1wbGVDb3VudChwaXhlbEZvcm1hdCwgZGVzY3JpcHRvci5zYW1wbGVDb3Vu
dCk7CiAKQEAgLTEyOCw3ICsxMjksNyBAQCBzdGF0aWMgUmV0YWluUHRyPE1UTFRleHR1cmVEZXNj
cmlwdG9yPiB0cnlDcmVhdGVNdGxUZXh0dXJlRGVzY3JpcHRvcihjb25zdCBjaGFyKgogICAgIFtt
dGxEZXNjcmlwdG9yIHNldFNhbXBsZUNvdW50OmRlc2NyaXB0b3Iuc2FtcGxlQ291bnRdOwogICAg
IFttdGxEZXNjcmlwdG9yIHNldFRleHR1cmVUeXBlOm10bFRleHR1cmVUeXBlRm9yR1BVVGV4dHVy
ZURlc2NyaXB0b3IoZGVzY3JpcHRvcildOwogICAgIFttdGxEZXNjcmlwdG9yIHNldFBpeGVsRm9y
bWF0OnBpeGVsRm9ybWF0XTsKLSAgICBbbXRsRGVzY3JpcHRvciBzZXRVc2FnZToqdXNhZ2VdOwor
ICAgIFttdGxEZXNjcmlwdG9yIHNldFVzYWdlOiptdGxVc2FnZV07CiAKICAgICBbbXRsRGVzY3Jp
cHRvciBzZXRTdG9yYWdlTW9kZTpzdG9yYWdlTW9kZV07CiAKQEAgLTEzNyw3ICsxMzgsNyBAQCBz
dGF0aWMgUmV0YWluUHRyPE1UTFRleHR1cmVEZXNjcmlwdG9yPiB0cnlDcmVhdGVNdGxUZXh0dXJl
RGVzY3JpcHRvcihjb25zdCBjaGFyKgogICAgIHJldHVybiBtdGxEZXNjcmlwdG9yOwogfQogCi1S
ZWZQdHI8R1BVVGV4dHVyZT4gR1BVVGV4dHVyZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYg
ZGV2aWNlLCBHUFVUZXh0dXJlRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCitSZWZQdHI8R1BVVGV4
dHVyZT4gR1BVVGV4dHVyZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25z
dCBHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBjb25zdCBjaGFyKiBj
b25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVVGV4dHVyZTo6dHJ5Q3JlYXRlKCkiOwogCkBAIC0xNDYs
NyArMTQ3LDggQEAgUmVmUHRyPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OnRyeUNyZWF0ZShjb25z
dCBHUFVEZXZpY2UmIGRldmljZSwgR1BVVGV4dHVyZURlc2MKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCi0gICAgYXV0byBtdGxEZXNjcmlwdG9yID0gdHJ5Q3JlYXRlTXRsVGV4dHVy
ZURlc2NyaXB0b3IoZnVuY3Rpb25OYW1lLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKKyAgICBhdXRv
IHVzYWdlID0gT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+Ojpmcm9tUmF3KGRlc2Ny
aXB0b3IudXNhZ2UpOworICAgIGF1dG8gbXRsRGVzY3JpcHRvciA9IHRyeUNyZWF0ZU10bFRleHR1
cmVEZXNjcmlwdG9yKGZ1bmN0aW9uTmFtZSwgZGVzY3JpcHRvciwgdXNhZ2UpOwogICAgIGlmICgh
bXRsRGVzY3JpcHRvcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE2MywxNiArMTY1
LDE3IEBAIFJlZlB0cjxHUFVUZXh0dXJlPiBHUFVUZXh0dXJlOjp0cnlDcmVhdGUoY29uc3QgR1BV
RGV2aWNlJiBkZXZpY2UsIEdQVVRleHR1cmVEZXNjCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVVGV4dHVyZShXVEZNb3ZlKG10bFRl
eHR1cmUpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVUZXh0dXJlKFdURk1vdmUobXRs
VGV4dHVyZSksIHVzYWdlKSk7CiB9CiAKLVJlZjxHUFVUZXh0dXJlPiBHUFVUZXh0dXJlOjpjcmVh
dGUoUGxhdGZvcm1UZXh0dXJlU21hcnRQdHImJiB0ZXh0dXJlKQorUmVmPEdQVVRleHR1cmU+IEdQ
VVRleHR1cmU6OmNyZWF0ZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmIHRleHR1cmUsIE9wdGlv
blNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBHUFVUZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBHUFVUZXh0dXJlKFdURk1vdmUodGV4dHVyZSksIHVzYWdlKSk7CiB9CiAKLUdQVVRl
eHR1cmU6OkdQVVRleHR1cmUoUGxhdGZvcm1UZXh0dXJlU21hcnRQdHImJiB0ZXh0dXJlKQorR1BV
VGV4dHVyZTo6R1BVVGV4dHVyZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmIHRleHR1cmUsIE9w
dGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZSkKICAgICA6IG1fcGxhdGZvcm1U
ZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCisgICAgLCBtX3VzYWdlKHVzYWdlKQogewogfQogCkBA
IC0xOTEsNyArMTk0LDcgQEAgUmVmUHRyPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OmNyZWF0ZURl
ZmF1bHRUZXh0dXJlVmlldygpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IHJldHVybiBHUFVUZXh0dXJlOjpjcmVhdGUoV1RGTW92ZSh0ZXh0dXJlKSk7CisgICAgcmV0dXJu
IEdQVVRleHR1cmU6OmNyZWF0ZShXVEZNb3ZlKHRleHR1cmUpLCBtX3VzYWdlKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI1N2ZlZWRhYzY0MDQ4NGEzZDE0MDgwN2VjNjli
ODc4NzBjNGEwM2MuLjU3MGEzZWI3ZTE2YmYyZWU3NTZkNjhiN2I2NGM3MzJlYjNlMmI1ZjEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOS0wMy0wNCAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5A
YXBwbGUuY29tPgorCisgICAgICAgIFtXZWIgR1BVXSBCbGl0dGluZyBmdW5jdGlvbiBwcm90b3R5
cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUy
MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NTM4OTAyPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBiYXNpYyB0ZXN0IHRvIGNvcHkgZGF0
YSB3aXRoIGFsbCBuZXcgYmxpdHRpbmcgZnVuY3Rpb25zIGFuZCB2ZXJpZnkgdGhlIHJlc3VsdC4K
KworICAgICAgICAqIHdlYmdwdS9ibGl0LWNvbW1hbmRzLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHdlYmdwdS9ibGl0LWNvbW1hbmRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
YmdwdS9idWZmZXItY29tbWFuZC1idWZmZXItcmFjZXMuaHRtbDogRml4ZWQgdHlwby4KKyAgICAg
ICAgKiB3ZWJncHUvcmVzb3VyY2VzL2dyZWVuLTQwMC5wbmc6IEFkZGVkLgorCiAyMDE5LTAyLTI4
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgVXNl
LWFmdGVyLW1vdmUgaW4gUmVuZGVyQ29tYmluZVRleHQ6OmNvbWJpbmVUZXh0SWZOZWVkZWQoKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODg2ZjEzZTgxMjAzOTdhNWNjNjMzNmM5ZTJhNDg1ZTc3OGJhOTkzMgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRzLWV4cGVjdGVkLmh0bWwK
QEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8dGl0bGU+SFRNTCBSZWZlcmVuY2UgRmlsZTwvdGl0bGU+Cis8cD5QYXNzIGlmIHNxdWFyZSBj
YW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Cis8Y2FudmFzIHdpZHRoPSI0MDAi
IGhlaWdodD0iNDAwIj48L2NhbnZhcz4KKzxzY3JpcHQ+Citjb25zdCBjYW52YXMgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCJjYW52YXMiKTsKK2NvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29u
dGV4dCgnMmQnKTsKKworY29udGV4dC5maWxsU3R5bGUgPSAncmdiKDAsIDI1NSwgMCknOworY29u
dGV4dC5maWxsUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworPC9zY3Jp
cHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L2JsaXQtY29tbWFuZHMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1h
bmRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE5NDg4OTgzNWZjZWQ0MmZkZDFmYzVkZGU3YzNlODBiMzA3
ZTJjYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9ibGl0LWNvbW1hbmRz
Lmh0bWwKQEAgLTAsMCArMSwxMTIgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3Qt
cnVubmVyIFsgZXhwZXJpbWVudGFsOldlYkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPkJhc2ljIEJsaXR0aW5nPC90aXRsZT4KKzxtZXRhIG5hbWU9
ImFzc2VydCIgY29udGVudD0iQmxpdCBvcGVyYXRpb25zIGNvcHkgYSBncmVlbiBjYW52YXMuIj4K
KzxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9ImJsaXQtY29tbWFuZHMtZXhwZWN0ZWQuaHRtbCI+Cis8
cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMgYmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+Cis8
Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KKzxib2R5PgorPHNjcmlw
dCBzcmM9ImpzL3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworYXN5
bmMgZnVuY3Rpb24gbG9hZEltYWdlKCkgeworICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7
CisgICAgaW1hZ2Uuc3JjID0gInJlc291cmNlcy9ncmVlbi00MDAucG5nIjsKKyAgICBpbWFnZS5v
bmxvYWQgPSAoKSA9PiB7IHRlc3QoaW1hZ2UpOyB9Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3Qo
aW1hZ2UpIHsKKyAgICBjb25zdCBkZXZpY2UgPSBhd2FpdCBnZXRCYXNpY0RldmljZSgpOworCisg
ICAgY29uc3QgY2FudmFzMmQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsKKyAg
ICBjYW52YXMyZC53aWR0aCA9IGltYWdlLndpZHRoOworICAgIGNhbnZhczJkLmhlaWdodCA9IGlt
YWdlLmhlaWdodDsKKyAgICBjb25zdCBjb250ZXh0MmQgPSBjYW52YXMyZC5nZXRDb250ZXh0KCcy
ZCcpOworICAgIGNvbnRleHQyZC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApOworCisgICAgY29uc3Qg
aW1hZ2VEYXRhID0gY29udGV4dDJkLmdldEltYWdlRGF0YSgwLCAwLCBpbWFnZS53aWR0aCwgaW1h
Z2UuaGVpZ2h0KTsKKworICAgIGNvbnN0IGJ1ZmZlckRlc2NyaXB0b3IgPSB7CisgICAgICAgIHNp
emU6IGltYWdlRGF0YS5kYXRhLmJ5dGVMZW5ndGgsCisgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJV
c2FnZS5UUkFOU0ZFUl9TUkMgfCBHUFVCdWZmZXJVc2FnZS5UUkFOU0ZFUl9EU1QKKyAgICB9Owor
ICAgIGNvbnN0IGJ1ZmZlckEgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKGJ1ZmZlckRlc2NyaXB0b3Ip
OworICAgIGJ1ZmZlckEuc2V0U3ViRGF0YSgwLCBpbWFnZURhdGEuZGF0YS5idWZmZXIpOworCisg
ICAgY29uc3QgYnVmZmVyQiA9IGRldmljZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVzY3JpcHRvcik7
CisgICAgY29uc3QgYnVmZmVyVmlld0IgPSB7CisgICAgICAgIGJ1ZmZlcjogYnVmZmVyQiwKKyAg
ICAgICAgb2Zmc2V0OiAwLAorICAgICAgICByb3dQaXRjaDogMCwKKyAgICAgICAgaW1hZ2VIZWln
aHQ6IDAKKyAgICB9OworCisgICAgY29uc3QgdGV4dHVyZVNpemUgPSB7CisgICAgICAgIHdpZHRo
OiBpbWFnZS53aWR0aCwKKyAgICAgICAgaGVpZ2h0OiBpbWFnZS5oZWlnaHQsCisgICAgICAgIGRl
cHRoOiAxCisgICAgfTsKKyAgICBjb25zdCB0ZXh0dXJlRGVzY3JpcHRvciA9IHsKKyAgICAgICAg
c2l6ZTogdGV4dHVyZVNpemUsCisgICAgICAgIGFycmF5TGF5ZXJDb3VudDogMSwKKyAgICAgICAg
bWlwTGV2ZWxDb3VudDogMSwKKyAgICAgICAgc2FtcGxlQ291bnQ6IDEsCisgICAgICAgIGRpbWVu
c2lvbjogIjJkIiwKKyAgICAgICAgZm9ybWF0OiAicjhnOGI4YTgtdW5vcm0iLAorICAgICAgICB1
c2FnZTogR1BVVGV4dHVyZVVzYWdlLlRSQU5TRkVSX1NSQyB8IEdQVVRleHR1cmVVc2FnZS5UUkFO
U0ZFUl9EU1QKKyAgICB9OworICAgIGNvbnN0IHRleHR1cmVBID0gZGV2aWNlLmNyZWF0ZVRleHR1
cmUodGV4dHVyZURlc2NyaXB0b3IpOworICAgIGNvbnN0IHRleHR1cmVWaWV3QSA9IHsKKyAgICAg
ICAgdGV4dHVyZTogdGV4dHVyZUEsCisgICAgICAgIG1pcExldmVsOiAwLAorICAgICAgICBhcnJh
eUxheWVyOiAwLAorICAgICAgICBvcmlnaW46IHsgeDogMCwgeTogMCwgejogMCB9CisgICAgfTsK
KworICAgIGNvbnN0IHRleHR1cmVCID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4dHVyZURlc2Ny
aXB0b3IpOworICAgIGNvbnN0IHRleHR1cmVWaWV3QiA9IHsKKyAgICAgICAgdGV4dHVyZTogdGV4
dHVyZUIsCisgICAgICAgIG1pcExldmVsOiAwLAorICAgICAgICBhcnJheUxheWVyOiAwLAorICAg
ICAgICBvcmlnaW46IHsgeDogMCwgeTogMCwgejogMCB9CisgICAgfTsKKworICAgIGNvbnN0IHJl
YWRCdWZmZXJEZXNjcmlwdG9yID0geworICAgICAgICBzaXplOiBpbWFnZURhdGEuZGF0YS5ieXRl
TGVuZ3RoLAorICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVFJBTlNGRVJfRFNUIHwgR1BV
QnVmZmVyVXNhZ2UuTUFQX1JFQUQKKyAgICB9OworICAgIGNvbnN0IHJlYWRCdWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKHJlYWRCdWZmZXJEZXNjcmlwdG9yKTsKKyAgICBjb25zdCByZWFkQnVm
ZmVyVmlldyA9IHsKKyAgICAgICAgYnVmZmVyOiByZWFkQnVmZmVyLAorICAgICAgICBvZmZzZXQ6
IDAsCisgICAgICAgIHJvd1BpdGNoOiAwLAorICAgICAgICBpbWFnZUhlaWdodDogMAorICAgIH07
CisKKyAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRCdWZmZXIo
KTsKKyAgICBjb21tYW5kQnVmZmVyLmNvcHlCdWZmZXJUb0J1ZmZlcihidWZmZXJBLCAwLCBidWZm
ZXJCLCAwLCBpbWFnZURhdGEuZGF0YS5ieXRlTGVuZ3RoKTsKKyAgICBjb21tYW5kQnVmZmVyLmNv
cHlCdWZmZXJUb1RleHR1cmUoYnVmZmVyVmlld0IsIHRleHR1cmVWaWV3QSwgdGV4dHVyZVNpemUp
OworICAgIGNvbW1hbmRCdWZmZXIuY29weVRleHR1cmVUb1RleHR1cmUodGV4dHVyZVZpZXdBLCB0
ZXh0dXJlVmlld0IsIHRleHR1cmVTaXplKTsKKyAgICBjb21tYW5kQnVmZmVyLmNvcHlUZXh0dXJl
VG9CdWZmZXIodGV4dHVyZVZpZXdCLCByZWFkQnVmZmVyVmlldywgdGV4dHVyZVNpemUpOworICAg
IGRldmljZS5nZXRRdWV1ZSgpLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOworCisgICAgY29uc3Qg
cmVzdWx0Q29udGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2NhbnZhcycpLmdldENvbnRl
eHQoJzJkJyk7CisKKyAgICBhd2FpdCByZWFkQnVmZmVyLm1hcFJlYWRBc3luYygpLnRoZW4oYWIg
PT4geworICAgICAgICBjb25zdCBhcnJheSA9IG5ldyBVaW50OENsYW1wZWRBcnJheShhYik7Cisg
ICAgICAgIGNvbnN0IHJlc3VsdEltYWdlRGF0YSA9IG5ldyBJbWFnZURhdGEoYXJyYXksIGltYWdl
LndpZHRoLCBpbWFnZS5oZWlnaHQpOworCisgICAgICAgIHJlc3VsdENvbnRleHQucHV0SW1hZ2VE
YXRhKHJlc3VsdEltYWdlRGF0YSwgMCwgMCk7CisKKyAgICAgICAgcmVhZEJ1ZmZlci51bm1hcCgp
OworICAgIH0pOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKK30KKworbG9hZEltYWdlKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvYnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUv
YnVmZmVyLWNvbW1hbmQtYnVmZmVyLXJhY2VzLmh0bWwKaW5kZXggM2IzMzc4YWVhN2ZjYWFjMTYy
OWE5MGZlZmRjMDIyMjNmZWE3MjE3My4uMzVhMzJhODU4YjcwYmNjYThiNjJhMTIwMjcyOTk1YjZh
ZTk5NjQ1MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1jb21tYW5kLWJ1
ZmZlci1yYWNlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9idWZmZXItY29tbWFuZC1i
dWZmZXItcmFjZXMuaHRtbApAQCAtMiw3ICsyLDcgQEAKIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
IDx0aXRsZT5XZWJHUFUgSGVsbG8gVHJpYW5nbGVzPC90aXRsZT4KIDxtZXRhIG5hbWU9ImFzc2Vy
dCIgY29udGVudD0iV2ViR1BVIGNvcnJlY3RseSByZW5kZXJzIGEgZ3JlZW4gY2FudmFzLiI+Ci08
bGluayByZWw9Im1hdGNoIiBocmVmPSJ2ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLWV4cGVj
dGVkLmh0bWwiPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iYnVmZmVyLWNvbW1hbmQtYnVmZmVy
LXJhY2VzLWV4cGVjdGVkLmh0bWwiPgogPHA+UGFzcyBpZiBzcXVhcmUgY2FudmFzIGJlbG93IGlz
IGNvbXBsZXRlbHkgZ3JlZW4uPC9wPgogPGNhbnZhcyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCI+
PC9jYW52YXM+CiA8c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVzb3VyY2VzL2dyZWVuLTQwMC5wbmcg
Yi9MYXlvdXRUZXN0cy93ZWJncHUvcmVzb3VyY2VzL2dyZWVuLTQwMC5wbmcKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmM3Zjg4ZTdjNWFiNTg4YTg2ODFjMTFkN2QxNmMzMmU5ZjZjNDNkOApHSVQgYmluYXJ5IHBhdGNo
CmxpdGVyYWwgMTQ4CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VjRNS0xqTGJsaFU0PXtmZmZR
cUxraD5HKCY2N0l5S25gYnRNYFNTcgp6MUdneztHY3dHWUJMTmctNCk2KGFXJSRvdjVfZXopa2dN
aEM7dXVtZj1qfW01TWotRmRnMEtFPl5WdD52bmRxUncKWCs8eVpEcW92c04zWHFKYXREbm17ci1V
V3w0a2pRcwoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363567</attachid>
            <date>2019-03-04 16:28:10 -0800</date>
            <delta_ts>2019-03-04 16:55:22 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-195224-20190304162809.patch</filename>
            <type>text/plain</type>
            <size>65134</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU3OGEyYmYyZDE3ZmMz
MmEzNWM5OWI0NTBlNTRiMDZkYjE4NzU0MS4uOTIzM2E0YjhhMjAzMzBlYTk3OTE2NDFlOWNiZDkz
ZTA0YjZlY2RiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE5LTAzLTA0ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBHUFVdIEJsaXR0
aW5nIGZ1bmN0aW9uIHByb3RvdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NTIyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg1Mzg5MDI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIEltcGxlbWVu
dCBiYXJlYm9uZXMgR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weSogcHJvdG90eXBlcyB3aGlsZSByb3Vu
ZGluZyBvdXQgR1BVVGV4dHVyZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgorCisgICAgICAgIFRl
c3Q6IHdlYmdwdS9ibGl0LWNvbW1hbmRzLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L0dQVU9yaWdpbjNELmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVU9yaWdp
bjNELmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1
ZmZlci5jcHA6IEFkZCBjb3B5IHZpZXcgc3RydWN0IGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAg
KFdlYkNvcmU6OldlYkdQVUJ1ZmZlckNvcHlWaWV3Ojphc0dQVUJ1ZmZlckNvcHlWaWV3IGNvbnN0
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVUZXh0dXJlQ29weVZpZXc6OmFzR1BV
VGV4dHVyZUNvcHlWaWV3IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVD
b21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9CdWZmZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OldlYkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0
dXJlVG9UZXh0dXJlKTogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29t
bWFuZEJ1ZmZlci5oOiBBZGQgbmV3IGZ1bmN0aW9ucyBhbmQgc3VwcG9ydGluZyBzdHJ1Y3RzLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsOiBEaXR0by4K
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA6
IFJlZmFjdG9yIGNvbnN0cnVjdG9ycyB0byBjb3B5IHRoZSBlbnRpcmUgYmFzZSBjbGFzcy4KKyAg
ICAgICAgKFdlYkNvcmU6OkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yOjpH
UFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVVJlbmRl
clBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvcjo6YXNHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjphdHRhY2htZW50KTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
UFVUZXh0dXJlOjp0ZXh0dXJlIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpieXRl
TGVuZ3RoIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHUFVCdWZmZXI6OmlzVHJh
bnNmZXJTb3VyY2UgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUJ1ZmZlcjo6
aXNUcmFuc2ZlckRlc3RpbmF0aW9uIGNvbnN0KTogUmVuYW1lZCBmcm9tIGlzVHJhbnNmZXJEc3Qu
IFJlZmFjdG9yZWQgZm9yIE9wdGlvblNldCBBUEkuCisgICAgICAgIChXZWJDb3JlOjpHUFVCdWZm
ZXI6OmlzVmVydGV4IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHUFVCdWZmZXI6
OmlzVW5pZm9ybSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjpp
c1N0b3JhZ2UgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdQVUJ1ZmZlcjo6aXNN
YXBwYWJsZSBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjppc01h
cFdyaXRlIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpHUFVCdWZmZXI6OmlzTWFw
UmVhZCBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVC
dWZmZXJVc2FnZS5oOiBSZWZhY3RvcmVkIGZvciBiZXR0ZXIgYml0IGZsYWcgc3R5bGUuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkdQVUNvbW1hbmRCdWZmZXI6OmJsaXRFbmNvZGVyIGNvbnN0KTogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmg6
IAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmg6IENhY2hlIHVz
YWdlIGZsYWdzIGZvciByZWZlcmVuY2UuCisgICAgICAgIChXZWJDb3JlOjpHUFVUZXh0dXJlOjpp
c1RyYW5zZmVyU3JjIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHUFVUZXh0dXJl
Ojppc1RyYW5zZmVyRHN0IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHUFVUZXh0
dXJlOjppc091dHB1dEF0dGFjaG1lbnQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZVVzYWdlLmg6IFJlZmFjdG9yIHRvIG1hdGNoIEdQVUJ1
ZmZlclVzYWdlLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1
ZmZlck1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVmZmVyOjp2YWxpZGF0ZUJ1ZmZl
clVzYWdlKTogUmVuYW1lZCBmcm9tIHZhbGlkYXRlQnVmZmVyQ3JlYXRlLCByZWZhY3RvcmVkIGZv
ciBPcHRpb25TZXQuCisgICAgICAgIChXZWJDb3JlOjpHUFVCdWZmZXI6OnRyeUNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHUFVCdWZmZXI6OkdQVUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHUFVCdWZmZXI6OmlzUmVhZE9ubHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R1BVQnVm
ZmVyOjpzZXRTdWJEYXRhKTogQWRkIGFsaWdubWVudCBjaGVjayBhY2NvcmRpbmcgdG8gTWV0YWwg
ZG9jcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQ29tbWFuZEJ1
ZmZlck1ldGFsLm1tOiAKKyAgICAgICAgKFdlYkNvcmU6OkdQVUNvbW1hbmRCdWZmZXI6OmNyZWF0
ZSk6IE5vIG5lZWQgdG8gdXNlIHRoaXMgYWxpYXMgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkdQ
VUNvbW1hbmRCdWZmZXI6OkdQVUNvbW1hbmRCdWZmZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcik6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6R1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb0J1ZmZl
cik6IEFkZGVkLiAKKyAgICAgICAgKFdlYkNvcmU6OkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0
dXJlVG9UZXh0dXJlKTogQWRkZWQuIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVRdWV1ZU1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVUXVldWU6OnN1Ym1p
dCk6IEVuZCBlbmNvZGluZyBvbiB0aGUgTVRMQ29tbWFuZEJ1ZmZlcidzIGJsaXRDb21tYW5kRW5j
b2RlciBpZiBpdCB3YXMgdXNlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVU3dhcENoYWluTWV0YWwubW06CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46
OmdldE5leHRUZXh0dXJlKTogTm93IHByb3ZpZGUgdXNhZ2UgZmxhZ3MgdG8gdGV4dHVyZSBjcmVh
dGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVyZU1l
dGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6bXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVz
YWdlRmxhZ3MpOiBSZWZhY3RvciB2YWxpZGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6dHJ5Q3Jl
YXRlTXRsVGV4dHVyZURlc2NyaXB0b3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkdQVVRl
eHR1cmU6OnRyeUNyZWF0ZSk6IE5vdyBwcm92aWRlIHVzYWdlIGZsYWdzIHRvIHRleHR1cmUgY3Jl
YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpHUFVUZXh0dXJlOjpjcmVhdGUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkdQVVRleHR1cmU6OkdQVVRleHR1cmUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldyk6IERpdHRvLgor
CiAyMDE5LTAyLTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgVXNlLWFmdGVyLW1vdmUgaW4gUmVuZGVyQ29tYmluZVRleHQ6OmNvbWJpbmVUZXh0
SWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjZDYzMTkyYzRiZDk1ZjY4NTI1YTE0
ZTAyMTg0YzVkMTI2MmZkMDkxLi42MDEyNGZjMWNkZTE3YTQwOTk5MWFhZjA2YWRmN2IzMzlkN2I4
ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDY5LDYgKzQ2OSw3IEBAIHNldChXZWJDb3Jl
X05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJncHUvR1BVRGVwdGhTdGVuY2lsU3Rh
dGVEZXNjcmlwdG9yLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L0dQVUV4dGVudDNELmlkbAogICAg
IE1vZHVsZXMvd2ViZ3B1L0dQVUxvYWRPcC5pZGwKKyAgICBNb2R1bGVzL3dlYmdwdS9HUFVPcmln
aW4zRC5pZGwKICAgICBNb2R1bGVzL3dlYmdwdS9HUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRs
CiAgICAgTW9kdWxlcy93ZWJncHUvR1BVU3RvcmVPcC5pZGwKICAgICBNb2R1bGVzL3dlYmdwdS9H
UFVUZXh0dXJlRGVzY3JpcHRvci5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDdlNmJmNWIyODUzYTQwZWU3OGJiYWZjYjE4OTkwZGVh
OTEzZWZlNzUuLjI1NWFiNDRkNmViNWQyNTQ0ZjRmNTk1YTc0YzY1YTQzZGQ3ZDhkNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysr
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMzIx
LDEzICszMjEsMTQgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbkNhbGxiYWNrLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmRyaXZlci9OYXZpZ2F0b3JXZWJEcml2ZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmdwdS9ET01XaW5kb3dXZWJHUFUuaWRsCi0kKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9H
UFVDb2xvci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUJ1ZmZlckRlc2Ny
aXB0b3IuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVCdWZmZXJVc2FnZS5p
ZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVUNvbG9yLmlkbAogJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJncHUvR1BVQ29tcGFyZUZ1bmN0aW9uLmlkbAogJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJncHUvR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlkbAogJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJncHUvR1BVRXh0ZW50M0QuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmdwdS9HUFVMb2FkT3AuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmdwdS9HUFVPcmlnaW4zRC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQVVJl
cXVlc3RBZGFwdGVyT3B0aW9ucy5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViZ3B1L0dQ
VVN0b3JlT3AuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRGVz
Y3JpcHRvci5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKaW5kZXggY2VkZGJhZTM5YjM1MzdhNmEyZTJjZTNlM2QyNGEzMGRjMGVkNWVhMC4u
YjVmMDIyZGI2YmMzOGM4NzA1Mzc2ZDM1ZGMwYWUwZjUyNWY5ZTFlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTU3NywxMiArNTc3
LDEyIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRm9u
dEZhY2VTZXQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0ZvbnRGYWNlU2V0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTR0NPYnNlcnZhdGlvbi5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTR0NPYnNlcnZhdGlvbi5oCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbG9yLmNwcAotJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvci5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJ1ZmZlckRlc2NyaXB0b3IuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUJ1ZmZlckRl
c2NyaXB0b3IuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHUFVCdWZmZXJVc2FnZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTR1BVQnVmZmVyVXNhZ2UuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb2xvci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR1BVQ29sb3IuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVDb21wYXJlRnVuY3Rpb24uY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUNvbXBhcmVGdW5jdGlv
bi5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVURl
cHRoU3RlbmNpbFN0YXRlRGVzY3JpcHRvci5jcHAKQEAgLTU5MSw2ICs1OTEsOCBAQCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUV4dGVudDNELmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVFeHRlbnQz
RC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dQVUxv
YWRPcC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
R1BVTG9hZE9wLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTR1BVT3JpZ2luM0QuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0dQVU9yaWdpbjNELmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVSZXF1ZXN0QWRhcHRlck9wdGlv
bnMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHUFVT
dG9yZU9wLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggOWUxODE4ZDgyNjUw
MzAxNDM3ZDI0NjdkNjhjOWQ1ZTdhMGNmOTUwMC4uMDY2ODc5MjY1OTI4NGRhNzRjZDY5OWQ5ODZh
NTA1MWY2NDRiZDZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0zNzksNiAr
Mzc5LDcgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9HUFVFeHRlbnQzRC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJncHUvR1BVTG9hZE9wLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVP
cmlnaW4zRC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvR1BVUmVxdWVzdEFk
YXB0ZXJPcHRpb25zLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVTdG9y
ZU9wLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9HUFVUZXh0dXJlRGVzY3Jp
cHRvci5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
T3JpZ2luM0QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjU5NTQwZWRjYmY4OTE5NzY0YmU2YzkyMWI3Y2E5MGNjODhjNzAyMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNE
LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQkdQVSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgR1BVT3JpZ2luM0Qg
eworICAgIHVuc2lnbmVkIHg7CisgICAgdW5zaWduZWQgeTsKKyAgICB1bnNpZ25lZCB6OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVU9yaWdpbjNELmlkbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44MTNhMjMxNGJkZjVjNmE4Y2EyYTYyZWQ3MDVlY2Y1NzZlMGQyOTRiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVT3JpZ2luM0QuaWRsCkBAIC0w
LDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8gaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9ncHV3
ZWIvYmxvYi9tYXN0ZXIvZGVzaWduL3NrZXRjaC53ZWJpZGwKKwordHlwZWRlZiB1bnNpZ25lZCBs
b25nIHUzMjsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50
aW1lPVdlYkdQVQorXSBkaWN0aW9uYXJ5IEdQVU9yaWdpbjNEIHsKKyAgICB1MzIgeDsKKyAgICB1
MzIgeTsKKyAgICB1MzIgejsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuY3BwCmluZGV4IDI4YTVhYjcyZDc5YjkyYWEyNzE0
ZjFiMTMzNTBhZWE5Zjc5NGYyODguLmYyZjI5ZTZjYzA1NzNjZjM4ZTYxZmY3MDRhOGY5MzMwNGJi
MWZmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bW1hbmRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRCdWZmZXIuY3BwCkBAIC0zMCwxMSArMzAsMzcgQEAKIAogI2luY2x1ZGUgIkdQVVJl
bmRlclBhc3NEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiR1BVUmVuZGVyUGFzc0VuY29kZXIuaCIK
KyNpbmNsdWRlICJXZWJHUFVCdWZmZXIuaCIKICNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5oIgogI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCisjaW5jbHVk
ZSAiV2ViR1BVVGV4dHVyZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK09wdGlvbmFsPEdQ
VUJ1ZmZlckNvcHlWaWV3PiBXZWJHUFVCdWZmZXJDb3B5Vmlldzo6YXNHUFVCdWZmZXJDb3B5Vmll
dygpIGNvbnN0Cit7CisgICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+YnVmZmVyKCkpIHsKKyAg
ICAgICAgTE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRFbmNvZGVyOiBJbnZhbGlkIGJ1ZmZlciBmb3Ig
Y29weSEiKTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAvLyBG
SVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KKworICAgIHJldHVybiBHUFVCdWZmZXJDb3B5
VmlldyB7IGJ1ZmZlci0+YnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgKnRoaXMgfTsKK30KKwor
T3B0aW9uYWw8R1BVVGV4dHVyZUNvcHlWaWV3PiBXZWJHUFVUZXh0dXJlQ29weVZpZXc6OmFzR1BV
VGV4dHVyZUNvcHlWaWV3KCkgY29uc3QKK3sKKyAgICBpZiAoIXRleHR1cmUgfHwgIXRleHR1cmUt
PnRleHR1cmUoKSkgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEVuY29kZXI6IElu
dmFsaWQgdGV4dHVyZSBmb3IgY29weSEiKTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICB9CisKKyAgICAvLyBGSVhNRTogQWRkIFdlYiBHUFUgdmFsaWRhdGlvbi4KKworICAgIHJl
dHVybiBHUFVUZXh0dXJlQ29weVZpZXcgeyB0ZXh0dXJlLT50ZXh0dXJlKCkucmVsZWFzZU5vbk51
bGwoKSwgKnRoaXMgfTsKK30KKwogUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVUNvbW1h
bmRCdWZmZXI6OmNyZWF0ZShSZWY8R1BVQ29tbWFuZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVQ29tbWFuZEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikp
KTsKQEAgLTU2LDYgKzgyLDU3IEBAIFJlZlB0cjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gV2Vi
R1BVQ29tbWFuZEJ1ZmZlcjo6YmVnaW5SZW5kZXJQYXNzKFdlYkdQVVJlbmRlCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKK3ZvaWQgV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvQnVm
ZmVyKGNvbnN0IFdlYkdQVUJ1ZmZlciYgc3JjLCB1bnNpZ25lZCBsb25nIHNyY09mZnNldCwgY29u
c3QgV2ViR1BVQnVmZmVyJiBkc3QsIHVuc2lnbmVkIGxvbmcgZHN0T2Zmc2V0LCB1bnNpZ25lZCBs
b25nIHNpemUpCit7CisgICAgaWYgKCFzcmMuYnVmZmVyKCkgfHwgIWRzdC5idWZmZXIoKSkgewor
ICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvQnVmZmVy
KCk6IEludmFsaWQgR1BVQnVmZmVyISIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCisKKyAgICBtX2NvbW1hbmRCdWZmZXIt
PmNvcHlCdWZmZXJUb0J1ZmZlcihzcmMuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgc3JjT2Zm
c2V0LCBkc3QuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgZHN0T2Zmc2V0LCBzaXplKTsKK30K
Kwordm9pZCBXZWJHUFVDb21tYW5kQnVmZmVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdl
YkdQVUJ1ZmZlckNvcHlWaWV3JiBzcmNCdWZmZXIsIGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5Vmll
dyYgZHN0VGV4dHVyZSwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCit7CisgICAgYXV0byBncHVC
dWZmZXJWaWV3ID0gc3JjQnVmZmVyLmFzR1BVQnVmZmVyQ29weVZpZXcoKTsKKyAgICBhdXRvIGdw
dVRleHR1cmVWaWV3ID0gZHN0VGV4dHVyZS5hc0dQVVRleHR1cmVDb3B5VmlldygpOworCisgICAg
aWYgKCFncHVCdWZmZXJWaWV3IHx8ICFncHVUZXh0dXJlVmlldykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgLy8gRklYTUU6IEFkZCBXZWIgR1BVIHZhbGlkYXRpb24uCisKKyAgICBtX2NvbW1hbmRC
dWZmZXItPmNvcHlCdWZmZXJUb1RleHR1cmUoKmdwdUJ1ZmZlclZpZXcsICpncHVUZXh0dXJlVmll
dywgc2l6ZSk7Cit9CisKK3ZvaWQgV2ViR1BVQ29tbWFuZEJ1ZmZlcjo6Y29weVRleHR1cmVUb0J1
ZmZlcihjb25zdCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmIHNyY1RleHR1cmUsIGNvbnN0IFdlYkdQ
VUJ1ZmZlckNvcHlWaWV3JiBkc3RCdWZmZXIsIGNvbnN0IEdQVUV4dGVudDNEJiBzaXplKQorewor
ICAgIGF1dG8gZ3B1VGV4dHVyZVZpZXcgPSBzcmNUZXh0dXJlLmFzR1BVVGV4dHVyZUNvcHlWaWV3
KCk7CisgICAgYXV0byBncHVCdWZmZXJWaWV3ID0gZHN0QnVmZmVyLmFzR1BVQnVmZmVyQ29weVZp
ZXcoKTsKKworICAgIGlmICghZ3B1VGV4dHVyZVZpZXcgfHwgIWdwdUJ1ZmZlclZpZXcpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgorCisg
ICAgbV9jb21tYW5kQnVmZmVyLT5jb3B5VGV4dHVyZVRvQnVmZmVyKCpncHVUZXh0dXJlVmlldywg
KmdwdUJ1ZmZlclZpZXcsIHNpemUpOworfQorCit2b2lkIFdlYkdQVUNvbW1hbmRCdWZmZXI6OmNv
cHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IFdlYkdQVVRleHR1cmVDb3B5VmlldyYgc3JjLCBjb25z
dCBXZWJHUFVUZXh0dXJlQ29weVZpZXcmIGRzdCwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCit7
CisgICAgYXV0byBncHVTcmNWaWV3ID0gc3JjLmFzR1BVVGV4dHVyZUNvcHlWaWV3KCk7CisgICAg
YXV0byBncHVEc3RWaWV3ID0gZHN0LmFzR1BVVGV4dHVyZUNvcHlWaWV3KCk7CisKKyAgICBpZiAo
IWdwdVNyY1ZpZXcgfHwgIWdwdURzdFZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJ
WE1FOiBBZGQgV2ViIEdQVSB2YWxpZGF0aW9uLgorCisgICAgbV9jb21tYW5kQnVmZmVyLT5jb3B5
VGV4dHVyZVRvVGV4dHVyZSgqZ3B1U3JjVmlldywgKmdwdURzdFZpZXcsIHNpemUpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oCmlu
ZGV4IDk4ZWU0MGNkZGQ0NDRiMTA1NjViY2Q0N2QzNzQ4NDM1Y2JjYmU5YWQuLmEwOWI3ZjFlOTdh
ODlkYTY0NzQ5YmY2MGI2YzVjZjdkMzcyZjYwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmgKQEAgLTI5LDE2ICsyOSwzMiBA
QAogCiAjaW5jbHVkZSAiR1BVQ29tbWFuZEJ1ZmZlci5oIgogCisjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IFdlYkdQVUJ1ZmZlcjsKIGNsYXNzIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOworY2xhc3MgV2Vi
R1BVVGV4dHVyZTsKIAorc3RydWN0IEdQVUV4dGVudDNEOwogc3RydWN0IFdlYkdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yOwogCitzdHJ1Y3QgV2ViR1BVQnVmZmVyQ29weVZpZXcgOiBHUFVCdWZmZXJD
b3B5Vmlld0Jhc2UgeworICAgIE9wdGlvbmFsPEdQVUJ1ZmZlckNvcHlWaWV3PiBhc0dQVUJ1ZmZl
ckNvcHlWaWV3KCkgY29uc3Q7CisKKyAgICBSZWZQdHI8V2ViR1BVQnVmZmVyPiBidWZmZXI7Cit9
OworCitzdHJ1Y3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3IDogR1BVVGV4dHVyZUNvcHlWaWV3QmFz
ZSB7CisgICAgT3B0aW9uYWw8R1BVVGV4dHVyZUNvcHlWaWV3PiBhc0dQVVRleHR1cmVDb3B5Vmll
dygpIGNvbnN0OworCisgICAgUmVmUHRyPFdlYkdQVVRleHR1cmU+IHRleHR1cmU7Cit9OworCiBj
bGFzcyBXZWJHUFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQ29tbWFu
ZEJ1ZmZlcj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4g
Y3JlYXRlKFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKQEAgLTQ2LDYgKzYyLDEwIEBAIHB1Ymxp
YzoKICAgICBjb25zdCBHUFVDb21tYW5kQnVmZmVyJiBjb21tYW5kQnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb21tYW5kQnVmZmVyLmdldCgpOyB9CiAKICAgICBSZWZQdHI8V2ViR1BVUmVuZGVy
UGFzc0VuY29kZXI+IGJlZ2luUmVuZGVyUGFzcyhXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciYm
KTsKKyAgICB2b2lkIGNvcHlCdWZmZXJUb0J1ZmZlcihjb25zdCBXZWJHUFVCdWZmZXImLCB1bnNp
Z25lZCBsb25nIHNyY09mZnNldCwgY29uc3QgV2ViR1BVQnVmZmVyJiwgdW5zaWduZWQgbG9uZyBk
c3RPZmZzZXQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CisgICAgdm9pZCBjb3B5QnVmZmVyVG9UZXh0
dXJlKGNvbnN0IFdlYkdQVUJ1ZmZlckNvcHlWaWV3JiwgY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlW
aWV3JiwgY29uc3QgR1BVRXh0ZW50M0QmKTsKKyAgICB2b2lkIGNvcHlUZXh0dXJlVG9CdWZmZXIo
Y29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiwgY29uc3QgV2ViR1BVQnVmZmVyQ29weVZpZXcm
LCBjb25zdCBHUFVFeHRlbnQzRCYpOworICAgIHZvaWQgY29weVRleHR1cmVUb1RleHR1cmUoY29u
c3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3JiwgY29uc3QgV2ViR1BVVGV4dHVyZUNvcHlWaWV3Jiwg
Y29uc3QgR1BVRXh0ZW50M0QmKTsKIAogcHJpdmF0ZToKICAgICBXZWJHUFVDb21tYW5kQnVmZmVy
KFJlZjxHUFVDb21tYW5kQnVmZmVyPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbW1hbmRCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwKaW5kZXggYjlmNDJjZmRhYWJmNThm
OTY5YzAwZDYyODRiZDkzYzliMjA5YjRmOC4uMWJkNmY1NDUzM2U4MWJmOTAwMjEzMjM2MmMyYzA3
ZmZmNTMzZjliZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tbWFuZEJ1ZmZlci5pZGwKQEAgLTI0LDYgKzI0LDMxIEBACiAgKi8KIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9za2V0Y2gud2Vi
aWRsCiAKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
bG9uZyB1NjQ7CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVu
dGltZT1XZWJHUFUsCisgICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVCdWZmZXJDb3B5VmlldworXSBk
aWN0aW9uYXJ5IEdQVUJ1ZmZlckNvcHlWaWV3IHsKKyAgICBXZWJHUFVCdWZmZXIgYnVmZmVyOwor
ICAgIHU2NCBvZmZzZXQ7CisgICAgdTY0IHJvd1BpdGNoOworICAgIHUzMiBpbWFnZUhlaWdodDsK
K307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1X
ZWJHUFUsCisgICAgSW1wbGVtZW50ZWRBcz1XZWJHUFVUZXh0dXJlQ29weVZpZXcKK10gZGljdGlv
bmFyeSBHUFVUZXh0dXJlQ29weVZpZXcgeworICAgIFdlYkdQVVRleHR1cmUgdGV4dHVyZTsKKyAg
ICB1MzIgbWlwTGV2ZWw7CisgICAgdTMyIGFycmF5TGF5ZXI7CisgICAgR1BVT3JpZ2luM0Qgb3Jp
Z2luOworfTsKKwogWwogICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKICAgICBFbmFibGVkQXRSdW50
aW1lPVdlYkdQVSwKQEAgLTMxLDExICs1Niw3IEBACiBdIGludGVyZmFjZSBXZWJHUFVDb21tYW5k
QnVmZmVyIHsKICAgICBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlciBiZWdpblJlbmRlclBhc3MoV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAKLS8qIE5vdCBZZXQgSW1wbGVt
ZW50ZWQKLSAgICBXZWJHUFVDb21wdXRlUGFzc0VuY29kZXIgYmVnaW5Db21wdXRlUGFzcygpOwot
Ci0gICAgLy8gQ29tbWFuZHMgYWxsb3dlZCBvdXRzaWRlIG9mICJwYXNzZXMiCi0gICAgICAgIHZv
aWQgY29weUJ1ZmZlclRvQnVmZmVyKAorICAgIHZvaWQgY29weUJ1ZmZlclRvQnVmZmVyKAogICAg
ICAgICBXZWJHUFVCdWZmZXIgc3JjLAogICAgICAgICB1NjQgc3JjT2Zmc2V0LAogICAgICAgICBX
ZWJHUFVCdWZmZXIgZHN0LApAQCAtNDMsMjEgKzY0LDIwIEBACiAgICAgICAgIHU2NCBzaXplKTsK
IAogICAgIHZvaWQgY29weUJ1ZmZlclRvVGV4dHVyZSgKLSAgICAgICAgV2ViR1BVQnVmZmVyQ29w
eVZpZXcgc291cmNlLAotICAgICAgICBXZWJHUFVUZXh0dXJlQ29weVZpZXcgZGVzdGluYXRpb24s
Ci0gICAgICAgIFdlYkdQVUV4dGVudDNEIGNvcHlTaXplKTsKKyAgICAgICAgR1BVQnVmZmVyQ29w
eVZpZXcgc291cmNlLAorICAgICAgICBHUFVUZXh0dXJlQ29weVZpZXcgZGVzdGluYXRpb24sCisg
ICAgICAgIEdQVUV4dGVudDNEIGNvcHlTaXplKTsKIAogICAgIHZvaWQgY29weVRleHR1cmVUb0J1
ZmZlcigKLSAgICAgICAgV2ViR1BVVGV4dHVyZUNvcHlWaWV3IHNvdXJjZSwKLSAgICAgICAgV2Vi
R1BVQnVmZmVyQ29weVZpZXcgZGVzdGluYXRpb24sCi0gICAgICAgIFdlYkdQVUV4dGVudDNEIGNv
cHlTaXplKTsKKyAgICAgICAgR1BVVGV4dHVyZUNvcHlWaWV3IHNvdXJjZSwKKyAgICAgICAgR1BV
QnVmZmVyQ29weVZpZXcgZGVzdGluYXRpb24sCisgICAgICAgIEdQVUV4dGVudDNEIGNvcHlTaXpl
KTsKIAogICAgIHZvaWQgY29weVRleHR1cmVUb1RleHR1cmUoCi0gICAgICAgIFdlYkdQVVRleHR1
cmVDb3B5VmlldyBzb3VyY2UsCi0gICAgICAgIFdlYkdQVVRleHR1cmVDb3B5VmlldyBkZXN0aW5h
dGlvbiwKLSAgICAgICAgV2ViR1BVRXh0ZW50M0QgY29weVNpemUpOworICAgICAgICBHUFVUZXh0
dXJlQ29weVZpZXcgc291cmNlLAorICAgICAgICBHUFVUZXh0dXJlQ29weVZpZXcgZGVzdGluYXRp
b24sCisgICAgICAgIEdQVUV4dGVudDNEIGNvcHlTaXplKTsKIAotICAgIC8vIFRPRE8gZmlndXJl
IHdoaWNoIG90aGVyIGNvbW1hbmRzIGFyZSBuZWVkZWQKLSAgICB2b2lkIGJsaXQoKTsKLSovCisg
ICAgLy8gTm90IFlldCBJbXBsZW1lbnRlZAorICAgIC8vIFdlYkdQVUNvbXB1dGVQYXNzRW5jb2Rl
ciBiZWdpbkNvbXB1dGVQYXNzKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCmluZGV4IDJk
MjhhYmM0Yjk4NDcwMzY4MjBkYjY5OTZkNTQ5NzNiMmI2ZTI0YjIuLmJhZDE0Y2E5ODI1NTI2OGJi
NWEwOTA4M2IwMjIzODc1MTlhZTNlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKQEAgLTMz
LDE0ICszMywxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yOjpHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcihSZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlLCBHUFVMb2FkT3AgbG9hZCwgR1BVU3RvcmVP
cCBzdG9yZSwgR1BVQ29sb3IgY29sb3IpCi0gICAgOiBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvckJhc2UgeyBsb2FkLCBzdG9yZSwgY29sb3IgfQorR1BVUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I6OkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNj
cmlwdG9yKFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1cmUsIGNvbnN0IEdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSYgYmFzZSkKKyAgICA6IEdQVVJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZShiYXNlKQogICAgICwgYXR0YWNobWVudChXVEZNb3Zl
KHRleHR1cmUpKQogewogfQogCi1HUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERl
c2NyaXB0b3I6OkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcihS
ZWY8R1BVVGV4dHVyZT4mJiB0ZXh0dXJlLCBHUFVMb2FkT3AgbG9hZCwgR1BVU3RvcmVPcCBzdG9y
ZSwgZmxvYXQgZGVwdGgpCi0gICAgOiBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVu
dERlc2NyaXB0b3JCYXNlIHsgbG9hZCwgc3RvcmUsIGRlcHRoIH0KK0dQVVJlbmRlclBhc3NEZXB0
aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcjo6R1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0
dGFjaG1lbnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0dXJlPiYmIHRleHR1cmUsIGNvbnN0IEdQVVJl
bmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvckJhc2UmIGJhc2UpCisgICAg
OiBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2NyaXB0b3JCYXNlKGJhc2Up
CiAgICAgLCBhdHRhY2htZW50KFdURk1vdmUodGV4dHVyZSkpCiB7CiB9CkBAIC01NiwyMSArNTYs
MjEgQEAgT3B0aW9uYWw8R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3I+IFdlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yOjphc0dQVVJlbmRlclBhc3NEZXMKICAgICBWZWN0b3I8R1BVUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudERlc2NyaXB0b3I+IGdwdUNvbG9yQXR0YWNobWVudHM7CiAKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGNvbG9yQXR0YWNobWVudCA6IGNvbG9yQXR0YWNobWVudHMpIHsKLSAgICAg
ICAgaWYgKCFjb2xvckF0dGFjaG1lbnQuYXR0YWNobWVudCkgeworICAgICAgICBpZiAoIWNvbG9y
QXR0YWNobWVudC5hdHRhY2htZW50IHx8ICFjb2xvckF0dGFjaG1lbnQuYXR0YWNobWVudC0+dGV4
dHVyZSgpLT5pc091dHB1dEF0dGFjaG1lbnQoKSkgewogICAgICAgICAgICAgTE9HKFdlYkdQVSwg
IkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOiBJbnZhbGlkIGF0dGFjaG1lbnQgaW4gR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IhIik7CiAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogICAgICAgICB9Ci0gICAgICAgIGdwdUNvbG9yQXR0YWNobWVudHMuYXBwZW5k
KEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yKGNvbG9yQXR0YWNobWVudC5h
dHRhY2htZW50LT50ZXh0dXJlKCksIGNvbG9yQXR0YWNobWVudC5sb2FkT3AsIGNvbG9yQXR0YWNo
bWVudC5zdG9yZU9wLCBjb2xvckF0dGFjaG1lbnQuY2xlYXJDb2xvcikpOworICAgICAgICBncHVD
b2xvckF0dGFjaG1lbnRzLmFwcGVuZChHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvciB7IGNvbG9yQXR0YWNobWVudC5hdHRhY2htZW50LT50ZXh0dXJlKCksIGNvbG9yQXR0YWNo
bWVudCB9KTsKICAgICB9CiAKICAgICBPcHRpb25hbDxHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2ls
QXR0YWNobWVudERlc2NyaXB0b3I+IGdwdURlcHRoQXR0YWNobWVudDsKIAogICAgIGlmIChkZXB0
aFN0ZW5jaWxBdHRhY2htZW50KSB7Ci0gICAgICAgIGlmICghZGVwdGhTdGVuY2lsQXR0YWNobWVu
dC0+YXR0YWNobWVudCkgeworICAgICAgICBpZiAoIWRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmF0
dGFjaG1lbnQgfHwgIWRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmF0dGFjaG1lbnQtPnRleHR1cmUo
KS0+aXNPdXRwdXRBdHRhY2htZW50KCkpIHsKICAgICAgICAgICAgIExPRyhXZWJHUFUsICJHUFVS
ZW5kZXJQYXNzRGVzY3JpcHRvcjogSW52YWxpZCBhdHRhY2htZW50IGluIEdQVVJlbmRlclBhc3NE
ZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciEiKTsKICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAgICAgICAgIH0KLSAgICAgICAgZ3B1RGVwdGhBdHRhY2htZW50ID0gR1BV
UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnREZXNjcmlwdG9yKGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQtPmF0dGFjaG1lbnQtPnRleHR1cmUoKSwgZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+
ZGVwdGhMb2FkT3AsIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmRlcHRoU3RvcmVPcCwgZGVwdGhT
dGVuY2lsQXR0YWNobWVudC0+Y2xlYXJEZXB0aCk7CisgICAgICAgIGdwdURlcHRoQXR0YWNobWVu
dCA9IEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvciB7IGRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQtPmF0dGFjaG1lbnQtPnRleHR1cmUoKSwgKmRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQgfTsKICAgICB9CiAKICAgICByZXR1cm4gR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Ig
eyBXVEZNb3ZlKGdwdUNvbG9yQXR0YWNobWVudHMpLCBXVEZNb3ZlKGdwdURlcHRoQXR0YWNobWVu
dCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRl
eHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaApp
bmRleCBjNTkwYmRmNjk0MmQ3YjliZmZmZDFlNzJiNjEyODliZDgwZDM5YjMyLi42MmZlZDk4ZTA4
Yzk3ZmYyMGU3YzA2NmViMmQ5NDdlYzM5MDFmMzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oCkBAIC00MCw2ICs0MCw4IEBAIGNsYXNzIFdlYkdQ
VVRleHR1cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVUZXh0dXJlPiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJlPiBjcmVhdGUoUmVmUHRyPEdQVVRleHR1cmU+JiYp
OwogCisgICAgUmVmUHRyPEdQVVRleHR1cmU+IHRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHR1cmU7IH0KKwogICAgIFJlZlB0cjxXZWJHUFVUZXh0dXJlVmlldz4gY3JlYXRlRGVmYXVsdFRl
eHR1cmVWaWV3KCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDk2NWQwNDIzZjc4YjE3
NThhNjNkMjg4ZjkyZjgyMGU2MjNmMDBmYjkuLmI1NzVlNjhiZmZiYWJhZTkyMTY1MGQ0YTliZjZj
NDI1MzFhMWQ3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNzc1LDYgKzI3NzUsNyBAQCBKU0dQVUNv
bXBhcmVGdW5jdGlvbi5jcHAKIEpTR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yLmNwcAog
SlNHUFVFeHRlbnQzRC5jcHAKIEpTR1BVTG9hZE9wLmNwcAorSlNHUFVPcmlnaW4zRC5jcHAKIEpT
R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmNwcAogSlNHUFVTdG9yZU9wLmNwcAogSlNHUFVUZXh0
dXJlRGVzY3JpcHRvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAyNDQxOTU5Nzc5YmMwNzBmYTRlMzQ0MWUzOGNjNWZiNTE3
MzlkYjM2Li41Mjg4YWQ0NzhhNGNhZjgwYmIxNzZiOGNkYWI5YzE2YWExYmJhNDNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NDEzNSw2ICsxNDEzNSw4IEBACiAJCUQwQ0FBRTlDMjE2ODI0QTcwMDFDOTFDNyAvKiBXZWJNZXRh
bENvbXB1dGVDb21tYW5kRW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJNZXRhbENv
bXB1dGVDb21tYW5kRW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQw
Q0FBRTlEMjE2ODI0QTcwMDFDOTFDNyAvKiBXZWJNZXRhbEJ1ZmZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJNZXRhbEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMENBQUU5
RTIxNjgyNEE4MDAxQzkxQzcgLyogV2ViTWV0YWxDb21tYW5kQnVmZmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUQwQ0NBOTQ5MjIyOTlGOTcwMDY5NzlCNiAvKiBHUFVPcmlnaW4zRC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHUFVPcmlnaW4zRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlE
MENDQTk0QTIyMjk5Rjk3MDA2OTc5QjYgLyogR1BVT3JpZ2luM0QuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdQVU9yaWdp
bjNELmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBEODY0ODcyMUI2NENBQTAw
M0M5ODNDIC8qIEdQVUJ1ZmZlckRlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVQnVmZmVy
RGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEQ4NjQ4QzIxQjcw
Njc2MDAzQzk4M0MgLyogV2ViR1BVQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUJ1ZmZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEQ4NjQ4RDIxQjcwNjc2MDAzQzk4
M0MgLyogV2ViR1BVQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVUJ1ZmZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjA3Miw2ICsyNjA3NCw4IEBACiAJ
CQkJRDAzQzg0QTIyMUZGRDcyMzAwMDIyMjdGIC8qIEdQVURlcHRoU3RlbmNpbFN0YXRlRGVzY3Jp
cHRvci5pZGwgKi8sCiAJCQkJRDAyNkY0ODAyMjBBMkI3MDAwQUM1RjQ5IC8qIEdQVUV4dGVudDNE
LmlkbCAqLywKIAkJCQlEMDhBQTAyRDIyMEQwQjlDMDA1OEM1MDIgLyogR1BVTG9hZE9wLmlkbCAq
LywKKwkJCQlEMENDQTk0OTIyMjk5Rjk3MDA2OTc5QjYgLyogR1BVT3JpZ2luM0QuaCAqLywKKwkJ
CQlEMENDQTk0QTIyMjk5Rjk3MDA2OTc5QjYgLyogR1BVT3JpZ2luM0QuaWRsICovLAogCQkJCUQw
MkMyNjkyMjE4MTQxNkQwMEQ4MThFNCAvKiBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaWRsICov
LAogCQkJCUQwOEFBMDMxMjIwRDBDRTYwMDU4QzUwMiAvKiBHUFVTdG9yZU9wLmlkbCAqLywKIAkJ
CQlEMDI2RjQ4QjIyMEE1QjBCMDBBQzVGNDkgLyogR1BVVGV4dHVyZURlc2NyaXB0b3IuaWRsICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUJ1ZmZlci5o
CmluZGV4IGQ5MjlmZDE5NzdlNWQ2ODM4OWEzYWNjZGViZTZlNGZmMzdiNmVkOGYuLmIwY2EyN2U2
OTQ4OTg3N2ZhYTVjMmMxOWU5MTMwNGNjZTUyZTIxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJEZWZlcnJhYmxlVGFzay5oIgogI2luY2x1ZGUgIkdQVUJ1ZmZlclVzYWdlLmgiCiAj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTcwLDEyICs3MSwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZlB0cjxHUFVCdWZmZXI+IHRyeUNyZWF0ZShSZWY8R1BVRGV2aWNlPiYmLCBHUFVCdWZmZXJE
ZXNjcmlwdG9yJiYpOwogCiAgICAgUGxhdGZvcm1CdWZmZXIgKnBsYXRmb3JtQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybUJ1ZmZlci5nZXQoKTsgfQotICAgIGJvb2wgaXNUcmFuc2Zl
ckRzdCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UgJiBHUFVCdWZmZXJVc2FnZTo6VHJhbnNmZXJE
c3Q7IH0KLSAgICBib29sIGlzVmVydGV4KCkgY29uc3QgeyByZXR1cm4gbV91c2FnZSAmIEdQVUJ1
ZmZlclVzYWdlOjpWZXJ0ZXg7IH0KLSAgICBib29sIGlzVW5pZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fdXNhZ2UgJiBHUFVCdWZmZXJVc2FnZTo6VW5pZm9ybTsgfQotICAgIGJvb2wgaXNTdG9yYWdl
KCkgY29uc3QgeyByZXR1cm4gbV91c2FnZSAmIEdQVUJ1ZmZlclVzYWdlOjpTdG9yYWdlOyB9Cisg
ICAgdW5zaWduZWQgbG9uZyBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3Ro
OyB9CisgICAgYm9vbCBpc1RyYW5zZmVyU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5j
b250YWlucyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OlRyYW5zZmVyU291cmNlKTsgfQorICAgIGJv
b2wgaXNUcmFuc2ZlckRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlu
cyhHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OlRyYW5zZmVyRGVzdGluYXRpb24pOyB9CisgICAgYm9v
bCBpc1ZlcnRleCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVQnVmZmVyVXNh
Z2U6OkZsYWdzOjpWZXJ0ZXgpOyB9CisgICAgYm9vbCBpc1VuaWZvcm0oKSBjb25zdCB7IHJldHVy
biBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6VW5pZm9ybSk7IH0KKyAg
ICBib29sIGlzU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVQnVm
ZmVyVXNhZ2U6OkZsYWdzOjpTdG9yYWdlKTsgfQogICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0
OwotICAgIGJvb2wgaXNNYXBwYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UgJiAoR1BVQnVm
ZmVyVXNhZ2U6Ok1hcFdyaXRlIHwgR1BVQnVmZmVyVXNhZ2U6Ok1hcFJlYWQpOyB9CisgICAgYm9v
bCBpc01hcHBhYmxlKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWluc0FueSh7IEdQVUJ1
ZmZlclVzYWdlOjpGbGFnczo6TWFwV3JpdGUsIEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwUmVh
ZCB9KTsgfQogICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7CiAKICNpZiBVU0UoTUVUQUwpCkBAIC0x
MDQsMTYgKzEwNywxNiBAQCBwcml2YXRlOgogICAgICAgICBQZW5kaW5nTWFwcGluZ0NhbGxiYWNr
KE1hcHBpbmdDYWxsYmFjayYmKTsKICAgICB9OwogCi0gICAgc3RhdGljIGJvb2wgdmFsaWRhdGVC
dWZmZXJDcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYp
OworICAgIHN0YXRpYyBib29sIHZhbGlkYXRlQnVmZmVyVXNhZ2UoY29uc3QgR1BVRGV2aWNlJiwg
T3B0aW9uU2V0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz4pOwogCi0gICAgR1BVQnVmZmVyKFBsYXRm
b3JtQnVmZmVyU21hcnRQdHImJiwgY29uc3QgR1BVQnVmZmVyRGVzY3JpcHRvciYsIFJlZjxHUFVE
ZXZpY2U+JiYpOworICAgIEdQVUJ1ZmZlcihQbGF0Zm9ybUJ1ZmZlclNtYXJ0UHRyJiYsIGNvbnN0
IEdQVUJ1ZmZlckRlc2NyaXB0b3ImLCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6OkZsYWdzPiwg
UmVmPEdQVURldmljZT4mJik7CiAKICAgICBKU0M6OkFycmF5QnVmZmVyKiBzdGFnaW5nQnVmZmVy
Rm9yUmVhZCgpOwogICAgIEpTQzo6QXJyYXlCdWZmZXIqIHN0YWdpbmdCdWZmZXJGb3JXcml0ZSgp
OwogICAgIHZvaWQgcnVuTWFwcGluZ0NhbGxiYWNrKCk7CiAKLSAgICBib29sIGlzTWFwV3JpdGUo
KSBjb25zdCB7IHJldHVybiBtX3VzYWdlICYgR1BVQnVmZmVyVXNhZ2U6Ok1hcFdyaXRlOyB9Ci0g
ICAgYm9vbCBpc01hcFJlYWQoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlICYgR1BVQnVmZmVyVXNh
Z2U6Ok1hcFJlYWQ7IH0KKyAgICBib29sIGlzTWFwV3JpdGUoKSBjb25zdCB7IHJldHVybiBtX3Vz
YWdlLmNvbnRhaW5zKEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwV3JpdGUpOyB9CisgICAgYm9v
bCBpc01hcFJlYWQoKSBjb25zdCB7IHJldHVybiBtX3VzYWdlLmNvbnRhaW5zKEdQVUJ1ZmZlclVz
YWdlOjpGbGFnczo6TWFwUmVhZCk7IH0KICAgICBib29sIGlzTWFwV3JpdGVhYmxlKCkgY29uc3Qg
eyByZXR1cm4gaXNNYXBXcml0ZSgpICYmIHN0YXRlKCkgPT0gU3RhdGU6OlVubWFwcGVkOyB9CiAg
ICAgYm9vbCBpc01hcFJlYWRhYmxlKCkgY29uc3QgeyByZXR1cm4gaXNNYXBSZWFkKCkgJiYgc3Rh
dGUoKSA9PSBTdGF0ZTo6VW5tYXBwZWQ7IH0KIApAQCAtMTI5LDcgKzEzMiw3IEBAIHByaXZhdGU6
CiAgICAgRGVmZXJyYWJsZVRhc2s8VGltZXI+IG1fbWFwcGluZ0NhbGxiYWNrVGFzazsKIAogICAg
IHVuc2lnbmVkIGxvbmcgbV9ieXRlTGVuZ3RoOwotICAgIEdQVUJ1ZmZlclVzYWdlOjpGbGFncyBt
X3VzYWdlOworICAgIE9wdGlvblNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+IG1fdXNhZ2U7CiAg
ICAgdW5zaWduZWQgbV9udW1TY2hlZHVsZWRDb21tYW5kQnVmZmVycyA9IDA7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQnVmZmVyVXNh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJVc2Fn
ZS5oCmluZGV4IGQyYzRhNjdiMDdlNmU3YzI1NWRkYjRlYmY1MjI5MGY2NTgwMWQ0NGMuLjk4M2Ri
NDg5MDY1M2FkYTRlOTNiYzY5MGY2NTI2MWEzNjQ1ZjQ0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJVc2FnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVCdWZmZXJVc2FnZS5oCkBAIC0zMSwy
MCArMzEsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBHUFVCdWZmZXJVc2Fn
ZUZsYWdzID0gdW5zaWduZWQgbG9uZzsKK3VzaW5nIEdQVUJ1ZmZlclVzYWdlRmxhZ3MgPSB1bnNp
Z25lZDsKIAogY2xhc3MgR1BVQnVmZmVyVXNhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVCdWZm
ZXJVc2FnZT4gewogcHVibGljOgotICAgIGVudW0gRmxhZ3MgOiBHUFVCdWZmZXJVc2FnZUZsYWdz
IHsKKyAgICBlbnVtIGNsYXNzIEZsYWdzIDogR1BVQnVmZmVyVXNhZ2VGbGFncyB7CiAgICAgICAg
IE5vbmUgPSAwLAotICAgICAgICBNYXBSZWFkID0gMSwKLSAgICAgICAgTWFwV3JpdGUgPSAyLAot
ICAgICAgICBUcmFuc2ZlclNyYyA9IDQsCi0gICAgICAgIFRyYW5zZmVyRHN0ID0gOCwKLSAgICAg
ICAgSW5kZXggPSAxNiwKLSAgICAgICAgVmVydGV4ID0gMzIsCi0gICAgICAgIFVuaWZvcm0gPSA2
NCwKLSAgICAgICAgU3RvcmFnZSA9IDEyOAorICAgICAgICBNYXBSZWFkID0gMSA8PCAwLAorICAg
ICAgICBNYXBXcml0ZSA9IDEgPDwgMSwKKyAgICAgICAgVHJhbnNmZXJTb3VyY2UgPSAxIDw8IDIs
CisgICAgICAgIFRyYW5zZmVyRGVzdGluYXRpb24gPSAxIDw8IDMsCisgICAgICAgIEluZGV4ID0g
MSA8PCA0LAorICAgICAgICBWZXJ0ZXggPSAxIDw8IDUsCisgICAgICAgIFVuaWZvcm0gPSAxIDw8
IDYsCisgICAgICAgIFN0b3JhZ2UgPSAxIDw8IDcsCiAgICAgfTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVQ29tbWFuZEJ1ZmZlci5o
CmluZGV4IDk5YmNlZjAyNmE0MDUzNjgxNzc0NzEyMDhkMTg5YzI0NzAyMzlhMWMuLmE1ODI1YzE4
OGU0NTRhNTVlMjA1MWI5NWZhMzQ0ZTg5YmY4ZDFiN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVDb21tYW5kQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVUNvbW1hbmRCdWZmZXIuaApAQCAtMjcs
MjcgKzI3LDcyIEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisjaW5jbHVkZSAiR1BVT3JpZ2lu
M0QuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CitPQkpDX1BST1RPQ09MKE1UTEJsaXRDb21tYW5kRW5jb2Rlcik7CiBPQkpDX1BST1RPQ09MKE1U
TENvbW1hbmRCdWZmZXIpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdQVUJ1ZmZl
cjsKIGNsYXNzIEdQVURldmljZTsKK2NsYXNzIEdQVVRleHR1cmU7CisKK3N0cnVjdCBHUFVFeHRl
bnQzRDsKIAogdXNpbmcgUGxhdGZvcm1Db21tYW5kQnVmZmVyID0gTVRMQ29tbWFuZEJ1ZmZlcjsK
IHVzaW5nIFBsYXRmb3JtQ29tbWFuZEJ1ZmZlclNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTENvbW1h
bmRCdWZmZXI+OwogCitzdHJ1Y3QgR1BVQnVmZmVyQ29weVZpZXdCYXNlIHsKKyAgICB1bnNpZ25l
ZCBsb25nIG9mZnNldDsKKyAgICB1bnNpZ25lZCBsb25nIHJvd1BpdGNoOworICAgIHVuc2lnbmVk
IGltYWdlSGVpZ2h0OworfTsKKworc3RydWN0IEdQVUJ1ZmZlckNvcHlWaWV3IGZpbmFsIDogR1BV
QnVmZmVyQ29weVZpZXdCYXNlIHsKKyAgICBHUFVCdWZmZXJDb3B5VmlldyhSZWY8R1BVQnVmZmVy
PiYmIGJ1ZmZlckNvcHksIGNvbnN0IEdQVUJ1ZmZlckNvcHlWaWV3QmFzZSYgYmFzZSkKKyAgICAg
ICAgOiBHUFVCdWZmZXJDb3B5Vmlld0Jhc2UoYmFzZSkKKyAgICAgICAgLCBidWZmZXIoV1RGTW92
ZShidWZmZXJDb3B5KSkKKyAgICB7CisgICAgfQorCisgICAgUmVmPEdQVUJ1ZmZlcj4gYnVmZmVy
OworfTsKKworc3RydWN0IEdQVVRleHR1cmVDb3B5Vmlld0Jhc2UgeworICAgIHVuc2lnbmVkIG1p
cExldmVsOworICAgIHVuc2lnbmVkIGFycmF5TGF5ZXI7CisgICAgR1BVT3JpZ2luM0Qgb3JpZ2lu
OworfTsKKworc3RydWN0IEdQVVRleHR1cmVDb3B5VmlldyBmaW5hbCA6IEdQVVRleHR1cmVDb3B5
Vmlld0Jhc2UgeworICAgIEdQVVRleHR1cmVDb3B5VmlldyhSZWY8R1BVVGV4dHVyZT4mJiB0ZXh0
dXJlQ29weSwgY29uc3QgR1BVVGV4dHVyZUNvcHlWaWV3QmFzZSYgYmFzZSkKKyAgICAgICAgOiBH
UFVUZXh0dXJlQ29weVZpZXdCYXNlKGJhc2UpCisgICAgICAgICwgdGV4dHVyZShXVEZNb3ZlKHRl
eHR1cmVDb3B5KSkKKyAgICB7CisgICAgfQorCisgICAgUmVmPEdQVVRleHR1cmU+IHRleHR1cmU7
Cit9OworCiBjbGFzcyBHUFVDb21tYW5kQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVQ29t
bWFuZEJ1ZmZlcj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZl
cj4gY3JlYXRlKEdQVURldmljZSYpOwogCiAgICAgUGxhdGZvcm1Db21tYW5kQnVmZmVyKiBwbGF0
Zm9ybUNvbW1hbmRCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtQ29tbWFuZEJ1ZmZl
ci5nZXQoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWY8R1BVQnVmZmVyPj4mIHVzZWRCdWZmZXJz
KCkgY29uc3QgeyByZXR1cm4gbV91c2VkQnVmZmVyczsgfQorI2lmIFVTRShNRVRBTCkKKyAgICBN
VExCbGl0Q29tbWFuZEVuY29kZXIgKmJsaXRFbmNvZGVyKCkgY29uc3Q7CisjZW5kaWYKKworICAg
IHZvaWQgY29weUJ1ZmZlclRvQnVmZmVyKFJlZjxHUFVCdWZmZXI+JiYsIHVuc2lnbmVkIGxvbmcg
c3JjT2Zmc2V0LCBSZWY8R1BVQnVmZmVyPiYmLCB1bnNpZ25lZCBsb25nIGRzdE9mZnNldCwgdW5z
aWduZWQgbG9uZyBzaXplKTsKKyAgICB2b2lkIGNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgR1BV
QnVmZmVyQ29weVZpZXcmLCBjb25zdCBHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBHUFVFeHRl
bnQzRCYpOworICAgIHZvaWQgY29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBHUFVUZXh0dXJlQ29w
eVZpZXcmLCBjb25zdCBHUFVCdWZmZXJDb3B5VmlldyYsIGNvbnN0IEdQVUV4dGVudDNEJik7Cisg
ICAgdm9pZCBjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBHUFVUZXh0dXJlQ29weVZpZXcmLCBj
b25zdCBHUFVUZXh0dXJlQ29weVZpZXcmLCBjb25zdCBHUFVFeHRlbnQzRCYpOwogCiAgICAgdm9p
ZCB1c2VCdWZmZXIoUmVmPEdQVUJ1ZmZlcj4mJiBidWZmZXIpIHsgbV91c2VkQnVmZmVycy5hcHBl
bmQoV1RGTW92ZShidWZmZXIpKTsgfQogCkBAIC01Niw2ICsxMDEsOSBAQCBwcml2YXRlOgogCiAg
ICAgUGxhdGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHIgbV9wbGF0Zm9ybUNvbW1hbmRCdWZmZXI7
CiAgICAgVmVjdG9yPFJlZjxHUFVCdWZmZXI+PiBtX3VzZWRCdWZmZXJzOworI2lmIFVTRShNRVRB
TCkKKyAgICBtdXRhYmxlIFJldGFpblB0cjxNVExCbGl0Q29tbWFuZEVuY29kZXI+IG1fYmxpdEVu
Y29kZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBh
c3NEZXNjcmlwdG9yLmgKaW5kZXggZjRhYzY5YWE0NWJiYzc3ZWQ0YmJkY2JmYWI3YTBmMzA4ZGM1
YmM4Ni4uZDY0Y2Y1ZjM5NzAyYzM2YzJlMWUyZGVhZjViNDhhZTE1MGRiZmQyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NEZXNj
cmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJl
bmRlclBhc3NEZXNjcmlwdG9yLmgKQEAgLTQzLDcgKzQzLDcgQEAgc3RydWN0IEdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnREZXNjcmlwdG9yQmFzZSB7CiB9OwogCiBzdHJ1Y3QgR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0b3IgZmluYWwgOiBHUFVSZW5kZXJQYXNzQ29sb3JB
dHRhY2htZW50RGVzY3JpcHRvckJhc2UgewotICAgIEdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1l
bnREZXNjcmlwdG9yKFJlZjxHUFVUZXh0dXJlPiYmLCBHUFVMb2FkT3AsIEdQVVN0b3JlT3AsIEdQ
VUNvbG9yKTsKKyAgICBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50RGVzY3JpcHRvcihSZWY8
R1BVVGV4dHVyZT4mJiwgY29uc3QgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudERlc2NyaXB0
b3JCYXNlJik7CiAKICAgICBSZWY8R1BVVGV4dHVyZT4gYXR0YWNobWVudDsKIH07CkBAIC01Nyw3
ICs1Nyw3IEBAIHN0cnVjdCBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudERlc2Ny
aXB0b3JCYXNlIHsKIH07CiAKIHN0cnVjdCBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNo
bWVudERlc2NyaXB0b3IgZmluYWwgOiBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVu
dERlc2NyaXB0b3JCYXNlIHsKLSAgICBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVu
dERlc2NyaXB0b3IoUmVmPEdQVVRleHR1cmU+JiYsIEdQVUxvYWRPcCwgR1BVU3RvcmVPcCwgZmxv
YXQpOworICAgIEdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50RGVzY3JpcHRvcihS
ZWY8R1BVVGV4dHVyZT4mJiwgY29uc3QgR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1l
bnREZXNjcmlwdG9yQmFzZSYpOwogCiAgICAgUmVmPEdQVVRleHR1cmU+IGF0dGFjaG1lbnQ7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRl
eHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJl
LmgKaW5kZXggNTVkMWUzYzgyODk3ZTM0NWY5YjNhNzI3Njg3NTBhZDU0YTM0N2EyNy4uOWEzNjkz
YWI0ZTQ3NzgwMjI4MzlkNzE4OTg1ZGNiYzkwYjhhYWM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oCkBAIC0yNyw2ICsyNyw4IEBA
CiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisjaW5jbHVkZSAiR1BVVGV4dHVyZVVzYWdlLmgiCisj
aW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQ0
LDE3ICs0NiwyMiBAQCB1c2luZyBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciA9IFJldGFpblB0cjxN
VExUZXh0dXJlPjsKIAogY2xhc3MgR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVRl
eHR1cmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNyZWF0
ZShjb25zdCBHUFVEZXZpY2UmLCBHUFVUZXh0dXJlRGVzY3JpcHRvciYmKTsKLSAgICBzdGF0aWMg
UmVmPEdQVVRleHR1cmU+IGNyZWF0ZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBjb25z
dCBHUFVUZXh0dXJlRGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBSZWY8R1BVVGV4dHVyZT4gY3Jl
YXRlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYsIE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6
OkZsYWdzPik7CiAKICAgICBQbGF0Zm9ybVRleHR1cmUgKnBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGxhdGZvcm1UZXh0dXJlLmdldCgpOyB9CisgICAgYm9vbCBpc1RyYW5zZmVy
U291cmNlKCkgY29uc3QgeyByZXR1cm4gbV91c2FnZS5jb250YWlucyhHUFVUZXh0dXJlVXNhZ2U6
OkZsYWdzOjpUcmFuc2ZlclNvdXJjZSk7IH0KKyAgICBib29sIGlzVHJhbnNmZXJEZXN0aW5hdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFn
czo6VHJhbnNmZXJEZXN0aW5hdGlvbik7IH0KKyAgICBib29sIGlzT3V0cHV0QXR0YWNobWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXNhZ2UuY29udGFpbnMoR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6
T3V0cHV0QXR0YWNobWVudCk7IH0KIAogICAgIFJlZlB0cjxHUFVUZXh0dXJlPiBjcmVhdGVEZWZh
dWx0VGV4dHVyZVZpZXcoKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBHUFVUZXh0dXJlKFBs
YXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYpOworICAgIGV4cGxpY2l0IEdQVVRleHR1cmUoUGxhdGZv
cm1UZXh0dXJlU21hcnRQdHImJiwgT3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+KTsK
IAogICAgIFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyIG1fcGxhdGZvcm1UZXh0dXJlOworCisgICAg
T3B0aW9uU2V0PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IG1fdXNhZ2U7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVVGV4dHVyZVVzYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVVGV4dHVyZVVzYWdlLmgKaW5kZXggMTdhMDMwMDdkNDk2YmM4NzIxY2E5NGU0
MDU4NmMxZjI5YTI0YTQ3NS4uNjI4OWY5MmQ4NzI1ODI3ZDhkZjM1MTU3YWE3YWQwYTRjZjI0M2Mw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVRl
eHR1cmVVc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVUZXh0dXJlVXNhZ2UuaApAQCAtMzEsMTYgKzMxLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAKLXVzaW5nIEdQVVRleHR1cmVVc2FnZUZsYWdzID0gdW5zaWduZWQgbG9uZzsKK3Vz
aW5nIEdQVVRleHR1cmVVc2FnZUZsYWdzID0gdW5zaWduZWQ7CiAgICAgCiBjbGFzcyBHUFVUZXh0
dXJlVXNhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVUZXh0dXJlVXNhZ2U+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgY29uc3QgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgTm9uZSA9IDA7Ci0gICAgc3Rh
dGljIGNvbnN0IEdQVVRleHR1cmVVc2FnZUZsYWdzIFRyYW5zZmVyU3JjID0gMTsKLSAgICBzdGF0
aWMgY29uc3QgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgVHJhbnNmZXJEc3QgPSAyOwotICAgIHN0YXRp
YyBjb25zdCBHUFVUZXh0dXJlVXNhZ2VGbGFncyBTYW1wbGVkID0gNDsKLSAgICBzdGF0aWMgY29u
c3QgR1BVVGV4dHVyZVVzYWdlRmxhZ3MgU3RvcmFnZSA9IDg7Ci0gICAgc3RhdGljIGNvbnN0IEdQ
VVRleHR1cmVVc2FnZUZsYWdzIE91dHB1dEF0dGFjaG1lbnQgPSAxNjsKKyAgICBlbnVtIGNsYXNz
IEZsYWdzIDogR1BVVGV4dHVyZVVzYWdlRmxhZ3MgeworICAgICAgICBOb25lID0gMCwKKyAgICAg
ICAgVHJhbnNmZXJTb3VyY2UgPSAxIDw8IDAsCisgICAgICAgIFRyYW5zZmVyRGVzdGluYXRpb24g
PSAxIDw8IDEsCisgICAgICAgIFNhbXBsZWQgPSAxIDw8IDIsCisgICAgICAgIFN0b3JhZ2UgPSAx
IDw8IDMsCisgICAgICAgIE91dHB1dEF0dGFjaG1lbnQgPSAxIDw8IDQsCisgICAgfTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVCdWZmZXJNZXRhbC5tbQppbmRleCAwZDhj
MjA4MTgwYzBiNTE2ZWM4ZTlkNTZkMzYyNzJhZjU5OWZhMGY1Li44NjlhZTkwMzk2YjMyZWRjYjcx
OTY2MGM3MWExZTU5MjFhMzVjZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVQnVmZmVyTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUJ1ZmZlck1ldGFsLm1tCkBAIC0zOSwy
MiArMzksMjIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgYXV0byBy
ZWFkT25seU1hc2sgPSBHUFVCdWZmZXJVc2FnZTo6SW5kZXggfCBHUFVCdWZmZXJVc2FnZTo6VmVy
dGV4IHwgR1BVQnVmZmVyVXNhZ2U6OlVuaWZvcm0gfCBHUFVCdWZmZXJVc2FnZTo6VHJhbnNmZXJT
cmM7CitzdGF0aWMgY29uc3QgYXV0byByZWFkT25seUZsYWdzID0gT3B0aW9uU2V0PEdQVUJ1ZmZl
clVzYWdlOjpGbGFncz4geyBHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6OkluZGV4LCBHUFVCdWZmZXJV
c2FnZTo6RmxhZ3M6OlZlcnRleCwgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpVbmlmb3JtLCBHUFVC
dWZmZXJVc2FnZTo6RmxhZ3M6OlRyYW5zZmVyU291cmNlIH07CiAKIAotYm9vbCBHUFVCdWZmZXI6
OnZhbGlkYXRlQnVmZmVyQ3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVC
dWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBHUFVCdWZmZXI6OnZhbGlkYXRlQnVm
ZmVyVXNhZ2UoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIE9wdGlvblNldDxHUFVCdWZmZXJVc2Fn
ZTo6RmxhZ3M+IHVzYWdlKQogewogICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsK
ICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUJ1ZmZlcjo6Y3JlYXRlKCk6IEludmFsaWQgR1BVRGV2
aWNlISIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKChkZXNjcmlw
dG9yLnVzYWdlICYgR1BVQnVmZmVyVXNhZ2U6Ok1hcFdyaXRlKSAmJiAoZGVzY3JpcHRvci51c2Fn
ZSAmIEdQVUJ1ZmZlclVzYWdlOjpNYXBSZWFkKSkgeworICAgIGlmICh1c2FnZS5jb250YWluc0Fs
bCh7IEdQVUJ1ZmZlclVzYWdlOjpGbGFnczo6TWFwV3JpdGUsIEdQVUJ1ZmZlclVzYWdlOjpGbGFn
czo6TWFwUmVhZCB9KSkgewogICAgICAgICBMT0coV2ViR1BVLCAiR1BVQnVmZmVyOjpjcmVhdGUo
KTogQnVmZmVyIGNhbm5vdCBoYXZlIGJvdGggTUFQX1JFQUQgYW5kIE1BUF9XUklURSB1c2FnZSEi
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICgoZGVzY3JpcHRvci51
c2FnZSAmIHJlYWRPbmx5TWFzaykgJiYgKGRlc2NyaXB0b3IudXNhZ2UgJiBHUFVCdWZmZXJVc2Fn
ZTo6U3RvcmFnZSkpIHsKKyAgICBpZiAodXNhZ2UuY29udGFpbnNBbnkocmVhZE9ubHlGbGFncykg
JiYgKHVzYWdlICYgR1BVQnVmZmVyVXNhZ2U6OkZsYWdzOjpTdG9yYWdlKSkgewogICAgICAgICBM
T0coV2ViR1BVLCAiR1BVQnVmZmVyOjpjcmVhdGUoKTogQnVmZmVyIGNhbm5vdCBoYXZlIGJvdGgg
U1RPUkFHRSBhbmQgYSByZWFkLW9ubHkgdXNhZ2UhIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CkBAIC02NCw3ICs2NCw4IEBAIGJvb2wgR1BVQnVmZmVyOjp2YWxpZGF0ZUJ1ZmZlckNy
ZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgY29uc3QgR1BVQnVmZmVyRGVzCiAKIFJlZlB0
cjxHUFVCdWZmZXI+IEdQVUJ1ZmZlcjo6dHJ5Q3JlYXRlKFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNl
LCBHUFVCdWZmZXJEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKIHsKLSAgICBpZiAoIXZhbGlkYXRl
QnVmZmVyQ3JlYXRlKGRldmljZS5nZXQoKSwgZGVzY3JpcHRvcikpCisgICAgYXV0byB1c2FnZSA9
IE9wdGlvblNldDxHUFVCdWZmZXJVc2FnZTo6RmxhZ3M+Ojpmcm9tUmF3KGRlc2NyaXB0b3IudXNh
Z2UpOworICAgIGlmICghdmFsaWRhdGVCdWZmZXJVc2FnZShkZXZpY2UuZ2V0KCksIHVzYWdlKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBGSVhNRTogTWV0YWwgYmVzdCBwcmFj
dGljZXM6IFJlYWQtb25seSBvbmUtdGltZS11c2UgZGF0YSBsZXNzIHRoYW4gNCBLQiBzaG91bGQg
bm90IGFsbG9jYXRlIGEgTVRMQnVmZmVyIGFuZCBiZSB1c2VkIGluIFtNVExDb21tYW5kRW5jb2Rl
ciBzZXQqQnl0ZXNdIGNhbGxzIGluc3RlYWQuCkBAIC03Miw3ICs3Myw3IEBAIFJlZlB0cjxHUFVC
dWZmZXI+IEdQVUJ1ZmZlcjo6dHJ5Q3JlYXRlKFJlZjxHUFVEZXZpY2U+JiYgZGV2aWNlLCBHUFVC
dWZmZXJEZXNjcmlwCiAgICAgTVRMUmVzb3VyY2VPcHRpb25zIHJlc291cmNlT3B0aW9ucyA9IE1U
TFJlc291cmNlQ1BVQ2FjaGVNb2RlRGVmYXVsdENhY2hlOwogCiAgICAgLy8gTWFwcGFibGUgYnVm
ZmVycyB1c2Ugc2hhcmVkIHN0b3JhZ2UgYWxsb2NhdGlvbi4KLSAgICByZXNvdXJjZU9wdGlvbnMg
fD0gKGRlc2NyaXB0b3IudXNhZ2UgJiAoR1BVQnVmZmVyVXNhZ2U6Ok1hcFdyaXRlIHwgR1BVQnVm
ZmVyVXNhZ2U6Ok1hcFJlYWQpKSA/IE1UTFJlc291cmNlU3RvcmFnZU1vZGVTaGFyZWQgOiBNVExS
ZXNvdXJjZVN0b3JhZ2VNb2RlUHJpdmF0ZTsKKyAgICByZXNvdXJjZU9wdGlvbnMgfD0gdXNhZ2Uu
Y29udGFpbnNBbnkoeyBHUFVCdWZmZXJVc2FnZTo6RmxhZ3M6Ok1hcFdyaXRlLCBHUFVCdWZmZXJV
c2FnZTo6RmxhZ3M6Ok1hcFJlYWQgfSkgPyBNVExSZXNvdXJjZVN0b3JhZ2VNb2RlU2hhcmVkIDog
TVRMUmVzb3VyY2VTdG9yYWdlTW9kZVByaXZhdGU7CiAKICAgICBSZXRhaW5QdHI8TVRMQnVmZmVy
PiBtdGxCdWZmZXI7CiAKQEAgLTg3LDE0ICs4OCwxNCBAQCBSZWZQdHI8R1BVQnVmZmVyPiBHUFVC
dWZmZXI6OnRyeUNyZWF0ZShSZWY8R1BVRGV2aWNlPiYmIGRldmljZSwgR1BVQnVmZmVyRGVzY3Jp
cAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBHUFVCdWZmZXIoV1RGTW92ZShtdGxCdWZmZXIpLCBkZXNjcmlwdG9yLCBXVEZNb3ZlKGRl
dmljZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVCdWZmZXIoV1RGTW92ZShtdGxC
dWZmZXIpLCBkZXNjcmlwdG9yLCB1c2FnZSwgV1RGTW92ZShkZXZpY2UpKSk7CiB9CiAKLUdQVUJ1
ZmZlcjo6R1BVQnVmZmVyKFJldGFpblB0cjxNVExCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBHUFVC
dWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBSZWY8R1BVRGV2aWNlPiYmIGRldmljZSkKK0dQ
VUJ1ZmZlcjo6R1BVQnVmZmVyKFJldGFpblB0cjxNVExCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBH
UFVCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBPcHRpb25TZXQ8R1BVQnVmZmVyVXNhZ2U6
OkZsYWdzPiB1c2FnZSwgUmVmPEdQVURldmljZT4mJiBkZXZpY2UpCiAgICAgOiBtX3BsYXRmb3Jt
QnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKICAgICAsIG1fZGV2aWNlKFdURk1vdmUoZGV2aWNlKSkK
ICAgICAsIG1fYnl0ZUxlbmd0aChkZXNjcmlwdG9yLnNpemUpCi0gICAgLCBtX3VzYWdlKHN0YXRp
Y19jYXN0PEdQVUJ1ZmZlclVzYWdlOjpGbGFncz4oZGVzY3JpcHRvci51c2FnZSkpCisgICAgLCBt
X3VzYWdlKHVzYWdlKQogewogfQogCkBAIC0xMDUsNyArMTA2LDcgQEAgR1BVQnVmZmVyOjp+R1BV
QnVmZmVyKCkKIAogYm9vbCBHUFVCdWZmZXI6OmlzUmVhZE9ubHkoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3VzYWdlICYgcmVhZE9ubHlNYXNrOworICAgIHJldHVybiBtX3VzYWdlLmNvbnRhaW5z
QW55KHJlYWRPbmx5RmxhZ3MpOwogfQogCiBHUFVCdWZmZXI6OlN0YXRlIEdQVUJ1ZmZlcjo6c3Rh
dGUoKSBjb25zdApAQCAtMTIwLDE4ICsxMjEsMjQgQEAgR1BVQnVmZmVyOjpTdGF0ZSBHUFVCdWZm
ZXI6OnN0YXRlKCkgY29uc3QKIAogdm9pZCBHUFVCdWZmZXI6OnNldFN1YkRhdGEodW5zaWduZWQg
bG9uZyBvZmZzZXQsIGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImIGRhdGEpCiB7Ci0gICAgaWYgKCFp
c1RyYW5zZmVyRHN0KCkgfHwgc3RhdGUoKSAhPSBTdGF0ZTo6VW5tYXBwZWQpIHsKKyAgICBpZiAo
IWlzVHJhbnNmZXJEZXN0aW5hdGlvbigpIHx8IHN0YXRlKCkgIT0gU3RhdGU6OlVubWFwcGVkKSB7
CiAgICAgICAgIExPRyhXZWJHUFUsICJHUFVCdWZmZXI6OnNldFN1YkRhdGEoKTogSW52YWxpZCBv
cGVyYXRpb24hIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyNpZiBQTEFURk9STShNQUMp
CisgICAgaWYgKG9mZnNldCAlIDQgfHwgZGF0YS5ieXRlTGVuZ3RoKCkgJSA0KSB7CisgICAgICAg
IExPRyhXZWJHUFUsICJHUFVCdWZmZXI6OnNldFN1YkRhdGEoKTogRGF0YSBtdXN0IGJlIGFsaWdu
ZWQgdG8gYSBtdWx0aXBsZSBvZiA0IGJ5dGVzISIpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmCisKICAgICBhdXRvIHN1YkRhdGFMZW5ndGggPSBjaGVja2VkU3VtPHVuc2lnbmVkIGxv
bmc+KGRhdGEuYnl0ZUxlbmd0aCgpLCBvZmZzZXQpOwogICAgIGlmIChzdWJEYXRhTGVuZ3RoLmhh
c092ZXJmbG93ZWQoKSB8fCBzdWJEYXRhTGVuZ3RoLnVuc2FmZUdldCgpID4gbV9ieXRlTGVuZ3Ro
KSB7CiAgICAgICAgIExPRyhXZWJHUFUsICJHUFVCdWZmZXI6OnNldFN1YkRhdGEoKTogSW52YWxp
ZCBvZmZzZXQgb3IgZGF0YSBzaXplISIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Ly8gRklYTUU6IEFkZCBhbGlnbm1lbnQgY2hlY2tzIG9uY2Ugc3BlY2lmaWVkLgotCiAgICAgaWYg
KG1fc3ViRGF0YUJ1ZmZlcnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKICAgICAgICAgbV9zdWJEYXRhQnVmZmVycy5hcHBlbmQoYWRvcHROUyhbbV9w
bGF0Zm9ybUJ1ZmZlci5nZXQoKS5kZXZpY2UgbmV3QnVmZmVyV2l0aExlbmd0aDptX2J5dGVMZW5n
dGggb3B0aW9uczpNVExSZXNvdXJjZUNQVUNhY2hlTW9kZURlZmF1bHRDYWNoZV0pKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVDb21t
YW5kQnVmZmVyTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVQ29tbWFuZEJ1ZmZlck1ldGFsLm1tCmluZGV4IDkzZWRjMTFhODBlY2I2YTA2NDE4
YjUyYzI2MTQ2MzgzMmYxZjc5NmIuLmIwYTk3NmRiZTRiZTdiMzNhY2I0YTJjMzdlYzZjYTY2OWVj
N2E2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVDb21tYW5kQnVmZmVyTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVUNvbW1hbmRCdWZmZXJNZXRhbC5tbQpAQCAtMjgsMTIg
KzI4LDE2IEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisjaW1wb3J0ICJHUFVCdWZmZXIuaCIK
ICNpbXBvcnQgIkdQVURldmljZS5oIgorI2ltcG9ydCAiR1BVRXh0ZW50M0QuaCIKICNpbXBvcnQg
IkdQVVF1ZXVlLmgiCisjaW1wb3J0ICJHUFVUZXh0dXJlLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CiAKICNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oPgorI2ltcG9ydCA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNTAsNyArNTQsNyBAQCBSZWZQdHI8R1BVQ29tbWFuZEJ1ZmZlcj4gR1BV
Q29tbWFuZEJ1ZmZlcjo6Y3JlYXRlKEdQVURldmljZSYgZGV2aWNlKQogCiAgICAgYXV0byBtdGxR
dWV1ZSA9IGdwdUNvbW1hbmRRdWV1ZS0+cGxhdGZvcm1RdWV1ZSgpOwogCi0gICAgUGxhdGZvcm1D
b21tYW5kQnVmZmVyU21hcnRQdHIgYnVmZmVyOworICAgIFJldGFpblB0cjxNVExDb21tYW5kQnVm
ZmVyPiBidWZmZXI7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTY2
LDExICs3MCwxNDIgQEAgUmVmUHRyPEdQVUNvbW1hbmRCdWZmZXI+IEdQVUNvbW1hbmRCdWZmZXI6
OmNyZWF0ZShHUFVEZXZpY2UmIGRldmljZSkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVUNv
bW1hbmRCdWZmZXIoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKLUdQVUNvbW1hbmRCdWZmZXI6OkdQ
VUNvbW1hbmRCdWZmZXIoUGxhdGZvcm1Db21tYW5kQnVmZmVyU21hcnRQdHImJiBidWZmZXIpCitH
UFVDb21tYW5kQnVmZmVyOjpHUFVDb21tYW5kQnVmZmVyKFJldGFpblB0cjxNVExDb21tYW5kQnVm
ZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fcGxhdGZvcm1Db21tYW5kQnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSkKIHsKIH0KIAorTVRMQmxpdENvbW1hbmRFbmNvZGVyICpHUFVDb21tYW5kQnVmZmVyOjpi
bGl0RW5jb2RlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYmxpdEVuY29kZXIgPyBtX2JsaXRF
bmNvZGVyLmdldCgpIDogKG1fYmxpdEVuY29kZXIgPSBbbV9wbGF0Zm9ybUNvbW1hbmRCdWZmZXIg
YmxpdENvbW1hbmRFbmNvZGVyXSkuZ2V0KCk7Cit9CisKK3ZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6
Y29weUJ1ZmZlclRvQnVmZmVyKFJlZjxHUFVCdWZmZXI+JiYgc3JjLCB1bnNpZ25lZCBsb25nIHNy
Y09mZnNldCwgUmVmPEdQVUJ1ZmZlcj4mJiBkc3QsIHVuc2lnbmVkIGxvbmcgZHN0T2Zmc2V0LCB1
bnNpZ25lZCBsb25nIHNpemUpCit7CisgICAgaWYgKCFzcmMtPmlzVHJhbnNmZXJTb3VyY2UoKSB8
fCAhZHN0LT5pc1RyYW5zZmVyRGVzdGluYXRpb24oKSkgeworICAgICAgICBMT0coV2ViR1BVLCAi
R1BVQ29tbWFuZEJ1ZmZlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKCk6IEludmFsaWQgb3BlcmF0aW9u
ISIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlm
IChzaXplICUgNCB8fCBzcmNPZmZzZXQgJSA0IHx8IGRzdE9mZnNldCAlIDQpIHsKKyAgICAgICAg
TE9HKFdlYkdQVSwgIkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBDb3B5
IG11c3QgYmUgYWxpZ25lZCB0byBhIG11bHRpcGxlIG9mIDQgYnl0ZXMhIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGF1dG8gc3JjTGVuZ3RoID0gY2hlY2tlZFN1bTx1
bnNpZ25lZCBsb25nPihzaXplLCBzcmNPZmZzZXQpOworICAgIGF1dG8gZHN0TGVuZ3RoID0gY2hl
Y2tlZFN1bTx1bnNpZ25lZCBsb25nPihzaXplLCBkc3RPZmZzZXQpOworICAgIGlmIChzcmNMZW5n
dGguaGFzT3ZlcmZsb3dlZCgpIHx8IGRzdExlbmd0aC5oYXNPdmVyZmxvd2VkKCkKKyAgICAgICAg
fHwgc3JjTGVuZ3RoLnVuc2FmZUdldCgpID4gc3JjLT5ieXRlTGVuZ3RoKCkgfHwgZHN0TGVuZ3Ro
LnVuc2FmZUdldCgpID4gZHN0LT5ieXRlTGVuZ3RoKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwg
IkdQVUNvbW1hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcigpOiBJbnZhbGlkIG9mZnNldCBv
ciBjb3B5IHNpemUhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBbYmxpdEVuY29kZXIoKQorICAgICAgICBjb3B5RnJv
bUJ1ZmZlcjpzcmMtPnBsYXRmb3JtQnVmZmVyKCkKKyAgICAgICAgc291cmNlT2Zmc2V0OnNyY09m
ZnNldAorICAgICAgICB0b0J1ZmZlcjpkc3QtPnBsYXRmb3JtQnVmZmVyKCkKKyAgICAgICAgZGVz
dGluYXRpb25PZmZzZXQ6ZHN0T2Zmc2V0CisgICAgICAgIHNpemU6c2l6ZV07CisKKyAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgdXNlQnVmZmVyKFdURk1vdmUoc3JjKSk7Cisg
ICAgdXNlQnVmZmVyKFdURk1vdmUoZHN0KSk7Cit9CisKK3ZvaWQgR1BVQ29tbWFuZEJ1ZmZlcjo6
Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBHUFVCdWZmZXJDb3B5VmlldyYgc3JjQnVmZmVyLCBj
b25zdCBHUFVUZXh0dXJlQ29weVZpZXcmIGRzdFRleHR1cmUsIGNvbnN0IEdQVUV4dGVudDNEJiBz
aXplKQoreworICAgIGlmICghc3JjQnVmZmVyLmJ1ZmZlci0+aXNUcmFuc2ZlclNvdXJjZSgpIHx8
ICFkc3RUZXh0dXJlLnRleHR1cmUtPmlzVHJhbnNmZXJEZXN0aW5hdGlvbigpKSB7CisgICAgICAg
IExPRyhXZWJHUFUsICJHUFVDb21hbmRCdWZmZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoKTogSW52
YWxpZCBvcGVyYXRpb24hIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhN
RTogQWRkIE1ldGFsIHZhbGlkYXRpb24uCisKKyAgICAvLyBHUFVCdWZmZXJDb3B5Vmlldzo6b2Zm
c2V0OiBUaGUgbG9jYXRpb24gbXVzdCBiZSBhbGlnbmVkIHRvIHRoZSBzaXplIG9mIHRoZSBkZXN0
aW5hdGlvbiB0ZXh0dXJlJ3MgcGl4ZWwgZm9ybWF0LiBUaGUgdmFsdWUgbXVzdCBiZSBhIG11bHRp
cGxlIG9mIHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlJ3MgcGl4ZWwgc2l6ZSwgaW4gYnl0ZXMuCisK
KyAgICAvLyBHUFVCdWZmZXJDb3B5Vmlldzo6cm93UGl0Y2g6IFRoZSB2YWx1ZSBtdXN0IGJlIGEg
bXVsdGlwbGUgb2YgdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUncyBwaXhlbCBzaXplLCBpbiBieXRl
cy4gVGhlIHZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDMyLDc2NyBtdWx0aXBs
aWVkIGJ5IHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJl4oCZcyBwaXhlbCBzaXplLgorCisgICAgLy8g
R1BVQnVmZmVyQ29weVZpZXc6OmltYWdlSGVpZ2h0OiBUaGUgdmFsdWUgbXVzdCBiZSBhIG11bHRp
cGxlIG9mIHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlJ3MgcGl4ZWwgc2l6ZSwgaW4gYnl0ZXMuCisK
KyAgICAvLyBHUFVFeHRlbnQzRDogV2hlbiB5b3UgY29weSB0byBhIDFEIHRleHR1cmUsIGhlaWdo
dCBhbmQgZGVwdGggbXVzdCBiZSAxLiBXaGVuIHlvdSBjb3B5IHRvIGEgMkQgdGV4dHVyZSwgZGVw
dGggbXVzdCBiZSAxLgorCisgICAgLy8gR1BVVGV4dHVyZUNvcHlWaWV3Ojp0ZXh0dXJlOiBUaGUg
dmFsdWUgbXVzdCBub3QgYmUgYSBmcmFtZWJ1ZmZlck9ubHkgdGV4dHVyZSBhbmQgbXVzdCBub3Qg
aGF2ZSBhIFBWUlRDIHBpeGVsIGZvcm1hdC4KKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKKworICAgIFtibGl0RW5jb2RlcigpCisgICAgICAgIGNvcHlGcm9tQnVmZmVyOnNyY0J1
ZmZlci5idWZmZXItPnBsYXRmb3JtQnVmZmVyKCkKKyAgICAgICAgc291cmNlT2Zmc2V0OnNyY0J1
ZmZlci5vZmZzZXQKKyAgICAgICAgc291cmNlQnl0ZXNQZXJSb3c6c3JjQnVmZmVyLnJvd1BpdGNo
CisgICAgICAgIHNvdXJjZUJ5dGVzUGVySW1hZ2U6c3JjQnVmZmVyLmltYWdlSGVpZ2h0CisgICAg
ICAgIHNvdXJjZVNpemU6TVRMU2l6ZU1ha2Uoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUu
ZGVwdGgpCisgICAgICAgIHRvVGV4dHVyZTpkc3RUZXh0dXJlLnRleHR1cmUtPnBsYXRmb3JtVGV4
dHVyZSgpCisgICAgICAgIGRlc3RpbmF0aW9uU2xpY2U6ZHN0VGV4dHVyZS5hcnJheUxheWVyCisg
ICAgICAgIGRlc3RpbmF0aW9uTGV2ZWw6ZHN0VGV4dHVyZS5taXBMZXZlbAorICAgICAgICBkZXN0
aW5hdGlvbk9yaWdpbjpNVExPcmlnaW5NYWtlKGRzdFRleHR1cmUub3JpZ2luLngsIGRzdFRleHR1
cmUub3JpZ2luLnksIGRzdFRleHR1cmUub3JpZ2luLnopXTsKKworICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CisKKyAgICB1c2VCdWZmZXIoc3JjQnVmZmVyLmJ1ZmZlci5jb3B5UmVmKCkp
OworfQorCit2b2lkIEdQVUNvbW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoY29uc3Qg
R1BVVGV4dHVyZUNvcHlWaWV3JiBzcmNUZXh0dXJlLCBjb25zdCBHUFVCdWZmZXJDb3B5VmlldyYg
ZHN0QnVmZmVyLCBjb25zdCBHUFVFeHRlbnQzRCYgc2l6ZSkKK3sKKyAgICBpZiAoIXNyY1RleHR1
cmUudGV4dHVyZS0+aXNUcmFuc2ZlclNvdXJjZSgpIHx8ICFkc3RCdWZmZXIuYnVmZmVyLT5pc1Ry
YW5zZmVyRGVzdGluYXRpb24oKSkgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVQ29tbWFuZEJ1
ZmZlcjo6Y29weVRleHR1cmVUb0J1ZmZlcigpOiBJbnZhbGlkIG9wZXJhdGlvbiEiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBBZGQgTWV0YWwgdmFsaWRhdGlvbj8K
KworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIFtibGl0RW5jb2Rlcigp
CisgICAgICAgIGNvcHlGcm9tVGV4dHVyZTpzcmNUZXh0dXJlLnRleHR1cmUtPnBsYXRmb3JtVGV4
dHVyZSgpCisgICAgICAgIHNvdXJjZVNsaWNlOnNyY1RleHR1cmUuYXJyYXlMYXllcgorICAgICAg
ICBzb3VyY2VMZXZlbDpzcmNUZXh0dXJlLm1pcExldmVsCisgICAgICAgIHNvdXJjZU9yaWdpbjpN
VExPcmlnaW5NYWtlKHNyY1RleHR1cmUub3JpZ2luLngsIHNyY1RleHR1cmUub3JpZ2luLnksIHNy
Y1RleHR1cmUub3JpZ2luLnopCisgICAgICAgIHNvdXJjZVNpemU6TVRMU2l6ZU1ha2Uoc2l6ZS53
aWR0aCwgc2l6ZS5oZWlnaHQsIHNpemUuZGVwdGgpCisgICAgICAgIHRvQnVmZmVyOmRzdEJ1ZmZl
ci5idWZmZXItPnBsYXRmb3JtQnVmZmVyKCkKKyAgICAgICAgZGVzdGluYXRpb25PZmZzZXQ6ZHN0
QnVmZmVyLm9mZnNldAorICAgICAgICBkZXN0aW5hdGlvbkJ5dGVzUGVyUm93OmRzdEJ1ZmZlci5y
b3dQaXRjaAorICAgICAgICBkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2U6ZHN0QnVmZmVyLmltYWdl
SGVpZ2h0XTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICB1c2VCdWZm
ZXIoZHN0QnVmZmVyLmJ1ZmZlci5jb3B5UmVmKCkpOworfQorCit2b2lkIEdQVUNvbW1hbmRCdWZm
ZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IEdQVVRleHR1cmVDb3B5VmlldyYgc3JjLCBj
b25zdCBHUFVUZXh0dXJlQ29weVZpZXcmIGRzdCwgY29uc3QgR1BVRXh0ZW50M0QmIHNpemUpCit7
CisgICAgaWYgKCFzcmMudGV4dHVyZS0+aXNUcmFuc2ZlclNvdXJjZSgpIHx8ICFkc3QudGV4dHVy
ZS0+aXNUcmFuc2ZlckRlc3RpbmF0aW9uKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVUNv
bW1hbmRCdWZmZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKCk6IEludmFsaWQgb3BlcmF0aW9uISIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IEFkZCBNZXRhbCB2YWxp
ZGF0aW9uPworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgW2JsaXRF
bmNvZGVyKCkKKyAgICAgICAgY29weUZyb21UZXh0dXJlOnNyYy50ZXh0dXJlLT5wbGF0Zm9ybVRl
eHR1cmUoKQorICAgICAgICBzb3VyY2VTbGljZTpzcmMuYXJyYXlMYXllcgorICAgICAgICBzb3Vy
Y2VMZXZlbDpzcmMubWlwTGV2ZWwKKyAgICAgICAgc291cmNlT3JpZ2luOk1UTE9yaWdpbk1ha2Uo
c3JjLm9yaWdpbi54LCBzcmMub3JpZ2luLnksIHNyYy5vcmlnaW4ueikKKyAgICAgICAgc291cmNl
U2l6ZTpNVExTaXplTWFrZShzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6ZS5kZXB0aCkKKyAg
ICAgICAgdG9UZXh0dXJlOmRzdC50ZXh0dXJlLT5wbGF0Zm9ybVRleHR1cmUoKQorICAgICAgICBk
ZXN0aW5hdGlvblNsaWNlOnNyYy5hcnJheUxheWVyCisgICAgICAgIGRlc3RpbmF0aW9uTGV2ZWw6
c3JjLm1pcExldmVsCisgICAgICAgIGRlc3RpbmF0aW9uT3JpZ2luOk1UTE9yaWdpbk1ha2UoZHN0
Lm9yaWdpbi54LCBkc3Qub3JpZ2luLnksIGRzdC5vcmlnaW4ueildOworCisgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVRdWV1ZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0KaW5kZXggOTFiYmQ1YTYwZTQ3
MmFmOTcwMWI3OTk5YTk2YzIyNDAyMmQyZjIwMC4uYjk5ZTNjNmFhNmU4M2YwY2YxNjdlZjEwMmQz
NWRhNjc5OWRjNmIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVF1ZXVlTWV0YWwubW0KQEAgLTcyLDcgKzcyLDExIEBA
IEdQVVF1ZXVlOjpHUFVRdWV1ZShQbGF0Zm9ybVF1ZXVlU21hcnRQdHImJiBxdWV1ZSkKIAogdm9p
ZCBHUFVRdWV1ZTo6c3VibWl0KFZlY3RvcjxSZWY8Y29uc3QgR1BVQ29tbWFuZEJ1ZmZlcj4+JiYg
Y29tbWFuZEJ1ZmZlcnMpCiB7CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCiAg
ICAgZm9yIChhdXRvJiBjb21tYW5kQnVmZmVyIDogY29tbWFuZEJ1ZmZlcnMpIHsKKyAgICAgICAg
aWYgKGNvbW1hbmRCdWZmZXItPmJsaXRFbmNvZGVyKCkpCisgICAgICAgICAgICBbY29tbWFuZEJ1
ZmZlci0+YmxpdEVuY29kZXIoKSBlbmRFbmNvZGluZ107CiAgICAgICAgIC8vIFByZXZlbnQgYW55
IGJ1ZmZlciBtYXBwaW5nIGNhbGxiYWNrcyBmcm9tIGV4ZWN1dGluZyB1bnRpbCBjb21tYW5kIGJ1
ZmZlciBpcyBjb21wbGV0ZS4KICAgICAgICAgZm9yIChhdXRvJiBidWZmZXIgOiBjb21tYW5kQnVm
ZmVyLT51c2VkQnVmZmVycygpKSB7CiAgICAgICAgICAgICBpZiAoYnVmZmVyLT5zdGF0ZSgpICE9
IEdQVUJ1ZmZlcjo6U3RhdGU6OlVubWFwcGVkKSB7CkBAIC04NCw2ICs4OCw4IEBAIHZvaWQgR1BV
UXVldWU6OnN1Ym1pdChWZWN0b3I8UmVmPGNvbnN0IEdQVUNvbW1hbmRCdWZmZXI+PiYmIGNvbW1h
bmRCdWZmZXJzKQogCiAgICAgICAgIFtjb21tYW5kQnVmZmVyLT5wbGF0Zm9ybUNvbW1hbmRCdWZm
ZXIoKSBjb21taXRdOwogICAgIH0KKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9
CiAKIFN0cmluZyBHUFVRdWV1ZTo6bGFiZWwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1l
dGFsLm1tCmluZGV4IDE1NTAyZTljZDZiNmM1Mzg3MGVjNmIzZGFkZjJmODhjYzYzMDBiOWQuLmQy
Y2I4MjRlYWQ0ODlhNzZjYmZkNzJjYjViMmNjZGVmM2FmMDhmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dh
cENoYWluTWV0YWwubW0KQEAgLTExNyw3ICsxMTcsNyBAQCBSZWZQdHI8R1BVVGV4dHVyZT4gR1BV
U3dhcENoYWluOjpnZXROZXh0VGV4dHVyZSgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIHJldHVybiBHUFVUZXh0dXJlOjpjcmVhdGUoV1RGTW92ZShtdGxUZXh0dXJlKSk7
CisgICAgcmV0dXJuIEdQVVRleHR1cmU6OmNyZWF0ZShXVEZNb3ZlKG10bFRleHR1cmUpLCBHUFVU
ZXh0dXJlVXNhZ2U6OkZsYWdzOjpPdXRwdXRBdHRhY2htZW50KTsKIH0KIAogdm9pZCBHUFVTd2Fw
Q2hhaW46OnByZXNlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KaW5kZXggYjc5M2UwMjVl
NWIzYmFlNGZhNzE0ZjQ4OTMwMDQyNTY2MTMzMTVhMi4uMWExNTdiYzYyM2IwNDBhZGJhYmI5ZmY5
NzM4NDQ5NjZmZmFkMmE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCkBAIC01NCwyNSAr
NTQsMzIgQEAgc3RhdGljIE1UTFRleHR1cmVUeXBlIG10bFRleHR1cmVUeXBlRm9yR1BVVGV4dHVy
ZURlc2NyaXB0b3IoY29uc3QgR1BVVGV4dHVyZURlc2MKICAgICB9CiB9CiAKLXN0YXRpYyBPcHRp
b25hbDxNVExUZXh0dXJlVXNhZ2U+IG10bFRleHR1cmVVc2FnZUZvckdQVVRleHR1cmVVc2FnZUZs
YWdzKEdQVVRleHR1cmVVc2FnZUZsYWdzIGZsYWdzKQorc3RhdGljIE9wdGlvbmFsPE1UTFRleHR1
cmVVc2FnZT4gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3MoT3B0aW9uU2V0
PEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M+IGZsYWdzLCBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlv
bk5hbWUpCiB7Ci0gICAgTVRMVGV4dHVyZVVzYWdlIHVzYWdlID0gTVRMVGV4dHVyZVVzYWdlVW5r
bm93bjsKLQotICAgIGlmIChmbGFncyAmIEdQVVRleHR1cmVVc2FnZTo6U3RvcmFnZSkKLSAgICAg
ICAgdXNhZ2UgfD0gTVRMVGV4dHVyZVVzYWdlU2hhZGVyV3JpdGUgfCBNVExUZXh0dXJlVXNhZ2VT
aGFkZXJSZWFkIHwgTVRMVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3OworI2lmIExPR19ESVNB
QkxFRAorICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOworI2VuZGlmCisgICAgaWYgKGZs
YWdzLmNvbnRhaW5zQW55KHsgR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6VHJhbnNmZXJTb3VyY2Us
IEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6OlNhbXBsZWQgfSkgJiYgKGZsYWdzICYgR1BVVGV4dHVy
ZVVzYWdlOjpGbGFnczo6U3RvcmFnZSkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBUZXh0
dXJlIGNhbm5vdCBoYXZlIGJvdGggU1RPUkFHRSBhbmQgYSByZWFkLW9ubHkgdXNhZ2UhIiwgZnVu
Y3Rpb25OYW1lKTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CiAKLSAgICBp
ZiAoZmxhZ3MgJiBHUFVUZXh0dXJlVXNhZ2U6OlNhbXBsZWQpIHsKLSAgICAgICAgLy8gU0FNUExF
RCBpcyBhIHJlYWQtb25seSB1c2FnZS4KLSAgICAgICAgaWYgKGZsYWdzICYgR1BVVGV4dHVyZVVz
YWdlOjpTdG9yYWdlKQorICAgIGlmIChmbGFncyAmIEdQVVRleHR1cmVVc2FnZTo6RmxhZ3M6Ok91
dHB1dEF0dGFjaG1lbnQpIHsKKyAgICAgICAgaWYgKGZsYWdzLmNvbnRhaW5zQW55KHsgR1BVVGV4
dHVyZVVzYWdlOjpGbGFnczo6U3RvcmFnZSwgR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6U2FtcGxl
ZCB9KSkgeworICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBUZXh0dXJlIGNhbm5vdCBoYXZl
IE9VVFBVVF9BVFRBQ0hNRU5UIHVzYWdlIHdpdGggU1RPUkFHRSBvciBTQU1QTEVEIHVzYWdlcyEi
LCBmdW5jdGlvbk5hbWUpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAg
ICAgfQogCi0gICAgICAgIHVzYWdlIHw9IE1UTFRleHR1cmVVc2FnZVNoYWRlclJlYWQgfCBNVExU
ZXh0dXJlVXNhZ2VQaXhlbEZvcm1hdFZpZXc7CisgICAgICAgIHJldHVybiBNVExUZXh0dXJlVXNh
Z2VSZW5kZXJUYXJnZXQgfCBNVExUZXh0dXJlVXNhZ2VQaXhlbEZvcm1hdFZpZXc7CiAgICAgfQog
Ci0gICAgaWYgKGZsYWdzICYgR1BVVGV4dHVyZVVzYWdlOjpPdXRwdXRBdHRhY2htZW50KQotICAg
ICAgICB1c2FnZSB8PSBNVExUZXh0dXJlVXNhZ2VSZW5kZXJUYXJnZXQ7CisgICAgaWYgKGZsYWdz
ICYgR1BVVGV4dHVyZVVzYWdlOjpGbGFnczo6U3RvcmFnZSkKKyAgICAgICAgcmV0dXJuIE1UTFRl
eHR1cmVVc2FnZVNoYWRlcldyaXRlIHwgTVRMVGV4dHVyZVVzYWdlU2hhZGVyUmVhZCB8IE1UTFRl
eHR1cmVVc2FnZVBpeGVsRm9ybWF0VmlldzsKKworICAgIGlmIChmbGFncyAmIEdQVVRleHR1cmVV
c2FnZTo6RmxhZ3M6OlNhbXBsZWQpCisgICAgICAgIHJldHVybiBNVExUZXh0dXJlVXNhZ2VTaGFk
ZXJSZWFkIHwgTVRMVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3OwogCi0gICAgcmV0dXJuIHVz
YWdlOworICAgIHJldHVybiBNVExUZXh0dXJlVXNhZ2VVbmtub3duOwogfQogCiBzdGF0aWMgTVRM
U3RvcmFnZU1vZGUgc3RvcmFnZU1vZGVGb3JQaXhlbEZvcm1hdEFuZFNhbXBsZUNvdW50KE1UTFBp
eGVsRm9ybWF0IGZvcm1hdCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzKQpAQCAtODgsMTIgKzk1LDgg
QEAgc3RhdGljIE1UTFN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlRm9yUGl4ZWxGb3JtYXRBbmRTYW1w
bGVDb3VudChNVExQaXhlbEZvcm1hdCBmb3IKICNlbmRpZgogfQogCi1zdGF0aWMgUmV0YWluUHRy
PE1UTFRleHR1cmVEZXNjcmlwdG9yPiB0cnlDcmVhdGVNdGxUZXh0dXJlRGVzY3JpcHRvcihjb25z
dCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9yJiYg
ZGVzY3JpcHRvcikKK3N0YXRpYyBSZXRhaW5QdHI8TVRMVGV4dHVyZURlc2NyaXB0b3I+IHRyeUNy
ZWF0ZU10bFRleHR1cmVEZXNjcmlwdG9yKGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSwg
Y29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIE9wdGlvblNldDxHUFVUZXh0
dXJlVXNhZ2U6OkZsYWdzPiB1c2FnZSkKIHsKLSNpZiBMT0dfRElTQUJMRUQKLSAgICBVTlVTRURf
UEFSQU0oZnVuY3Rpb25OYW1lKTsKLSNlbmRpZgotCiAgICAgUmV0YWluUHRyPE1UTFRleHR1cmVE
ZXNjcmlwdG9yPiBtdGxEZXNjcmlwdG9yOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwpAQCAtMTEwLDExICsxMTMsOSBAQCBzdGF0aWMgUmV0YWluUHRyPE1UTFRleHR1cmVEZXNj
cmlwdG9yPiB0cnlDcmVhdGVNdGxUZXh0dXJlRGVzY3JpcHRvcihjb25zdCBjaGFyKgogICAgIC8v
IEZJWE1FOiBBZGQgbW9yZSB2YWxpZGF0aW9uIGFzIGNvbnN0cmFpbnRzIGFyZSBhZGRlZCB0byBz
cGVjLgogICAgIGF1dG8gcGl4ZWxGb3JtYXQgPSBzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4o
cGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChkZXNjcmlwdG9yLmZvcm1h
dCkpOwogCi0gICAgYXV0byB1c2FnZSA9IG10bFRleHR1cmVVc2FnZUZvckdQVVRleHR1cmVVc2Fn
ZUZsYWdzKGRlc2NyaXB0b3IudXNhZ2UpOwotICAgIGlmICghdXNhZ2UpIHsKLSAgICAgICAgTE9H
KFdlYkdQVSwgIiVzOiBJbnZhbGlkIEdQVVRleHR1cmVVc2FnZUZsYWdzISIsIGZ1bmN0aW9uTmFt
ZSk7CisgICAgYXV0byBtdGxVc2FnZSA9IG10bFRleHR1cmVVc2FnZUZvckdQVVRleHR1cmVVc2Fn
ZUZsYWdzKHVzYWdlLCBmdW5jdGlvbk5hbWUpOworICAgIGlmICghbXRsVXNhZ2UpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KIAogICAgIGF1dG8gc3RvcmFnZU1vZGUgPSBzdG9yYWdl
TW9kZUZvclBpeGVsRm9ybWF0QW5kU2FtcGxlQ291bnQocGl4ZWxGb3JtYXQsIGRlc2NyaXB0b3Iu
c2FtcGxlQ291bnQpOwogCkBAIC0xMjgsNyArMTI5LDcgQEAgc3RhdGljIFJldGFpblB0cjxNVExU
ZXh0dXJlRGVzY3JpcHRvcj4gdHJ5Q3JlYXRlTXRsVGV4dHVyZURlc2NyaXB0b3IoY29uc3QgY2hh
cioKICAgICBbbXRsRGVzY3JpcHRvciBzZXRTYW1wbGVDb3VudDpkZXNjcmlwdG9yLnNhbXBsZUNv
dW50XTsKICAgICBbbXRsRGVzY3JpcHRvciBzZXRUZXh0dXJlVHlwZTptdGxUZXh0dXJlVHlwZUZv
ckdQVVRleHR1cmVEZXNjcmlwdG9yKGRlc2NyaXB0b3IpXTsKICAgICBbbXRsRGVzY3JpcHRvciBz
ZXRQaXhlbEZvcm1hdDpwaXhlbEZvcm1hdF07Ci0gICAgW210bERlc2NyaXB0b3Igc2V0VXNhZ2U6
KnVzYWdlXTsKKyAgICBbbXRsRGVzY3JpcHRvciBzZXRVc2FnZToqbXRsVXNhZ2VdOwogCiAgICAg
W210bERlc2NyaXB0b3Igc2V0U3RvcmFnZU1vZGU6c3RvcmFnZU1vZGVdOwogCkBAIC0xMzcsNyAr
MTM4LDcgQEAgc3RhdGljIFJldGFpblB0cjxNVExUZXh0dXJlRGVzY3JpcHRvcj4gdHJ5Q3JlYXRl
TXRsVGV4dHVyZURlc2NyaXB0b3IoY29uc3QgY2hhcioKICAgICByZXR1cm4gbXRsRGVzY3JpcHRv
cjsKIH0KIAotUmVmUHRyPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OnRyeUNyZWF0ZShjb25zdCBH
UFVEZXZpY2UmIGRldmljZSwgR1BVVGV4dHVyZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQorUmVm
UHRyPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRl
dmljZSwgY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgY29u
c3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lID0gIkdQVVRleHR1cmU6OnRyeUNyZWF0ZSgpIjsK
IApAQCAtMTQ2LDcgKzE0Nyw4IEBAIFJlZlB0cjxHUFVUZXh0dXJlPiBHUFVUZXh0dXJlOjp0cnlD
cmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVVRleHR1cmVEZXNjCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gbXRsRGVzY3JpcHRvciA9IHRyeUNyZWF0
ZU10bFRleHR1cmVEZXNjcmlwdG9yKGZ1bmN0aW9uTmFtZSwgV1RGTW92ZShkZXNjcmlwdG9yKSk7
CisgICAgYXV0byB1c2FnZSA9IE9wdGlvblNldDxHUFVUZXh0dXJlVXNhZ2U6OkZsYWdzPjo6ZnJv
bVJhdyhkZXNjcmlwdG9yLnVzYWdlKTsKKyAgICBhdXRvIG10bERlc2NyaXB0b3IgPSB0cnlDcmVh
dGVNdGxUZXh0dXJlRGVzY3JpcHRvcihmdW5jdGlvbk5hbWUsIGRlc2NyaXB0b3IsIHVzYWdlKTsK
ICAgICBpZiAoIW10bERlc2NyaXB0b3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0x
NjMsMTYgKzE2NSwxNyBAQCBSZWZQdHI8R1BVVGV4dHVyZT4gR1BVVGV4dHVyZTo6dHJ5Q3JlYXRl
KGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVUZXh0dXJlRGVzYwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVRleHR1cmUoV1RG
TW92ZShtdGxUZXh0dXJlKSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVVGV4dHVyZShX
VEZNb3ZlKG10bFRleHR1cmUpLCB1c2FnZSkpOwogfQogCi1SZWY8R1BVVGV4dHVyZT4gR1BVVGV4
dHVyZTo6Y3JlYXRlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYgdGV4dHVyZSkKK1JlZjxHUFVU
ZXh0dXJlPiBHUFVUZXh0dXJlOjpjcmVhdGUoUGxhdGZvcm1UZXh0dXJlU21hcnRQdHImJiB0ZXh0
dXJlLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gdXNhZ2UpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgR1BVVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgR1BVVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpLCB1c2FnZSkpOwog
fQogCi1HUFVUZXh0dXJlOjpHUFVUZXh0dXJlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRyJiYgdGV4
dHVyZSkKK0dQVVRleHR1cmU6OkdQVVRleHR1cmUoUGxhdGZvcm1UZXh0dXJlU21hcnRQdHImJiB0
ZXh0dXJlLCBPcHRpb25TZXQ8R1BVVGV4dHVyZVVzYWdlOjpGbGFncz4gdXNhZ2UpCiAgICAgOiBt
X3BsYXRmb3JtVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKQorICAgICwgbV91c2FnZSh1c2FnZSkK
IHsKIH0KIApAQCAtMTkxLDcgKzE5NCw3IEBAIFJlZlB0cjxHUFVUZXh0dXJlPiBHUFVUZXh0dXJl
OjpjcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICByZXR1cm4gR1BVVGV4dHVyZTo6Y3JlYXRlKFdURk1vdmUodGV4dHVyZSkpOwor
ICAgIHJldHVybiBHUFVUZXh0dXJlOjpjcmVhdGUoV1RGTW92ZSh0ZXh0dXJlKSwgbV91c2FnZSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiNTdmZWVkYWM2NDA0ODRhM2Qx
NDA4MDdlYzY5Yjg3ODcwYzRhMDNjLi43ZjkwZDU1YzIxY2IwMDM0YzNiMmMzZjU4Y2ExZWM4YzYy
ZmFjZTQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMDMtMDQgIEp1c3RpbiBGYW4gIDxq
dXN0aW5fZmFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViIEdQVV0gQmxpdHRpbmcgZnVuY3Rp
b24gcHJvdG90eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk1MjI0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODUzODkwMj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgQWRkIGJhc2ljIHRlc3QgdG8g
Y29weSBkYXRhIHdpdGggYWxsIG5ldyBibGl0dGluZyBmdW5jdGlvbnMgYW5kIHZlcmlmeSB0aGUg
cmVzdWx0LgorCisgICAgICAgICogd2ViZ3B1L2JsaXQtY29tbWFuZHMtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogd2ViZ3B1L2JsaXQtY29tbWFuZHMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogd2ViZ3B1L2J1ZmZlci1jb21tYW5kLWJ1ZmZlci1yYWNlcy5odG1sOiBGaXhlZCB0eXBv
LgorICAgICAgICAqIHdlYmdwdS9yZXNvdXJjZXMvZ3JlZW4tNDAwLnBuZzogQWRkZWQuCisKIDIw
MTktMDItMjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVc2UtYWZ0ZXItbW92ZSBpbiBSZW5kZXJDb21iaW5lVGV4dDo6Y29tYmluZVRleHRJZk5l
ZWRlZCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMtZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44ODZmMTNlODEyMDM5N2E1Y2M2MzM2YzllMmE0ODVlNzc4YmE5OTMyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQtY29tbWFuZHMtZXhwZWN0
ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKzx0aXRsZT5IVE1MIFJlZmVyZW5jZSBGaWxlPC90aXRsZT4KKzxwPlBhc3MgaWYg
c3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVuLjwvcD4KKzxjYW52YXMgd2lk
dGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgorPHNjcmlwdD4KK2NvbnN0IGNhbnZhcyA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOworY29uc3QgY29udGV4dCA9IGNhbnZh
cy5nZXRDb250ZXh0KCcyZCcpOworCitjb250ZXh0LmZpbGxTdHlsZSA9ICdyZ2IoMCwgMjU1LCAw
KSc7Citjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7
Cis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJncHUvYmxpdC1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2Js
aXQtY29tbWFuZHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYTk0ODg5ODM1ZmNlZDQyZmRkMWZjNWRkZTdj
M2U4MGIzMDdlMmNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2JsaXQt
Y29tbWFuZHMuaHRtbApAQCAtMCwwICsxLDExMiBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6V2ViR1BVRW5hYmxlZD10cnVlIF0gLS0+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+QmFzaWMgQmxpdHRpbmc8L3RpdGxlPgorPG1l
dGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJCbGl0IG9wZXJhdGlvbnMgY29weSBhIGdyZWVuIGNh
bnZhcy4iPgorPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0iYmxpdC1jb21tYW5kcy1leHBlY3RlZC5o
dG1sIj4KKzxwPlBhc3MgaWYgc3F1YXJlIGNhbnZhcyBiZWxvdyBpcyBjb21wbGV0ZWx5IGdyZWVu
LjwvcD4KKzxjYW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0ianMvd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworCithc3luYyBmdW5jdGlvbiBsb2FkSW1hZ2UoKSB7CisgICAgY29uc3QgaW1hZ2UgPSBuZXcg
SW1hZ2UoKTsKKyAgICBpbWFnZS5zcmMgPSAicmVzb3VyY2VzL2dyZWVuLTQwMC5wbmciOworICAg
IGltYWdlLm9ubG9hZCA9ICgpID0+IHsgdGVzdChpbWFnZSk7IH0KK30KKworYXN5bmMgZnVuY3Rp
b24gdGVzdChpbWFnZSkgeworICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IGdldEJhc2ljRGV2aWNl
KCk7CisKKyAgICBjb25zdCBjYW52YXMyZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZh
cycpOworICAgIGNhbnZhczJkLndpZHRoID0gaW1hZ2Uud2lkdGg7CisgICAgY2FudmFzMmQuaGVp
Z2h0ID0gaW1hZ2UuaGVpZ2h0OworICAgIGNvbnN0IGNvbnRleHQyZCA9IGNhbnZhczJkLmdldENv
bnRleHQoJzJkJyk7CisgICAgY29udGV4dDJkLmRyYXdJbWFnZShpbWFnZSwgMCwgMCk7CisKKyAg
ICBjb25zdCBpbWFnZURhdGEgPSBjb250ZXh0MmQuZ2V0SW1hZ2VEYXRhKDAsIDAsIGltYWdlLndp
ZHRoLCBpbWFnZS5oZWlnaHQpOworCisgICAgY29uc3QgYnVmZmVyRGVzY3JpcHRvciA9IHsKKyAg
ICAgICAgc2l6ZTogaW1hZ2VEYXRhLmRhdGEuYnl0ZUxlbmd0aCwKKyAgICAgICAgdXNhZ2U6IEdQ
VUJ1ZmZlclVzYWdlLlRSQU5TRkVSX1NSQyB8IEdQVUJ1ZmZlclVzYWdlLlRSQU5TRkVSX0RTVAor
ICAgIH07CisgICAgY29uc3QgYnVmZmVyQSA9IGRldmljZS5jcmVhdGVCdWZmZXIoYnVmZmVyRGVz
Y3JpcHRvcik7CisgICAgYnVmZmVyQS5zZXRTdWJEYXRhKDAsIGltYWdlRGF0YS5kYXRhLmJ1ZmZl
cik7CisKKyAgICBjb25zdCBidWZmZXJCID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihidWZmZXJEZXNj
cmlwdG9yKTsKKyAgICBjb25zdCBidWZmZXJWaWV3QiA9IHsKKyAgICAgICAgYnVmZmVyOiBidWZm
ZXJCLAorICAgICAgICBvZmZzZXQ6IDAsCisgICAgICAgIHJvd1BpdGNoOiAwLAorICAgICAgICBp
bWFnZUhlaWdodDogMAorICAgIH07CisKKyAgICBjb25zdCB0ZXh0dXJlU2l6ZSA9IHsKKyAgICAg
ICAgd2lkdGg6IGltYWdlLndpZHRoLAorICAgICAgICBoZWlnaHQ6IGltYWdlLmhlaWdodCwKKyAg
ICAgICAgZGVwdGg6IDEKKyAgICB9OworICAgIGNvbnN0IHRleHR1cmVEZXNjcmlwdG9yID0gewor
ICAgICAgICBzaXplOiB0ZXh0dXJlU2l6ZSwKKyAgICAgICAgYXJyYXlMYXllckNvdW50OiAxLAor
ICAgICAgICBtaXBMZXZlbENvdW50OiAxLAorICAgICAgICBzYW1wbGVDb3VudDogMSwKKyAgICAg
ICAgZGltZW5zaW9uOiAiMmQiLAorICAgICAgICBmb3JtYXQ6ICJyOGc4YjhhOC11bm9ybSIsCisg
ICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuVFJBTlNGRVJfU1JDIHwgR1BVVGV4dHVyZVVz
YWdlLlRSQU5TRkVSX0RTVAorICAgIH07CisgICAgY29uc3QgdGV4dHVyZUEgPSBkZXZpY2UuY3Jl
YXRlVGV4dHVyZSh0ZXh0dXJlRGVzY3JpcHRvcik7CisgICAgY29uc3QgdGV4dHVyZVZpZXdBID0g
eworICAgICAgICB0ZXh0dXJlOiB0ZXh0dXJlQSwKKyAgICAgICAgbWlwTGV2ZWw6IDAsCisgICAg
ICAgIGFycmF5TGF5ZXI6IDAsCisgICAgICAgIG9yaWdpbjogeyB4OiAwLCB5OiAwLCB6OiAwIH0K
KyAgICB9OworCisgICAgY29uc3QgdGV4dHVyZUIgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXh0
dXJlRGVzY3JpcHRvcik7CisgICAgY29uc3QgdGV4dHVyZVZpZXdCID0geworICAgICAgICB0ZXh0
dXJlOiB0ZXh0dXJlQiwKKyAgICAgICAgbWlwTGV2ZWw6IDAsCisgICAgICAgIGFycmF5TGF5ZXI6
IDAsCisgICAgICAgIG9yaWdpbjogeyB4OiAwLCB5OiAwLCB6OiAwIH0KKyAgICB9OworCisgICAg
Y29uc3QgcmVhZEJ1ZmZlckRlc2NyaXB0b3IgPSB7CisgICAgICAgIHNpemU6IGltYWdlRGF0YS5k
YXRhLmJ5dGVMZW5ndGgsCisgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5UUkFOU0ZFUl9E
U1QgfCBHUFVCdWZmZXJVc2FnZS5NQVBfUkVBRAorICAgIH07CisgICAgY29uc3QgcmVhZEJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVCdWZmZXIocmVhZEJ1ZmZlckRlc2NyaXB0b3IpOworICAgIGNvbnN0
IHJlYWRCdWZmZXJWaWV3ID0geworICAgICAgICBidWZmZXI6IHJlYWRCdWZmZXIsCisgICAgICAg
IG9mZnNldDogMCwKKyAgICAgICAgcm93UGl0Y2g6IDAsCisgICAgICAgIGltYWdlSGVpZ2h0OiAw
CisgICAgfTsKKworICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQ29tbWFu
ZEJ1ZmZlcigpOworICAgIGNvbW1hbmRCdWZmZXIuY29weUJ1ZmZlclRvQnVmZmVyKGJ1ZmZlckEs
IDAsIGJ1ZmZlckIsIDAsIGltYWdlRGF0YS5kYXRhLmJ5dGVMZW5ndGgpOworICAgIGNvbW1hbmRC
dWZmZXIuY29weUJ1ZmZlclRvVGV4dHVyZShidWZmZXJWaWV3QiwgdGV4dHVyZVZpZXdBLCB0ZXh0
dXJlU2l6ZSk7CisgICAgY29tbWFuZEJ1ZmZlci5jb3B5VGV4dHVyZVRvVGV4dHVyZSh0ZXh0dXJl
Vmlld0EsIHRleHR1cmVWaWV3QiwgdGV4dHVyZVNpemUpOworICAgIGNvbW1hbmRCdWZmZXIuY29w
eVRleHR1cmVUb0J1ZmZlcih0ZXh0dXJlVmlld0IsIHJlYWRCdWZmZXJWaWV3LCB0ZXh0dXJlU2l6
ZSk7CisgICAgZGV2aWNlLmdldFF1ZXVlKCkuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7CisKKyAg
ICBjb25zdCByZXN1bHRDb250ZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignY2FudmFzJyku
Z2V0Q29udGV4dCgnMmQnKTsKKworICAgIGF3YWl0IHJlYWRCdWZmZXIubWFwUmVhZEFzeW5jKCku
dGhlbihhYiA9PiB7CisgICAgICAgIGNvbnN0IGFycmF5ID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5
KGFiKTsKKyAgICAgICAgY29uc3QgcmVzdWx0SW1hZ2VEYXRhID0gbmV3IEltYWdlRGF0YShhcnJh
eSwgaW1hZ2Uud2lkdGgsIGltYWdlLmhlaWdodCk7CisKKyAgICAgICAgcmVzdWx0Q29udGV4dC5w
dXRJbWFnZURhdGEocmVzdWx0SW1hZ2VEYXRhLCAwLCAwKTsKKworICAgICAgICByZWFkQnVmZmVy
LnVubWFwKCk7CisgICAgfSk7CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitsb2FkSW1hZ2UoKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS9idWZmZXItY29tbWFuZC1idWZmZXItcmFjZXMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS9idWZmZXItY29tbWFuZC1idWZmZXItcmFjZXMuaHRtbAppbmRleCAzYjMzNzhhZWE3
ZmNhYWMxNjI5YTkwZmVmZGMwMjIyM2ZlYTcyMTczLi4zNWEzMmE4NThiNzBiY2NhOGI2MmExMjAy
NzI5OTViNmFlOTk2NDUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvYnVmZmVyLWNv
bW1hbmQtYnVmZmVyLXJhY2VzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2J1ZmZlci1j
b21tYW5kLWJ1ZmZlci1yYWNlcy5odG1sCkBAIC0yLDcgKzIsNyBAQAogPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgogPHRpdGxlPldlYkdQVSBIZWxsbyBUcmlhbmdsZXM8L3RpdGxlPgogPG1ldGEgbmFt
ZT0iYXNzZXJ0IiBjb250ZW50PSJXZWJHUFUgY29ycmVjdGx5IHJlbmRlcnMgYSBncmVlbiBjYW52
YXMuIj4KLTxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9InZlcnRleC1idWZmZXItdHJpYW5nbGUtc3Ry
aXAtZXhwZWN0ZWQuaHRtbCI+Cis8bGluayByZWw9Im1hdGNoIiBocmVmPSJidWZmZXItY29tbWFu
ZC1idWZmZXItcmFjZXMtZXhwZWN0ZWQuaHRtbCI+CiA8cD5QYXNzIGlmIHNxdWFyZSBjYW52YXMg
YmVsb3cgaXMgY29tcGxldGVseSBncmVlbi48L3A+CiA8Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdo
dD0iNDAwIj48L2NhbnZhcz4KIDxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZXNvdXJjZXMvZ3JlZW4t
NDAwLnBuZyBiL0xheW91dFRlc3RzL3dlYmdwdS9yZXNvdXJjZXMvZ3JlZW4tNDAwLnBuZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42YzdmODhlN2M1YWI1ODhhODY4MWMxMWQ3ZDE2YzMyZTlmNmM0M2Q4CkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCAxNDgKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlWNE1LTGpMYmxo
VTQ9e2ZmZlFxTGtoPkcoJjY3SXlLbmBidE1gU1NyCnoxR2d7O0djd0dZQkxOZy00KTYoYVclJG92
NV9leilrZ01oQzt1dW1mPWp9bTVNai1GZGcwS0U+XlZ0PnZuZHFSdwpYKzx5WkRxb3ZzTjNYcUph
dERubXtyLVVXfDRralFzCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>