<?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>192134</bug_id>
          
          <creation_ts>2018-11-28 20:45:32 -0800</creation_ts>
          <short_desc>[WebGPU] WebGPURenderPassEncoder::setPipeline, draw, and endPass prototypes</short_desc>
          <delta_ts>2018-11-30 10:38:32 -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>WebGPU</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>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>graouts</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1482834</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-28 20:45:32 -0800</bug_when>
    <thetext>[WebGPU] WebGPURenderPassEncoder::setPipeline, draw, and endPass prototypes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482835</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-28 20:46:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/46331555&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482842</commentid>
    <comment_count>2</comment_count>
      <attachid>355975</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-28 21:30:17 -0800</bug_when>
    <thetext>Created attachment 355975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483054</commentid>
    <comment_count>3</comment_count>
      <attachid>355975</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-11-29 11:36:49 -0800</bug_when>
    <thetext>Comment on attachment 355975
Patch

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

&gt; Source/WebCore/Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:46
&gt; +Ref&lt;WebGPUCommandBuffer&gt; WebGPUProgrammablePassEncoder::endPass()
&gt; +{
&gt; +    passEncoder().endPass();
&gt; +    return m_commandBuffer.copyRef();
&gt; +}

I know the IDL specifies it, but I wonder why endPass returns a command buffer. Surely the author would have created it and held a reference? Maybe this is an issue for the spec?

&gt; Source/WebCore/Modules/webgpu/WebGPUProgrammablePassEncoder.idl:34
&gt; +    // FIXME: Only support render pipelines for demo.

s/demo/prototype/

&gt; Source/WebCore/Modules/webgpu/WebGPURenderPassEncoder.cpp:52
&gt; +void WebGPURenderPassEncoder::draw(
&gt; +    unsigned long vertexCount,
&gt; +    unsigned long instanceCount,
&gt; +    unsigned long firstVertex,
&gt; +    unsigned long firstInstance
&gt; +    )

Put all this on one line.

&gt; Source/WebCore/Modules/webgpu/WebGPURenderPassEncoder.cpp:54
&gt; +{
&gt; +    m_passEncoder-&gt;draw(vertexCount, instanceCount, firstVertex, firstInstance);

Could you put a // FIXME in here saying we need to do some validation. e.g. all values are &gt; 0, etc.

&gt; Source/WebCore/platform/graphics/gpu/GPURenderPassEncoder.h:58
&gt; +    ~GPURenderPassEncoder() { endPass(); } // The MTLCommandEncoder must end encoding before it is released. 

Remember that this file will ultimately be used by backends other than Metal. So maybe the comment should be &quot;Ensure that the encoding has ended before destruction.&quot;

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:104
&gt; +void GPURenderPassEncoder::draw(
&gt; +    unsigned long vertexCount,
&gt; +    unsigned long instanceCount,
&gt; +    unsigned long firstVertex,
&gt; +    unsigned long firstInstance
&gt; +    )

One line.

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:111
&gt; +    [m_platformRenderPassEncoder 
&gt; +    drawPrimitives:primitiveTypeForGPUPrimitiveTopology(m_pipeline-&gt;primitiveTopology())
&gt; +    vertexStart:firstVertex
&gt; +    vertexCount:vertexCount
&gt; +    instanceCount:instanceCount
&gt; +    baseInstance:firstInstance];

Either everything on a single line, or the 2nd+ lines should be indented.

&gt; LayoutTests/webgpu/render-command-encoding.html:12
&gt; +let canvas, commandBuffer, renderPassEncoder;

canvas is only used inside the promise test.

I also wonder if the other variables should be passed into the functions as parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483080</commentid>
    <comment_count>4</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-29 12:24:11 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #3)
&gt; Comment on attachment 355975 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355975&amp;action=review
&gt; 
&gt; I also wonder if the other variables should be passed into the functions as
&gt; parameters.

I&apos;ve made a new bug to go back and refactor all of the tests and basic.js to use WPT without relying on js-test-pre, so I&apos;ll take care of this in that patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483081</commentid>
    <comment_count>5</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-29 12:25:54 -0800</bug_when>
    <thetext>Bug above is &lt;rdar://problem/46331451&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483085</commentid>
    <comment_count>6</comment_count>
      <attachid>356035</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-29 12:31:19 -0800</bug_when>
    <thetext>Created attachment 356035
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483112</commentid>
    <comment_count>7</comment_count>
      <attachid>356035</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-29 13:09:17 -0800</bug_when>
    <thetext>Comment on attachment 356035
Patch for landing

Clearing flags on attachment: 356035

Committed r238687: &lt;https://trac.webkit.org/changeset/238687&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483113</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-29 13:09:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483455</commentid>
    <comment_count>9</comment_count>
      <attachid>356035</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-11-29 23:29:50 -0800</bug_when>
    <thetext>Comment on attachment 356035
Patch for landing

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

&gt; Source/WebCore/Modules/webgpu/WebGPUTexture.h:35
&gt; +class GPUTexture;

This change caused some build error for me when UnifiedSource rotates (see https://bugs.webkit.org/attachment.cgi?id=356043&amp;action=review). Unfortunately, the error happens in generated JS*.cpp files so I&apos;m not sure how easy it is to properly include &quot;GPUTexture.h&quot;. If there is not better suggestion, I would just revert the change to WebGPUTexture.h.

In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource106.cpp:1:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSWebGPURenderPassEncoder.cpp:25:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSWebGPURenderPassEncoder.h:25:
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/bindings/js/JSDOMWrapper.h:24:
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/bindings/js/JSDOMGlobalObject.h:29:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/WebCoreJSBuiltinInternals.h:39:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSDOMBindingInternalsBuiltins.h:34:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/JavaScriptCore.framework/PrivateHeaders/Identifier.h:23:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/JavaScriptCore.framework/PrivateHeaders/PrivateName.h:28:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/wtf/text/SymbolImpl.h:28:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/wtf/text/UniquedStringImpl.h:28:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/wtf/text/StringImpl.h:32:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/wtf/Vector.h:37:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/wtf/VectorTraits.h:23:
/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/wtf/Ref.h:60:37: error: member access into incomplete type &apos;WebCore::GPUTexture&apos;
            PtrTraits::unwrap(m_ptr)-&gt;deref();
                                    ^
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource106.cpp:4:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSWebGPURenderingContext.cpp:25:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSWebGPURenderingContext.h:26:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSWebGPUSwapChain.h:27:
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/Modules/webgpu/WebGPUSwapChain.h:33:
/Volumes/Data/EWS/WebKit/Source/WebCore/Modules/webgpu/WebGPUTexture.h:38:7: note: in instantiation of member function &apos;WTF::Ref&lt;WebCore::GPUTexture, WTF::DumbPtrTraits&lt;WebCore::GPUTexture&gt; &gt;::~Ref&apos; requested here
class WebGPUTexture : public RefCounted&lt;WebGPUTexture&gt; {
      ^
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource106.cpp:1:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSWebGPURenderPassEncoder.cpp:25:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSWebGPURenderPassEncoder.h:25:
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/bindings/js/JSDOMWrapper.h:24:
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/bindings/js/JSDOMGlobalObject.h:29:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/WebCoreJSBuiltinInternals.h:39:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSDOMBindingInternalsBuiltins.h:34:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/JavaScriptCore.framework/PrivateHeaders/Identifier.h:23:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/JavaScriptCore.framework/PrivateHeaders/PrivateName.h:28:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/wtf/text/SymbolImpl.h:28:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/wtf/text/UniquedStringImpl.h:28:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/wtf/text/StringImpl.h:32:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/wtf/Vector.h:37:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/wtf/VectorTraits.h:23:
/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/wtf/Ref.h:60:39: note: in instantiation of member function &apos;WTF::RefCounted&lt;WebCore::WebGPUTexture&gt;::deref&apos; requested here
            PtrTraits::unwrap(m_ptr)-&gt;deref();
                                      ^
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource106.cpp:8:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSWebGPUSwapChain.cpp:37:
/Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSWebGPUTexture.h:81:183: note: in instantiation of member function &apos;WTF::Ref&lt;WebCore::WebGPUTexture, WTF::DumbPtrTraits&lt;WebCore::WebGPUTexture&gt; &gt;::~Ref&apos; requested here
inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* state, JSDOMGlobalObject* globalObject, RefPtr&lt;WebGPUTexture&gt;&amp;&amp; impl) { return impl ? toJSNewlyCreated(state, globalObject, impl.releaseNonNull()) : JSC::jsNull(); }
                                                                                                                                                                                      ^
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource106.cpp:4:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSWebGPURenderingContext.cpp:25:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSWebGPURenderingContext.h:26:
In file included from /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/JSWebGPUSwapChain.h:27:
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/Modules/webgpu/WebGPUSwapChain.h:31:
/Volumes/Data/EWS/WebKit/Source/WebCore/platform/graphics/gpu/GPUSwapChain.h:38:7: note: forward declaration of &apos;WebCore::GPUTexture&apos;
class GPUTexture;
      ^
1 error generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483549</commentid>
    <comment_count>10</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-30 09:11:59 -0800</bug_when>
    <thetext>(In reply to Frédéric Wang (:fredw) from comment #9)
&gt; Comment on attachment 356035 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=356035&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/webgpu/WebGPUTexture.h:35
&gt; &gt; +class GPUTexture;
&gt; 
&gt; This change caused some build error for me when UnifiedSource rotates (see
&gt; https://bugs.webkit.org/attachment.cgi?id=356043&amp;action=review).
&gt; Unfortunately, the error happens in generated JS*.cpp files so I&apos;m not sure
&gt; how easy it is to properly include &quot;GPUTexture.h&quot;. If there is not better
&gt; suggestion, I would just revert the change to WebGPUTexture.h.


Hi Frédéric, I also ran into this so I have reverted the change in https://bugs.webkit.org/show_bug.cgi?id=192213.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483587</commentid>
    <comment_count>11</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-11-30 10:38:32 -0800</bug_when>
    <thetext>(In reply to Justin Fan from comment #10)
&gt; (In reply to Frédéric Wang (:fredw) from comment #9)
&gt; &gt; Comment on attachment 356035 [details]
&gt; &gt; Patch for landing
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=356035&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/webgpu/WebGPUTexture.h:35
&gt; &gt; &gt; +class GPUTexture;
&gt; &gt; 
&gt; &gt; This change caused some build error for me when UnifiedSource rotates (see
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=356043&amp;action=review).
&gt; &gt; Unfortunately, the error happens in generated JS*.cpp files so I&apos;m not sure
&gt; &gt; how easy it is to properly include &quot;GPUTexture.h&quot;. If there is not better
&gt; &gt; suggestion, I would just revert the change to WebGPUTexture.h.
&gt; 
&gt; 
&gt; Hi Frédéric, I also ran into this so I have reverted the change in
&gt; https://bugs.webkit.org/show_bug.cgi?id=192213.

OK, thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355975</attachid>
            <date>2018-11-28 21:30:17 -0800</date>
            <delta_ts>2018-11-29 12:31:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192134-20181128213016.patch</filename>
            <type>text/plain</type>
            <size>29743</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTIxZjRjMTIzYTIxMjQ0
Y2NjNTc5NDUwZmYzYjliYWFmNjcyYTFhNC4uOWM4MWVkOGI2Y2FmZDY2ZTc3OTllM2FkYjExOTkx
ZDVjMjEwNWZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE4LTExLTI4ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lLCBkcmF3LCBhbmQgZW5kUGFzcyBwcm90b3R5
cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIx
MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXcmFw
IHVwIHByb3RvdHlwZSBmZWF0dXJlcyBmb3IgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuIAorCisg
ICAgICAgIFRlc3Q6IHdlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy5odG1sCisKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVyLmNwcDogCisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVDb21tYW5kQnVmZmVyOjpiZWdpblJlbmRlclBhc3MpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
UFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6V2ViR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXI6OmVuZFBhc3MpOiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBXZWJHUFVDb21tYW5kQnVm
ZmVyIHRoYXQgY3JlYXRlZCB0aGlzIGVuY29kZXIuCisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmg6IFVwZGF0ZWQgdG8gc3VwcG9y
dCBlbmRQYXNzIGFuZCBzZXRQaXBlbGluZS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSk6IE11c3QgYmUgcHJvdmlkZWQgd2l0aCB0aGUgV2ViR1BV
Q29tbWFuZEJ1ZmZlci4KKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVJlbmRlclBhc3NFbmNvZGVy
OjpXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5k
ZXJQYXNzRW5jb2Rlcjo6ZHJhdyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXIuaDogVXBkYXRlZCB0byBjYWNoZSBhIHJlZmVyZW5jZSB0byB0aGUgV2Vi
R1BVQ29tbWFuZEJ1ZmZlciwgYW5kIGZvciBkcmF3LgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5kZXJQ
aXBlbGluZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVJlbmRlclBpcGVsaW5l
OjpXZWJHUFVSZW5kZXJQaXBlbGluZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVJlbmRlclBpcGVsaW5l
OjpyZW5kZXJQaXBlbGluZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVy
ZS5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oOiBSZXBsYWNl
ZCBpbmNsdWRlIHdpdGggZm9yd2FyZCBkZWNsYXJhdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaDogVXBkYXRlZCB0byBzdXBw
b3J0IG5ldyBXZWJHUFVfUGFzc0VuY29kZXIgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvR1BVUmVuZGVyUGFzc0VuY29kZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkdQVVJlbmRlclBhc3NFbmNvZGVyOjp+R1BVUmVuZGVyUGFzc0VuY29kZXIpOiBOb3cgZW5k
cyBlbmNvZGluZyBvbiB0aGUgTVRMQ29tbWFuZEVuY29kZXIsIGlmIG5vdCBhbHJlYWR5IGVuZGVk
LCBiZWZvcmUgZnJlZWluZyBpdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
UmVuZGVyUGlwZWxpbmUuaDogTm93IHJlbWVtYmVycyB0aGUgR1BVUHJpbWl0aXZlVG9wb2xvZ3kg
dGhhdCBpdCB3YXMgY3JlYXRlZCB3aXRoLgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGlw
ZWxpbmU6OnByaW1pdGl2ZVRvcG9sb2d5IGNvbnN0KTogCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L2NvY29hL0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyTWV0YWwubW06CisgICAg
ICAgIChXZWJDb3JlOjpHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcyk6IENhbGxz
IGVuZEVuY29kaW5nIG9uIHRoZSBiYWNraW5nIE1UTENvbW1hbmRFbmNvZGVyLCBpZiBub3QgYWxy
ZWFkeSBlbmRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVu
ZGVyUGFzc0VuY29kZXJNZXRhbC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVJlbmRlclBhc3NF
bmNvZGVyOjpwbGF0Zm9ybVBhc3NFbmNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQ
VVJlbmRlclBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6cHJpbWl0aXZlVHlwZUZvckdQVVByaW1pdGl2ZVRvcG9sb2d5KTogQWRkZWQuIEhlbHBlciBm
dW5jdGlvbiB0byBjb252ZXJ0IEdQVVByaW1pdGl2ZVRvcG9sb2d5IHRvIE1UTFByaW1pdGl2ZVR5
cGUuCisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZHJhdyk6IEFkZGVk
LiBEcmF3cyB1c2luZyBwcmltaXRpdmUgdG9wb2xvZ3kgc3BlY2lmaWVkIGR1cmluZyBwaXBlbGlu
ZSBjcmVhdGlvbi4gCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJl
bmRlclBpcGVsaW5lTWV0YWwubW06CisgICAgICAgIChXZWJDb3JlOjpzZXRGdW5jdGlvbnNGb3JQ
aXBlbGluZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGlwZWxpbmU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6R1BVUmVuZGVy
UGlwZWxpbmUpOiBOb3cgbXVzdCBzdG9yZSB0aGUgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
IGZvciBsYXRlciByZWZlcmVuY2UuIAorCiAyMDE4LTExLTI2ICBKdXN0aW4gRmFuICA8anVzdGlu
X2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gQmVnaW4gaW1wbGVtZW50YXRpb24g
b2YgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIgYW5kIGJhcmVib25lcyBXZWJHUFVSZW5kZXJQYXNz
RGVzY3JpcHRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQ29tbWFuZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21tYW5kQnVmZmVyLmNwcAppbmRleCA1M2ZhMWRlNDYzNjc2NGU3NjJlNWJjZGRlMDQ3NmI5
ZTlmMjBjZmY3Li40Zjc2MDQ2M2YyMjA0Y2JlOGQ2OGJlMTg3ZmQyMDBkOTFlZTBjYmU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21tYW5kQnVm
ZmVyLmNwcApAQCAtNjMsNyArNjMsNyBAQCBSZWZQdHI8V2ViR1BVUmVuZGVyUGFzc0VuY29kZXI+
IFdlYkdQVUNvbW1hbmRCdWZmZXI6OmJlZ2luUmVuZGVyUGFzcyhXZWJHUFVSZW5kZQogICAgIGlm
ICghZW5jb2RlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZShlbmNvZGVyLnJlbGVhc2VOb25OdWxsKCkpOworICAg
IHJldHVybiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKCp0aGlzLCBlbmNvZGVyLnJl
bGVhc2VOb25OdWxsKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAppbmRleCBlOTAxYzEyYjk5
M2MyZWJmMjczZDQ5NWY2YTRhNGZlN2IxZDFjMmEwLi41M2QxMzkyZGVkMTliYmY4NzIwOTM1ZTIy
OWIyYTVjZWY3OTRkYWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5jcHAKQEAgLTExNyw3ICsxMTcsMTIgQEAgUmVmUHRyPFdlYkdQVVJlbmRlclBp
cGVsaW5lPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKFdlYkdQVVJlbmRlclBp
cGUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIFdlYkdQVVJl
bmRlclBpcGVsaW5lOjpjcmVhdGUobV9kZXZpY2UtPmNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciB7IFdURk1vdmUodmVydGV4U3RhZ2UpLCBXVEZNb3ZlKGZy
YWdtZW50U3RhZ2UpLCBkZXNjcmlwdG9yLnByaW1pdGl2ZVRvcG9sb2d5IH0pKTsKKyAgICBhdXRv
IHBpcGVsaW5lID0gbV9kZXZpY2UtPmNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciB7IFdURk1vdmUodmVydGV4U3RhZ2UpLCBXVEZNb3ZlKGZyYWdtZW50U3Rh
Z2UpLCBkZXNjcmlwdG9yLnByaW1pdGl2ZVRvcG9sb2d5IH0pOworCisgICAgaWYgKCFwaXBlbGlu
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gV2ViR1BVUmVuZGVyUGlw
ZWxpbmU6OmNyZWF0ZShwaXBlbGluZS5yZWxlYXNlTm9uTnVsbCgpKTsKIH0KIAogUmVmUHRyPFdl
YkdQVUNvbW1hbmRCdWZmZXI+IFdlYkdQVURldmljZTo6Y3JlYXRlQ29tbWFuZEJ1ZmZlcigpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAKaW5kZXggNTg1MTU3OGRhYzhmZDcxMjk0
ODMzNTRkNmZjNTBhZmE2MDVmYmZkYi4uODkyODJiNTBmOTEzNTkwNGJiYWE4YWY0ZTQzNDAxZTky
MTUyMjgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcApAQCAtMjgsOCArMjgsMjgg
QEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2Rlci5oIgorI2luY2x1ZGUgIldlYkdQVUNvbW1hbmRCdWZmZXIuaCIKKyNpbmNsdWRlICJX
ZWJHUFVSZW5kZXJQaXBlbGluZS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dlYkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcihSZWY8
V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjcmVhdG9yKQorICAgIDogbV9jb21tYW5kQnVmZmVyKFdU
Rk1vdmUoY3JlYXRvcikpCit7Cit9CisKK1JlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiBXZWJHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2Rlcjo6ZW5kUGFzcygpCit7CisgICAgcGFzc0VuY29kZXIoKS5l
bmRQYXNzKCk7CisgICAgcmV0dXJuIG1fY29tbWFuZEJ1ZmZlci5jb3B5UmVmKCk7Cit9CisKK3Zv
aWQgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKFJlZjxXZWJHUFVS
ZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKK3sKKyAgICBwYXNzRW5jb2RlcigpLnNldFBpcGVs
aW5lKHBpcGVsaW5lLT5yZW5kZXJQaXBlbGluZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5o
CmluZGV4IGU3M2U3ZDA4ZjQ4YzJhN2Q5ZmQyNWI4OTAxMmViZWRlMjQ4ZTM0NDMuLjYzODQ4NGI5
ZmYyMWYyOTQxNTA5MjEyM2ZhNGM1N2Q5ZDA3MjI1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXIuaApAQCAtMzIsMTMgKzMyLDIzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOworY2xhc3MgV2ViR1BVQ29tbWFuZEJ1ZmZlcjsKK2Ns
YXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lOwogCiBjbGFzcyBXZWJHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIo
KSA9IGRlZmF1bHQ7CiAKKyAgICBSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gZW5kUGFzcygpOwor
ICAgIHZvaWQgc2V0UGlwZWxpbmUoUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiYmKTsKKwogcHJv
dGVjdGVkOgorICAgIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKFJlZjxXZWJHUFVDb21t
YW5kQnVmZmVyPiYmKTsKKwogICAgIHZpcnR1YWwgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIm
IHBhc3NFbmNvZGVyKCkgY29uc3QgPSAwOworCitwcml2YXRlOgorICAgIFJlZjxXZWJHUFVDb21t
YW5kQnVmZmVyPiBtX2NvbW1hbmRCdWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFt
bWFibGVQYXNzRW5jb2Rlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwKaW5kZXggNjljYTg1MDZhYjY5OWU5ZmQ2ZDIz
MDlhNWMyNGZjNWFlZGRlMDJiNC4uYmE5NTE0NTExMTEzMmYyN2JmOTlmMzFkZGM3ZjA1MjMwYjVj
MzFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmlkbApAQCAtMjksMTEgKzI5LDEzIEBA
CiAgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUsCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24K
IF0gaW50ZXJmYWNlIFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyIHsKLS8qIE5vdCBZZXQg
SW1wbGVtZW50ZWQKICAgICBXZWJHUFVDb21tYW5kQnVmZmVyIGVuZFBhc3MoKTsKKworICAgIC8v
IEZJWE1FOiBPbmx5IHN1cHBvcnQgcmVuZGVyIHBpcGVsaW5lcyBmb3IgZGVtby4KKyAgICB2b2lk
IHNldFBpcGVsaW5lKFdlYkdQVVJlbmRlclBpcGVsaW5lIHBpcGVsaW5lKTsKKy8qIE5vdCBZZXQg
SW1wbGVtZW50ZWQKICAgICAvLyBBbGxvd2VkIGluIGJvdGggY29tcHV0ZSBhbmQgcmVuZGVyIHBh
c3NlcwogICAgIC8vIFRPRE86IHNldFB1c2hDb25zdGFudHMoKSA/CiAgICAgdm9pZCBzZXRCaW5k
R3JvdXAodTMyIGluZGV4LCBXZWJHUFVCaW5kR3JvdXAgYmluZEdyb3VwKTsKLSAgICB2b2lkIHNl
dFBpcGVsaW5lKChXZWJHUFVDb21wdXRlUGlwZWxpbmUgb3IgV2ViR1BVUmVuZGVyUGlwZWxpbmUp
IHBpcGVsaW5lKTsKICovCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCmluZGV4IDNkZDE2OWI4Nzc1NmVk
Zjk3N2JkNzViYmM3ODBmNDEzMGFhMTIzMGYuLjA3NTk0M2MzNGRlMWYyMTliM2RjMmY1NmJlNTBj
MjY2YWUyOTFlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKQEAgLTI5LDE5ICsyOSwzMSBAQAogI2lm
IEVOQUJMRShXRUJHUFUpCiAKICNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5o
IgorI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVmPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
cjo6Y3JlYXRlKFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQorUmVmPFdlYkdQ
VVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKFJlZjxX
ZWJHUFVDb21tYW5kQnVmZmVyPiYmIGNyZWF0b3IsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4m
JiBlbmNvZGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBhc3NF
bmNvZGVyKFdURk1vdmUoZW5jb2RlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJH
UFVSZW5kZXJQYXNzRW5jb2RlcihXVEZNb3ZlKGNyZWF0b3IpLCBXVEZNb3ZlKGVuY29kZXIpKSk7
CiB9CiAKLVdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpXZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihS
ZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKLSAgICA6IG1fcGFzc0VuY29kZXIo
V1RGTW92ZShlbmNvZGVyKSkKK1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpXZWJHUFVSZW5kZXJQ
YXNzRW5jb2RlcihSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjcmVhdG9yLCBSZWY8R1BVUmVu
ZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKKyAgICA6IFdlYkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyKFdURk1vdmUoY3JlYXRvcikpCisgICAgLCBtX3Bhc3NFbmNvZGVyKFdURk1vdmUoZW5j
b2RlcikpCiB7CiB9CiAKK3ZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcoCisgICAg
dW5zaWduZWQgbG9uZyB2ZXJ0ZXhDb3VudCwKKyAgICB1bnNpZ25lZCBsb25nIGluc3RhbmNlQ291
bnQsCisgICAgdW5zaWduZWQgbG9uZyBmaXJzdFZlcnRleCwKKyAgICB1bnNpZ25lZCBsb25nIGZp
cnN0SW5zdGFuY2UKKyAgICApCit7CisgICAgbV9wYXNzRW5jb2Rlci0+ZHJhdyh2ZXJ0ZXhDb3Vu
dCwgaW5zdGFuY2VDb3VudCwgZmlyc3RWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOworfQorCiBHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2RlciYgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnBhc3NFbmNv
ZGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYXNzRW5jb2Rlci5nZXQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ci5oCmluZGV4IDQwN2M2NzVjMTczYTA2NTM2YWMyNzZlY2VlMDJkNDliNTJjN2JhN2EuLmM3NGRh
N2EwMDJlYTJlY2ZhMjQxM2EwYjExMDNmZjY2OWNiZmQxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaApAQCAt
MjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAotI2luY2x1ZGUgIkdQVVJlbmRl
clBhc3NFbmNvZGVyLmgiCiAjaW5jbHVkZSAiV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIu
aCIKIAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTM1LDEzICszNCwxNiBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcjsKK2NsYXNz
IEdQVVJlbmRlclBhc3NFbmNvZGVyOwogCiBjbGFzcyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlciBm
aW5hbCA6IHB1YmxpYyBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFJlZjxHUFVSZW5k
ZXJQYXNzRW5jb2Rlcj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
cj4gY3JlYXRlKFJlZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYmLCBSZWY8R1BVUmVuZGVyUGFzc0Vu
Y29kZXI+JiYpOworCisgICAgdm9pZCBkcmF3KHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcs
IHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOwogCiBwcml2YXRlOgotICAgIFdlYkdQVVJl
bmRlclBhc3NFbmNvZGVyKFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7CisgICAgV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXIoUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+JiYsIFJlZjxHUFVSZW5k
ZXJQYXNzRW5jb2Rlcj4mJik7CiAKICAgICBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciYgcGFz
c0VuY29kZXIoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsCmluZGV4IDUwMDBkM2Qw
OGQyODZmMjYyYTgyMTQ1ZWY1MTkyY2U5NWM3OWIzNGIuLjg2OGY2OGZjNGFkMWZlODhhZTRkZGQ3
YzdlNmRkNWY0ZTk2MmM1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwKQEAgLTI0LDE2ICsyNCwyMCBA
QAogICovCiAvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9ibG9iL21hc3Rlci9k
ZXNpZ24vc2tldGNoLndlYmlkbAogCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOworCiBbCiAg
ICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCisgICAg
RW5hYmxlZEF0UnVudGltZT1XZWJHUFUsCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QKIF0gaW50
ZXJmYWNlIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIDogV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIgeworICAgIHZvaWQgZHJhdyh1MzIgdmVydGV4Q291bnQsIHUzMiBpbnN0YW5jZUNvdW50
LCB1MzIgZmlyc3RWZXJ0ZXgsIHUzMiBmaXJzdEluc3RhbmNlKTsKKwogLyogTm90IFlldCBJbXBs
ZW1lbnRlZAogICAgIHZvaWQgc2V0QmxlbmRDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBi
LCBmbG9hdCBhKTsKICAgICB2b2lkIHNldEluZGV4QnVmZmVyKFdlYkdQVUJ1ZmZlciBidWZmZXIs
IHUzMiBvZmZzZXQpOwogICAgIHZvaWQgc2V0VmVydGV4QnVmZmVycyh1MzIgc3RhcnRTbG90LCBz
ZXF1ZW5jZTxXZWJHUFVCdWZmZXI+IGJ1ZmZlcnMsIHNlcXVlbmNlPHUzMj4gb2Zmc2V0cyk7CiAK
LSAgICB2b2lkIGRyYXcodTMyIHZlcnRleENvdW50LCB1MzIgaW5zdGFuY2VDb3VudCwgdTMyIGZp
cnN0VmVydGV4LCB1MzIgZmlyc3RJbnN0YW5jZSk7CiAgICAgdm9pZCBkcmF3SW5kZXhlZCh1MzIg
aW5kZXhDb3VudCwgdTMyIGluc3RhbmNlQ291bnQsIHUzMiBmaXJzdEluZGV4LCBpMzIgYmFzZVZl
cnRleCwgdTMyIGZpcnN0SW5zdGFuY2UpOwogCiAgICAgLy8gVE9ETyBhZGQgbWlzc2luZyBjb21t
YW5kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuY3BwCmluZGV4IGFiM2MwMjAwNDI4MmQ3YmVhMjMyZmFlZmRkNzU2ODU3ZDU0
ZmRhNGYuLjNjY2YzYzBkYTI2NTU2YWYzOGY5NzM4NjJhNDg4ZWMwYzMxZWE5ZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGlu
ZS5jcHAKQEAgLTMyLDE2ICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0
cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShSZWZQ
dHI8R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCitSZWZQdHI8V2ViR1BVUmVuZGVyUGlw
ZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVsaW5l
PiYmIHBpcGVsaW5lKQogewotICAgIGlmICghcGlwZWxpbmUpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVSZW5kZXJQaXBlbGluZShXVEZN
b3ZlKHBpcGVsaW5lKSkpOwogfQogCi1XZWJHUFVSZW5kZXJQaXBlbGluZTo6V2ViR1BVUmVuZGVy
UGlwZWxpbmUoUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lKQotICAgIDogbV9y
ZW5kZXJQaXBlbGluZShwaXBlbGluZSkKK1dlYkdQVVJlbmRlclBpcGVsaW5lOjpXZWJHUFVSZW5k
ZXJQaXBlbGluZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCisgICAgOiBtX3Jl
bmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKQogewogICAgIFVOVVNFRF9QQVJBTShtX3Jl
bmRlclBpcGVsaW5lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oCmluZGV4IDhiNTEwNjJjZGQyNjE5OGMwZmEwZTk3Zjg2
OTJiZjc2YzZmYWExMWIuLjJjOGI4NjY4ZmFmNmJlMDkxNDk0NTUxZmM3M2NhY2Q5MjBmOTdkMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBp
cGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
UGlwZWxpbmUuaApAQCAtMzYsMTIgKzM2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgV2ViR1BVUmVuZGVyUGlwZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVSZW5kZXJQ
aXBlbGluZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxp
bmU+IGNyZWF0ZShSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+JiYpOworICAgIHN0YXRpYyBSZWZQ
dHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYp
OworCisgICAgUmVmPEdQVVJlbmRlclBpcGVsaW5lPiByZW5kZXJQaXBlbGluZSgpIHsgcmV0dXJu
IG1fcmVuZGVyUGlwZWxpbmUuY29weVJlZigpOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViR1BVUmVu
ZGVyUGlwZWxpbmUoUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiYmKTsKKyAgICBXZWJHUFVSZW5k
ZXJQaXBlbGluZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYpOwogCi0gICAgUmVmUHRyPEdQVVJl
bmRlclBpcGVsaW5lPiBtX3JlbmRlclBpcGVsaW5lOworICAgIFJlZjxHUFVSZW5kZXJQaXBlbGlu
ZT4gbV9yZW5kZXJQaXBlbGluZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKaW5kZXggZDVi
NGIzYmRjZWI0YmU1ZmYwNDE3MWQxOWRlNDIxZTAyNjEwM2MzYi4uZWUxZjI0MzRjNmZjMzA3NTg1
ZDVhM2RhZmRmMWY4YjRlNzEyYjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShX
RUJHUFUpCiAKKyNpbmNsdWRlICJHUFVUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViR1BVVGV4dHVy
ZVZpZXcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oCmluZGV4IDExYzA4ZGU0ZDI1ZGMyY2JkZWQ5NDE4YjU1
YWM3MjViOTEzNjdlNTUuLjFkNDRhMzk2MDZhYTg2ZDFlNjU3NjljMDEyOTkwODNlZTY2YTdlYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmgKQEAg
LTI3LDEzICsyNywxMiBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAotI2luY2x1ZGUgIkdQVVRl
eHR1cmUuaCIKLQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEdQVVRleHR1cmU7CiBjbGFz
cyBXZWJHUFVUZXh0dXJlVmlldzsKIAogY2xhc3MgV2ViR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYkdQVVRleHR1cmU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgK
aW5kZXggOTViYjRiNWQ4OGJjZmVhYzg0OTc1ODYwMmQyNzI5NjlkYjY2NTdiYy4uOTQ4YzBjODg2
YTkzYTk1ODU4MTU5MGM5YTUyYjU0NGE0YmQ3MjZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyLmgKQEAgLTMzLDE0ICszMywyMyBAQCBPQkpDX1BST1RPQ09MKE1UTENvbW1hbmRF
bmNvZGVyKTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBHUFVSZW5kZXJQaXBlbGlu
ZTsKKwogdXNpbmcgUGxhdGZvcm1Qcm9ncmFtbWFibGVQYXNzRW5jb2RlciA9IE1UTENvbW1hbmRF
bmNvZGVyOwogCiBjbGFzcyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciA6IHB1YmxpYyBSZWZD
b3VudGVkPEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyPiB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7CiAKKyAgICB2b2lkIGVu
ZFBhc3MoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRQaXBlbGluZShSZWY8R1BVUmVuZGVyUGlw
ZWxpbmU+JiYpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgUGxhdGZvcm1Qcm9ncmFt
bWFibGVQYXNzRW5jb2RlciogcGxhdGZvcm1QYXNzRW5jb2RlcigpIGNvbnN0ID0gMDsKKworcHJp
dmF0ZToKKyAgICBib29sIG1faXNFbmNvZGluZyB7IHRydWUgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVSZW5kZXJQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NFbmNvZGVyLmgKaW5kZXggZjQwNDQ3ODE1YTQ2YTdhYmNk
MTFhYTAyY2NjMGYwMGIzZjNkMDQ4My4uODM0MmY1MTk0Y2JkODUyZTViMGMyYWNjZDBjYjRiMTdm
NTg3Njc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0dQVVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NFbmNvZGVyLmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19Q
Uk9UT0NPTChNVExSZW5kZXJDb21tYW5kRW5jb2Rlcik7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEdQVUNvbW1hbmRCdWZmZXI7CitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZTsKIAogc3Ry
dWN0IEdQVVJlbmRlclBhc3NEZXNjcmlwdG9yOwogCkBAIC00OCwxMyArNDksMTggQEAgY2xhc3Mg
R1BVUmVuZGVyUGFzc0VuY29kZXIgOiBwdWJsaWMgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIg
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0
ZShjb25zdCBHUFVDb21tYW5kQnVmZmVyJiwgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImJik7CiAK
KyAgICB2b2lkIHNldFBpcGVsaW5lKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJikgZmluYWw7CisK
KyAgICB2b2lkIGRyYXcodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9u
ZywgdW5zaWduZWQgbG9uZyk7CisKIHByaXZhdGU6CiAgICAgR1BVUmVuZGVyUGFzc0VuY29kZXIo
UGxhdGZvcm1SZW5kZXJQYXNzRW5jb2RlclNtYXJ0UHRyJiYpOwotICAgIH5HUFVSZW5kZXJQYXNz
RW5jb2RlcigpOworICAgIH5HUFVSZW5kZXJQYXNzRW5jb2RlcigpIHsgZW5kUGFzcygpOyB9IC8v
IFRoZSBNVExDb21tYW5kRW5jb2RlciBtdXN0IGVuZCBlbmNvZGluZyBiZWZvcmUgaXQgaXMgcmVs
ZWFzZWQuIAogCi0gICAgUGxhdGZvcm1Qcm9ncmFtbWFibGVQYXNzRW5jb2RlciAqcGxhdGZvcm1Q
YXNzRW5jb2RlcigpIGNvbnN0IGZpbmFsOworICAgIFBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIqIHBsYXRmb3JtUGFzc0VuY29kZXIoKSBjb25zdCBmaW5hbDsKIAogICAgIFBsYXRmb3Jt
UmVuZGVyUGFzc0VuY29kZXJTbWFydFB0ciBtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXI7Cisg
ICAgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBtX3BpcGVsaW5lOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvR1BVUmVuZGVyUGlwZWxpbmUuaAppbmRleCA0MmZkOWEzMzVkYWE5MTRjNTJkOTY3
MzU5ZDY3ODIzOTk5M2IyMzE0Li5iM2I1NDg0YmU4NmEyYTNhZWQ1MzE5NmZmOTQ5YTM4Y2FjYWYy
YTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BV
UmVuZGVyUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvR1BVUmVuZGVyUGlwZWxpbmUuaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaWYgRU5BQkxFKFdF
QkdQVSkKIAorI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgorCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMzcsMTAgKzM5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBHUFVEZXZpY2U7CiAKLXN0cnVjdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3I7Ci0KIHVzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmUgPSBNVExSZW5kZXJQaXBlbGluZVN0
YXRlOwogdXNpbmcgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyID0gUmV0YWluUHRyPE1U
TFJlbmRlclBpcGVsaW5lU3RhdGU+OwordXNpbmcgUHJpbWl0aXZlVG9wb2xvZ3kgPSBHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3I6OlByaW1pdGl2ZVRvcG9sb2d5OwogCiBjbGFzcyBHUFVSZW5k
ZXJQaXBlbGluZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVJlbmRlclBpcGVsaW5lPiB7CiBwdWJs
aWM6CkBAIC00OCwxMCArNDksMTMgQEAgcHVibGljOgogCiAgICAgUGxhdGZvcm1SZW5kZXJQaXBl
bGluZSogcGxhdGZvcm1SZW5kZXJQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1S
ZW5kZXJQaXBlbGluZS5nZXQoKTsgfQogCisgICAgUHJpbWl0aXZlVG9wb2xvZ3kgcHJpbWl0aXZl
VG9wb2xvZ3koKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0b3IucHJpbWl0aXZlVG9wb2xvZ3k7
IH0KKwogcHJpdmF0ZToKLSAgICBHUFVSZW5kZXJQaXBlbGluZShQbGF0Zm9ybVJlbmRlclBpcGVs
aW5lU21hcnRQdHImJik7CisgICAgR1BVUmVuZGVyUGlwZWxpbmUoUGxhdGZvcm1SZW5kZXJQaXBl
bGluZVNtYXJ0UHRyJiYsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmKTsKIAogICAgIFBs
YXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciBtX3BsYXRmb3JtUmVuZGVyUGlwZWxpbmU7Cisg
ICAgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIG1fZGVzY3JpcHRvcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyTWV0YWwubW0KaW5kZXggMGJiNDI4ZmIzZWM5OTU1YWYxODdiMzMxYjYwNmU0Zjc2
MTJjNjgxYS4uMmU2NDM2MzgxNDZhMWI4OWNhN2Y4Yzk2ODY2NTNkMjcyNWQzNDE4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L2NvY29hL0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyTWV0YWwubW0KQEAg
LTI4LDggKzI4LDE5IEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisjaW1wb3J0IDxNZXRhbC9N
ZXRhbC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3ZvaWQgR1BVUHJvZ3JhbW1hYmxlUGFz
c0VuY29kZXI6OmVuZFBhc3MoKQoreworICAgIGlmICghbV9pc0VuY29kaW5nKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBbcGxhdGZvcm1QYXNzRW5jb2RlcigpIGVuZEVuY29kaW5nXTsKKyAgICBt
X2lzRW5jb2RpbmcgPSBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBhc3NFbmNvZGVy
TWV0YWwubW0KaW5kZXggZTAxYTg4M2ViMGEzYzdlYjU5N2M0ZDE2NzU4NjExZGM2OTRkMzRhMC4u
NTlhMGJjMWZjZTljOTNhOWJiZTIxMGI1ZjczN2RlNjRhNTRkMzYyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRlclBhc3NFbmNv
ZGVyTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVJlbmRlclBhc3NFbmNvZGVyTWV0YWwubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lt
cG9ydCAiR1BVQ29tbWFuZEJ1ZmZlci5oIgogI2ltcG9ydCAiR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuaCIKKyNpbXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CiAKICNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CkBAIC02OCwxNiArNjksNDYgQEAgR1BVUmVuZGVy
UGFzc0VuY29kZXI6OkdQVVJlbmRlclBhc3NFbmNvZGVyKFBsYXRmb3JtUmVuZGVyUGFzc0VuY29k
ZXJTbWFydFB0ciYmIGUKIHsKIH0KIAotR1BVUmVuZGVyUGFzc0VuY29kZXI6On5HUFVSZW5kZXJQ
YXNzRW5jb2RlcigpCitQbGF0Zm9ybVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyICpHUFVSZW5kZXJQ
YXNzRW5jb2Rlcjo6cGxhdGZvcm1QYXNzRW5jb2RlcigpIGNvbnN0CiB7Ci0gICAgLy8gVGhlIE1U
TENvbW1hbmRFbmNvZGVyIG11c3QgaGF2ZSBmaW5pc2hlZCBlbmNvZGluZyBiZWZvcmUgaXQgY2Fu
IGJlIHJlbGVhc2VkLgotICAgIC8vIEZJWE1FOiBPbmx5IGNhbGwgdGhpcyBpZiB3ZSBoYXZlIG5v
dCBhbHJlYWR5IGVuZGVkIGVuY29kaW5nLgotICAgIFttX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29k
ZXIgZW5kRW5jb2RpbmddOworICAgIHJldHVybiBtX3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIu
Z2V0KCk7CiB9CiAKLVBsYXRmb3JtUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgKkdQVVJlbmRlclBh
c3NFbmNvZGVyOjpwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgY29uc3QKK3ZvaWQgR1BVUmVuZGVyUGFz
c0VuY29kZXI6OnNldFBpcGVsaW5lKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkK
IHsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyLmdldCgpOworICAgIFtt
X3BsYXRmb3JtUmVuZGVyUGFzc0VuY29kZXIgc2V0UmVuZGVyUGlwZWxpbmVTdGF0ZTpwaXBlbGlu
ZS0+cGxhdGZvcm1SZW5kZXJQaXBlbGluZSgpXTsKKyAgICBtX3BpcGVsaW5lID0gV1RGTW92ZShw
aXBlbGluZSk7Cit9CisKK3N0YXRpYyBNVExQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGVGb3JH
UFVQcmltaXRpdmVUb3BvbG9neShQcmltaXRpdmVUb3BvbG9neSB0eXBlKQoreworICAgIHN3aXRj
aCAodHlwZSkgeworICAgIGNhc2UgUHJpbWl0aXZlVG9wb2xvZ3k6OlBvaW50TGlzdDoKKyAgICAg
ICAgcmV0dXJuIE1UTFByaW1pdGl2ZVR5cGVQb2ludDsKKyAgICBjYXNlIFByaW1pdGl2ZVRvcG9s
b2d5OjpMaW5lTGlzdDoKKyAgICAgICAgcmV0dXJuIE1UTFByaW1pdGl2ZVR5cGVMaW5lOworICAg
IGNhc2UgUHJpbWl0aXZlVG9wb2xvZ3k6OkxpbmVTdHJpcDoKKyAgICAgICAgcmV0dXJuIE1UTFBy
aW1pdGl2ZVR5cGVMaW5lU3RyaXA7CisgICAgY2FzZSBQcmltaXRpdmVUb3BvbG9neTo6VHJpYW5n
bGVMaXN0OgorICAgICAgICByZXR1cm4gTVRMUHJpbWl0aXZlVHlwZVRyaWFuZ2xlOworICAgIGNh
c2UgUHJpbWl0aXZlVG9wb2xvZ3k6OlRyaWFuZ2xlU3RyaXA6CisgICAgICAgIHJldHVybiBNVExQ
cmltaXRpdmVUeXBlVHJpYW5nbGVTdHJpcDsKKyAgICB9Cit9CisKK3ZvaWQgR1BVUmVuZGVyUGFz
c0VuY29kZXI6OmRyYXcoCisgICAgdW5zaWduZWQgbG9uZyB2ZXJ0ZXhDb3VudCwKKyAgICB1bnNp
Z25lZCBsb25nIGluc3RhbmNlQ291bnQsCisgICAgdW5zaWduZWQgbG9uZyBmaXJzdFZlcnRleCwK
KyAgICB1bnNpZ25lZCBsb25nIGZpcnN0SW5zdGFuY2UKKyAgICApCit7CisgICAgW21fcGxhdGZv
cm1SZW5kZXJQYXNzRW5jb2RlciAKKyAgICBkcmF3UHJpbWl0aXZlczpwcmltaXRpdmVUeXBlRm9y
R1BVUHJpbWl0aXZlVG9wb2xvZ3kobV9waXBlbGluZS0+cHJpbWl0aXZlVG9wb2xvZ3koKSkKKyAg
ICB2ZXJ0ZXhTdGFydDpmaXJzdFZlcnRleAorICAgIHZlcnRleENvdW50OnZlcnRleENvdW50Cisg
ICAgaW5zdGFuY2VDb3VudDppbnN0YW5jZUNvdW50CisgICAgYmFzZUluc3RhbmNlOmZpcnN0SW5z
dGFuY2VdOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRh
bC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5k
ZXJQaXBlbGluZU1ldGFsLm1tCmluZGV4IGM5NDZkNTUwOWQyMjI4ZDQ1ZjA2NGIwZjZkMzViY2Nh
ODYwZDdlYWYuLjllY2E0YzFiZjQ5MjlmZmUyMjEwNzg1ZTgzODMxZGIxNjIyNTJhN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5k
ZXJQaXBlbGluZU1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCkBAIC0yOCw3ICsyOCw2IEBACiAK
ICNpZiBFTkFCTEUoV0VCR1BVKQogCi0jaW1wb3J0ICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKIAogI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KQEAg
LTM2LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBzZXRG
dW5jdGlvbnNGb3JQaXBlbGluZURlc2NyaXB0b3IoY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25O
YW1lLCBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgKm10bERlc2NyaXB0b3IsIEdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCitzdGF0aWMgYm9vbCBzZXRGdW5jdGlv
bnNGb3JQaXBlbGluZURlc2NyaXB0b3IoY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lLCBN
VExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgKm10bERlc2NyaXB0b3IsIGNvbnN0IEdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICNpZiBMT0dfRElTQUJMRUQKICAg
ICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKQEAgLTEwNSw3ICsxMDQsNyBAQCBSZWZQdHI8
R1BVUmVuZGVyUGlwZWxpbmU+IEdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoY29uc3QgR1BVRGV2
aWNlJiBkZXZpY2UsIEdQVQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBp
ZiAoIXNldEZ1bmN0aW9uc0ZvclBpcGVsaW5lRGVzY3JpcHRvcihmdW5jdGlvbk5hbWUsIG10bERl
c2NyaXB0b3IuZ2V0KCksIFdURk1vdmUoZGVzY3JpcHRvcikpKQorICAgIGlmICghc2V0RnVuY3Rp
b25zRm9yUGlwZWxpbmVEZXNjcmlwdG9yKGZ1bmN0aW9uTmFtZSwgbXRsRGVzY3JpcHRvci5nZXQo
KSwgZGVzY3JpcHRvcikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gRklYTUU6
IEdldCB0aGUgcGl4ZWxGb3JtYXQgYXMgY29uZmlndXJlZCBmb3IgdGhlIGNvbnRleHQvQ0FNZXRh
bExheWVyLgpAQCAtMTI0LDExICsxMjMsMTIgQEAgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBH
UFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFUKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBH
UFVSZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgR1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSksIFdURk1vdmUoZGVzY3Jp
cHRvcikpKTsKIH0KIAotR1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRlclBpcGVsaW5lKFBsYXRm
b3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciYmIHBpcGVsaW5lKQorR1BVUmVuZGVyUGlwZWxpbmU6
OkdQVVJlbmRlclBpcGVsaW5lKFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciYmIHBpcGVs
aW5lLCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQogICAgIDogbV9w
bGF0Zm9ybVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKQorICAgICwgbV9kZXNjcmlw
dG9yKFdURk1vdmUoZGVzY3JpcHRvcikpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5MTRlZGYzMDJmMjY5YjZl
ZDU1MzBkZjIyOTQ5N2I2YTMxZjMwNjEzLi5iNmQxNGM3ODgwNGMwYjY3NjczMWZlMjU2N2Q0Zjky
Mjg0NTdkZjkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMTEtMjggIEp1c3RpbiBGYW4g
IDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBXZWJHUFVSZW5kZXJQ
YXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUsIGRyYXcsIGFuZCBlbmRQYXNzIHByb3RvdHlwZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjEzNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0aW5nIHRo
ZSBiYXNpYyByZW5kZXJpbmcgdGVzdCB3aXRoIG1vcmUgY29tbWFuZHMsIGFuZCBhIHByb3RvdHlw
ZSBXUFQtYmFzZWQgdGVzdCBmb3IgV2ViR1BVUmVuZGVyQ29tbWFuZEVuY29kZXIncworICAgICAg
ICBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHdlYmdwdS9qcy9iYXNpYy13ZWJncHUt
ZnVuY3Rpb25zLmpzOgorICAgICAgICAocmVuZGVyKToKKyAgICAgICAgKiB3ZWJncHUvcmVuZGVy
LWNvbW1hbmQtZW5jb2RpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUv
cmVuZGVyLWNvbW1hbmQtZW5jb2RpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3Jl
bmRlci1wYXNzZXMuaHRtbDoKKwogMjAxOC0xMS0yNiAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEJlZ2luIGltcGxlbWVudGF0aW9uIG9mIFdl
YkdQVVJlbmRlclBhc3NFbmNvZGVyIGFuZCBiYXJlYm9uZXMgV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9qcy9iYXNpYy13ZWJncHUtZnVu
Y3Rpb25zLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2pzL2Jhc2ljLXdlYmdwdS1mdW5jdGlvbnMu
anMKaW5kZXggNDFmNWJjZWViMzg1NWNmOWY4MGE5ZmFlYWIyYjBmYmFlOGU1MjZjNS4uNTBhYTA4
ZWZjMmQzOGIyMWJlOTVhMmM5NTQ5MzU2ODRhNTVmNGFhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L2pzL2Jhc2ljLXdlYmdwdS1mdW5jdGlvbnMuanMKKysrIGIvTGF5b3V0VGVzdHMv
d2ViZ3B1L2pzL2Jhc2ljLXdlYmdwdS1mdW5jdGlvbnMuanMKQEAgLTE0OSw1ICsxNDksMTUgQEAg
ZnVuY3Rpb24gcmVuZGVyKCkgewogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgcmVuZGVy
UGFzc0VuY29kZXIuc2V0UGlwZWxpbmUocmVuZGVyUGlwZWxpbmUpOworCisgICAgLy8gTm90ZSB0
aGF0IHdlIGRpZG4ndCBhdHRhY2ggYW55IGJ1ZmZlcnMgLSB0aGUgc2hhZGVyIGlzIGdlbmVyYXRp
bmcgdGhlIHZlcnRpY2VzIGZvciB1cy4KKyAgICByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDMsIDEs
IDAsIDApOworICAgIGxldCBjb21tYW5kQnVmZmVyRW5kID0gcmVuZGVyUGFzc0VuY29kZXIuZW5k
UGFzcygpOworICAgIGlmICghY29tbWFuZEJ1ZmZlckVuZCkgeworICAgICAgICB0ZXN0RmFpbGVk
KCJVbmFibGUgdG8gY3JlYXRlIFdlYkdQVUNvbW1hbmRCdWZmZXIgZnJvbSBXZUdQVVJlbmRlclBh
c3NFbmNvZGVyOjplbmRQYXNzISIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8g
RklYTUU6IFJlc3Qgb2YgcmVuZGVyaW5nIGNvbW1hbmRzIHRvIGZvbGxvdy4KIH0KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVy
LWNvbW1hbmQtZW5jb2RpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRl
ci1jb21tYW5kLWVuY29kaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMWQzMTNmMzVkNmFk
YWVhNTQzNTlkYTFjZDQ2ZTI3NmQ0MTZiYzg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViZ3B1L3JlbmRlci1jb21tYW5kLWVuY29kaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQgQEAKK1BBU1MgW29iamVjdCBXZWJHUFVdIGlzIGRlZmluZWQuCisKK1BBU1MgV2ViR1BVUmVu
ZGVyUGFzc0VuY29kZXIgY3JlYXRlZCBhbmQgc3VjY2Vzc2Z1bGx5IGVuZGVkIAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLWNvbW1hbmQtZW5jb2RpbmcuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI2ZjBhMjg2YmVlYjU2YTcyMjVjZjI5NWM2YTg0NjkzZWQ2M2MwZTcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLWNvbW1hbmQtZW5jb2RpbmcuaHRtbApAQCAt
MCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4
cGVyaW1lbnRhbDpXZWJHUFVFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+
Cis8dGl0bGU+R2V0IHRoZSBXZWJHUFVEZXZpY2UgYW5kIGFzayBmb3IgdGhlIFdlYkdQVVF1ZXVl
PC90aXRsZT4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImpzL2Jhc2ljLXdlYmdwdS1mdW5jdGlvbnMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKKworbGV0IGNhbnZhcywgY29tbWFuZEJ1
ZmZlciwgcmVuZGVyUGFzc0VuY29kZXI7CisKK2Z1bmN0aW9uIGJlZ2luUGFzcygpIHsKKyAgICAv
LyBGSVhNRTogRmxlc2ggb3V0IHRoZSByZXN0IG9mIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9y
LiAKKyAgICAvLyBEZWZhdWx0IGEgbG9hZE9wLCBzdG9yZU9wLCBhbmQgY2xlYXJDb2xvciBpbiB0
aGUgaW1wbGVtZW50YXRpb24gZm9yIG5vdy4KKyAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRv
ciA9IHsKKyAgICAgICAgYXR0YWNobWVudCA6IGNvbnRleHQuZ2V0TmV4dFRleHR1cmUoKS5jcmVh
dGVEZWZhdWx0VGV4dHVyZVZpZXcoKQorICAgIH0KKworICAgIHJlbmRlclBhc3NFbmNvZGVyID0g
Y29tbWFuZEJ1ZmZlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0b3IpOworICAg
IGFzc2VydF90cnVlKHJlbmRlclBhc3NFbmNvZGVyIGluc3RhbmNlb2YgV2ViR1BVUmVuZGVyUGFz
c0VuY29kZXIsICJiZWdpblJlbmRlclBhc3MgcmV0dXJuZWQgYSBXZWJHUFVSZW5kZXJQYXNzRW5j
b2RlciIpOworfQorCitmdW5jdGlvbiBzZXRVcENvbW1hbmRCdWZmZXIoKSB7CisgICAgY29tbWFu
ZEJ1ZmZlciA9IGRlZmF1bHREZXZpY2UuY3JlYXRlQ29tbWFuZEJ1ZmZlcigpOworICAgIGFzc2Vy
dF90cnVlKGNvbW1hbmRCdWZmZXIgaW5zdGFuY2VvZiBXZWJHUFVDb21tYW5kQnVmZmVyLCAiY3Jl
YXRlQ29tbWFuZEJ1ZmZlciByZXR1cm5lZCBhIFdlYkdQVUNvbW1hbmRCdWZmZXIiKTsKK30KKwor
ZnVuY3Rpb24gZW5kUmVuZGVyUGFzcygpIHsKKyAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBl
bGluZShyZW5kZXJQaXBlbGluZSk7CisKKyAgICBjb25zdCBjb21tYW5kQnVmZmVyRW5kID0gcmVu
ZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOworICAgIGFzc2VydF90cnVlKGNvbW1hbmRCdWZmZXJF
bmQgaW5zdGFuY2VvZiBXZWJHUFVDb21tYW5kQnVmZmVyLCAiZW5kUGFzcygpIHJldHVybmVkIGEg
V2ViR1BVQ29tbWFuZEJ1ZmZlciIpOworCisgICAgLy8gRklYTUU6IFNob3VsZCBjb21tYW5kQnVm
ZmVyRW5kID09PSBjb21tYW5kQnVmZmVyPworfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4g
eworICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGF3
YWl0IHNldFVwQ29udGV4dHMoY2FudmFzKTsKKyAgICBzZXRVcFBpcGVsaW5lKCk7CisgICAgc2V0
VXBDb21tYW5kQnVmZmVyKCk7CisgICAgYmVnaW5QYXNzKCk7CisgICAgZW5kUmVuZGVyUGFzcygp
OworfSwgIldlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGNyZWF0ZWQgYW5kIHN1Y2Nlc3NmdWxseSBl
bmRlZCIpOworCis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS9yZW5kZXItcGFzc2VzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBhc3Nl
cy5odG1sCmluZGV4IGRjOTQwNTBjYjgxZjg4MDAzOGY3Y2QwYTBjODc4ODE4ZmJiM2NmMTkuLjI4
NmQ0N2ExYmIwNGI4ZTNjNzNhNjVhY2MzZGNjNWQ5YzljMTcyYWYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS9yZW5kZXItcGFzc2VzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3JlbmRlci1wYXNzZXMuaHRtbApAQCAtNiwxNiArNiwxNiBAQAogaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQogICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAotbGV0IGNvbW1hbmRC
dWZmZXIsIHRleHR1cmUsIHRleHR1cmVWaWV3LCByZW5kZXJQYXNzRGVzY3JpcHRvciwgcmVuZGVy
UGFzc0VuY29kZXI7CitsZXQgY29tbWFuZEJ1ZmZlciwgcmVuZGVyUGFzc0VuY29kZXI7CiAKIGZ1
bmN0aW9uIHNldFVwQmFzaWNSZW5kZXJQYXNzRW5jb2RlcigpIHsKICAgICBjb21tYW5kQnVmZmVy
ID0gZGVmYXVsdERldmljZS5jcmVhdGVDb21tYW5kQnVmZmVyKCk7Ci0gICAgdGV4dHVyZSA9IGNv
bnRleHQuZ2V0TmV4dFRleHR1cmUoKTsKLSAgICB0ZXh0dXJlVmlldyA9IHRleHR1cmUuY3JlYXRl
RGVmYXVsdFRleHR1cmVWaWV3KCk7CisgICAgY29uc3QgdGV4dHVyZSA9IGNvbnRleHQuZ2V0TmV4
dFRleHR1cmUoKTsKKyAgICBjb25zdCB0ZXh0dXJlVmlldyA9IHRleHR1cmUuY3JlYXRlRGVmYXVs
dFRleHR1cmVWaWV3KCk7CiAKICAgICAvLyBGSVhNRTogRmxlc2ggb3V0IHRoZSByZXN0IG9mIFdl
YkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLiAKICAgICAvLyBEZWZhdWx0IGEgbG9hZE9wLCBzdG9y
ZU9wLCBhbmQgY2xlYXJDb2xvciBpbiB0aGUgaW1wbGVtZW50YXRpb24gZm9yIG5vdy4KLSAgICBy
ZW5kZXJQYXNzRGVzY3JpcHRvciA9IHsKKyAgICBjb25zdCByZW5kZXJQYXNzRGVzY3JpcHRvciA9
IHsKICAgICAgICAgYXR0YWNobWVudCA6IHRleHR1cmVWaWV3CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356035</attachid>
            <date>2018-11-29 12:31:19 -0800</date>
            <delta_ts>2018-11-29 13:09:17 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-192134-20181129123119.patch</filename>
            <type>text/plain</type>
            <size>29757</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTIxZjRjMTIzYTIxMjQ0
Y2NjNTc5NDUwZmYzYjliYWFmNjcyYTFhNC4uYWU3ZGNhYjNiMzJiMjJmMjU2MzEwMGE3NTZiYzJl
MDhhZjUyNGY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE4LTExLTI4ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gV2ViR1BV
UmVuZGVyUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lLCBkcmF3LCBhbmQgZW5kUGFzcyBwcm90b3R5
cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIx
MzQKKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgV3JhcCB1
cCBwcm90b3R5cGUgZmVhdHVyZXMgZm9yIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyLiAKKworICAg
ICAgICBUZXN0OiB3ZWJncHUvcmVuZGVyLWNvbW1hbmQtZW5jb2RpbmcuaHRtbAorCisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5jcHA6IAorICAgICAgICAoV2Vi
Q29yZTo6V2ViR1BVQ29tbWFuZEJ1ZmZlcjo6YmVnaW5SZW5kZXJQYXNzKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BV
RGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OldlYkdQVVByb2dyYW1tYWJsZVBhc3NF
bmNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
OjplbmRQYXNzKTogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgV2ViR1BVQ29tbWFuZEJ1ZmZl
ciB0aGF0IGNyZWF0ZWQgdGhpcyBlbmNvZGVyLgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXI6OnNldFBpcGVsaW5lKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oOiBVcGRhdGVkIHRvIHN1cHBvcnQg
ZW5kUGFzcyBhbmQgc2V0UGlwZWxpbmUuCisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVJlbmRl
clBhc3NFbmNvZGVyOjpjcmVhdGUpOiBNdXN0IGJlIHByb3ZpZGVkIHdpdGggdGhlIFdlYkdQVUNv
bW1hbmRCdWZmZXIuCisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVuZGVy
UGFzc0VuY29kZXI6OmRyYXcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBhc3NFbmNvZGVyLmg6IFVwZGF0ZWQgdG8gY2FjaGUgYSByZWZlcmVuY2UgdG8gdGhlIFdlYkdQ
VUNvbW1hbmRCdWZmZXIsIGFuZCBmb3IgZHJhdy4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVuZGVyUGlw
ZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5kZXJQaXBlbGluZTo6
V2ViR1BVUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lLmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5kZXJQaXBlbGluZTo6
cmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUu
Y3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaDogUmVwbGFjZWQg
aW5jbHVkZSB3aXRoIGZvcndhcmQgZGVjbGFyYXRpb24uCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmg6IFVwZGF0ZWQgdG8gc3VwcG9y
dCBuZXcgV2ViR1BVX1Bhc3NFbmNvZGVyIGZ1bmN0aW9uYWxpdHkuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6fkdQVVJlbmRlclBhc3NFbmNvZGVyKTogTm93IGVuZHMg
ZW5jb2Rpbmcgb24gdGhlIE1UTENvbW1hbmRFbmNvZGVyLCBpZiBub3QgYWxyZWFkeSBlbmRlZCwg
YmVmb3JlIGZyZWVpbmcgaXQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJl
bmRlclBpcGVsaW5lLmg6IE5vdyByZW1lbWJlcnMgdGhlIEdQVVByaW1pdGl2ZVRvcG9sb2d5IHRo
YXQgaXQgd2FzIGNyZWF0ZWQgd2l0aC4KKyAgICAgICAgKFdlYkNvcmU6OkdQVVJlbmRlclBpcGVs
aW5lOjpwcmltaXRpdmVUb3BvbG9neSBjb25zdCk6IAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXI6OmVuZFBhc3MpOiBDYWxscyBl
bmRFbmNvZGluZyBvbiB0aGUgYmFja2luZyBNVExDb21tYW5kRW5jb2RlciwgaWYgbm90IGFscmVh
ZHkgZW5kZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVJlbmRl
clBhc3NFbmNvZGVyTWV0YWwubW06CisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQYXNzRW5j
b2Rlcjo6cGxhdGZvcm1QYXNzRW5jb2RlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHUFVS
ZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnByaW1pdGl2ZVR5cGVGb3JHUFVQcmltaXRpdmVUb3BvbG9neSk6IEFkZGVkLiBIZWxwZXIgZnVu
Y3Rpb24gdG8gY29udmVydCBHUFVQcmltaXRpdmVUb3BvbG9neSB0byBNVExQcmltaXRpdmVUeXBl
LgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcpOiBBZGRlZC4g
RHJhd3MgdXNpbmcgcHJpbWl0aXZlIHRvcG9sb2d5IHNwZWNpZmllZCBkdXJpbmcgcGlwZWxpbmUg
Y3JlYXRpb24uIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5k
ZXJQaXBlbGluZU1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2V0RnVuY3Rpb25zRm9yUGlw
ZWxpbmVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVJlbmRlclBpcGVsaW5lOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRlclBp
cGVsaW5lKTogTm93IG11c3Qgc3RvcmUgdGhlIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBm
b3IgbGF0ZXIgcmVmZXJlbmNlLiAKKwogMjAxOC0xMS0yNiAgSnVzdGluIEZhbiAgPGp1c3Rpbl9m
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEJlZ2luIGltcGxlbWVudGF0aW9uIG9m
IFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGFuZCBiYXJlYm9uZXMgV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUNvbW1hbmRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tbWFuZEJ1ZmZlci5jcHAKaW5kZXggNTNmYTFkZTQ2MzY3NjRlNzYyZTViY2RkZTA0NzZiOWU5
ZjIwY2ZmNy4uNGY3NjA0NjNmMjIwNGNiZThkNjhiZTE4N2ZkMjAwZDkxZWUwY2JlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tbWFuZEJ1ZmZl
ci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgUmVmUHRyPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBX
ZWJHUFVDb21tYW5kQnVmZmVyOjpiZWdpblJlbmRlclBhc3MoV2ViR1BVUmVuZGUKICAgICBpZiAo
IWVuY29kZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdlYkdQVVJl
bmRlclBhc3NFbmNvZGVyOjpjcmVhdGUoZW5jb2Rlci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBy
ZXR1cm4gV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmNyZWF0ZSgqdGhpcywgZW5jb2Rlci5yZWxl
YXNlTm9uTnVsbCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKaW5kZXggZTkwMWMxMmI5OTNj
MmViZjI3M2Q0OTVmNmE0YTRmZTdiMWQxYzJhMC4uNTNkMTM5MmRlZDE5YmJmODcyMDkzNWUyMjli
MmE1Y2VmNzk0ZGFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVRGV2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuY3BwCkBAIC0xMTcsNyArMTE3LDEyIEBAIFJlZlB0cjxXZWJHUFVSZW5kZXJQaXBl
bGluZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBl
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBXZWJHUFVSZW5k
ZXJQaXBlbGluZTo6Y3JlYXRlKG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKHZlcnRleFN0YWdlKSwgV1RGTW92ZShmcmFn
bWVudFN0YWdlKSwgZGVzY3JpcHRvci5wcmltaXRpdmVUb3BvbG9neSB9KSk7CisgICAgYXV0byBw
aXBlbGluZSA9IG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IgeyBXVEZNb3ZlKHZlcnRleFN0YWdlKSwgV1RGTW92ZShmcmFnbWVudFN0YWdl
KSwgZGVzY3JpcHRvci5wcmltaXRpdmVUb3BvbG9neSB9KTsKKworICAgIGlmICghcGlwZWxpbmUp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFdlYkdQVVJlbmRlclBpcGVs
aW5lOjpjcmVhdGUocGlwZWxpbmUucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKIFJlZlB0cjxXZWJH
UFVDb21tYW5kQnVmZmVyPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZUNvbW1hbmRCdWZmZXIoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3Jh
bW1hYmxlUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuY3BwCmluZGV4IDU4NTE1NzhkYWM4ZmQ3MTI5NDgz
MzU0ZDZmYzUwYWZhNjA1ZmJmZGIuLjg5MjgyYjUwZjkxMzU5MDRiYmFhOGFmNGU0MzQwMWU5MjE1
MjI4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBy
b2dyYW1tYWJsZVBhc3NFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5jcHAKQEAgLTI4LDggKzI4LDI4IEBA
CiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisjaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIuaCIKKyNpbmNsdWRlICJXZWJHUFVDb21tYW5kQnVmZmVyLmgiCisjaW5jbHVkZSAiV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitXZWJHUFVQcm9n
cmFtbWFibGVQYXNzRW5jb2Rlcjo6V2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIoUmVmPFdl
YkdQVUNvbW1hbmRCdWZmZXI+JiYgY3JlYXRvcikKKyAgICA6IG1fY29tbWFuZEJ1ZmZlcihXVEZN
b3ZlKGNyZWF0b3IpKQoreworfQorCitSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4gV2ViR1BVUHJv
Z3JhbW1hYmxlUGFzc0VuY29kZXI6OmVuZFBhc3MoKQoreworICAgIHBhc3NFbmNvZGVyKCkuZW5k
UGFzcygpOworICAgIHJldHVybiBtX2NvbW1hbmRCdWZmZXIuY29weVJlZigpOworfQorCit2b2lk
IFdlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZShSZWY8V2ViR1BVUmVu
ZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCit7CisgICAgcGFzc0VuY29kZXIoKS5zZXRQaXBlbGlu
ZShwaXBlbGluZS0+cmVuZGVyUGlwZWxpbmUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaApp
bmRleCBlNzNlN2QwOGY0OGMyYTdkOWZkMjViODkwMTJlYmVkZTI0OGUzNDQzLi42Mzg0ODRiOWZm
MjFmMjk0MTUwOTIxMjNmYTRjNTdkOWQwNzIyNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVy
LmgKQEAgLTMyLDEzICszMiwyMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHUFVQ
cm9ncmFtbWFibGVQYXNzRW5jb2RlcjsKK2NsYXNzIFdlYkdQVUNvbW1hbmRCdWZmZXI7CitjbGFz
cyBXZWJHUFVSZW5kZXJQaXBlbGluZTsKIAogY2xhc3MgV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0Vu
Y29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlcj4g
ewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKCkg
PSBkZWZhdWx0OwogCisgICAgUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+IGVuZFBhc3MoKTsKKyAg
ICB2b2lkIHNldFBpcGVsaW5lKFJlZjxXZWJHUFVSZW5kZXJQaXBlbGluZT4mJik7CisKIHByb3Rl
Y3RlZDoKKyAgICBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcihSZWY8V2ViR1BVQ29tbWFu
ZEJ1ZmZlcj4mJik7CisKICAgICB2aXJ0dWFsIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyJiBw
YXNzRW5jb2RlcigpIGNvbnN0ID0gMDsKKworcHJpdmF0ZToKKyAgICBSZWY8V2ViR1BVQ29tbWFu
ZEJ1ZmZlcj4gbV9jb21tYW5kQnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaWRsCmluZGV4IDY5Y2E4NTA2YWI2OTllOWZkNmQyMzA5
YTVjMjRmYzVhZWRkZTAyYjQuLjM1MzYxZDk2OWQzNzRhZmQ4ZWJhMTVlZTI0MjYwOWFiZjhlMGEy
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5pZGwKQEAgLTI5LDExICsyOSwxMyBAQAog
ICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVLAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCiBd
IGludGVyZmFjZSBXZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7Ci0vKiBOb3QgWWV0IElt
cGxlbWVudGVkCiAgICAgV2ViR1BVQ29tbWFuZEJ1ZmZlciBlbmRQYXNzKCk7CisKKyAgICAvLyBG
SVhNRTogT25seSBzdXBwb3J0IHJlbmRlciBwaXBlbGluZXMgZm9yIHByb3RvdHlwZS4KKyAgICB2
b2lkIHNldFBpcGVsaW5lKFdlYkdQVVJlbmRlclBpcGVsaW5lIHBpcGVsaW5lKTsKKy8qIE5vdCBZ
ZXQgSW1wbGVtZW50ZWQKICAgICAvLyBBbGxvd2VkIGluIGJvdGggY29tcHV0ZSBhbmQgcmVuZGVy
IHBhc3NlcwogICAgIC8vIFRPRE86IHNldFB1c2hDb25zdGFudHMoKSA/CiAgICAgdm9pZCBzZXRC
aW5kR3JvdXAodTMyIGluZGV4LCBXZWJHUFVCaW5kR3JvdXAgYmluZEdyb3VwKTsKLSAgICB2b2lk
IHNldFBpcGVsaW5lKChXZWJHUFVDb21wdXRlUGlwZWxpbmUgb3IgV2ViR1BVUmVuZGVyUGlwZWxp
bmUpIHBpcGVsaW5lKTsKICovCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuY3BwCmluZGV4IDNkZDE2OWI4Nzc1
NmVkZjk3N2JkNzViYmM3ODBmNDEzMGFhMTIzMGYuLjhlYjBiNDZiN2E3NzdhNDVjMmI5YTJiOTE5
YzAwZDk3YzE1MzRjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5jcHAKQEAgLTI5LDE5ICsyOSwyNyBAQAog
I2lmIEVOQUJMRShXRUJHUFUpCiAKICNpbmNsdWRlICJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rl
ci5oIgorI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NFbmNvZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVSZW5kZXJQYXNzRW5j
b2Rlcjo6Y3JlYXRlKFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJiBlbmNvZGVyKQorUmVmPFdl
YkdQVVJlbmRlclBhc3NFbmNvZGVyPiBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6Y3JlYXRlKFJl
ZjxXZWJHUFVDb21tYW5kQnVmZmVyPiYmIGNyZWF0b3IsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rl
cj4mJiBlbmNvZGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBh
c3NFbmNvZGVyKFdURk1vdmUoZW5jb2RlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJHUFVSZW5kZXJQYXNzRW5jb2RlcihXVEZNb3ZlKGNyZWF0b3IpLCBXVEZNb3ZlKGVuY29kZXIp
KSk7CiB9CiAKLVdlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpXZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
cihSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKLSAgICA6IG1fcGFzc0VuY29k
ZXIoV1RGTW92ZShlbmNvZGVyKSkKK1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyOjpXZWJHUFVSZW5k
ZXJQYXNzRW5jb2RlcihSZWY8V2ViR1BVQ29tbWFuZEJ1ZmZlcj4mJiBjcmVhdG9yLCBSZWY8R1BV
UmVuZGVyUGFzc0VuY29kZXI+JiYgZW5jb2RlcikKKyAgICA6IFdlYkdQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyKFdURk1vdmUoY3JlYXRvcikpCisgICAgLCBtX3Bhc3NFbmNvZGVyKFdURk1vdmUo
ZW5jb2RlcikpCiB7CiB9CiAKK3ZvaWQgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OmRyYXcodW5z
aWduZWQgbG9uZyB2ZXJ0ZXhDb3VudCwgdW5zaWduZWQgbG9uZyBpbnN0YW5jZUNvdW50LCB1bnNp
Z25lZCBsb25nIGZpcnN0VmVydGV4LCB1bnNpZ25lZCBsb25nIGZpcnN0SW5zdGFuY2UpCit7Cisg
ICAgLy8gRklYTUU6IFdoYXQga2luZCBvZiB2YWxpZGF0aW9uIGRvIHdlIG5lZWQgdG8gaGFuZGxl
IGhlcmU/CisgICAgbV9wYXNzRW5jb2Rlci0+ZHJhdyh2ZXJ0ZXhDb3VudCwgaW5zdGFuY2VDb3Vu
dCwgZmlyc3RWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOworfQorCiBHUFVQcm9ncmFtbWFibGVQYXNz
RW5jb2RlciYgV2ViR1BVUmVuZGVyUGFzc0VuY29kZXI6OnBhc3NFbmNvZGVyKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9wYXNzRW5jb2Rlci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oCmluZGV4IDQwN2M2
NzVjMTczYTA2NTM2YWMyNzZlY2VlMDJkNDliNTJjN2JhN2EuLmM3NGRhN2EwMDJlYTJlY2ZhMjQx
M2EwYjExMDNmZjY2OWNiZmQxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVJlbmRlclBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaApAQCAtMjcsNyArMjcsNiBAQAog
CiAjaWYgRU5BQkxFKFdFQkdQVSkKIAotI2luY2x1ZGUgIkdQVVJlbmRlclBhc3NFbmNvZGVyLmgi
CiAjaW5jbHVkZSAiV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIuaCIKIAogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KQEAgLTM1LDEzICszNCwxNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlcjsKK2NsYXNzIEdQVVJlbmRlclBhc3NF
bmNvZGVyOwogCiBjbGFzcyBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlciBmaW5hbCA6IHB1YmxpYyBX
ZWJHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxX
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4m
Jik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcj4gY3JlYXRlKFJlZjxX
ZWJHUFVDb21tYW5kQnVmZmVyPiYmLCBSZWY8R1BVUmVuZGVyUGFzc0VuY29kZXI+JiYpOworCisg
ICAgdm9pZCBkcmF3KHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcs
IHVuc2lnbmVkIGxvbmcpOwogCiBwcml2YXRlOgotICAgIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVy
KFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4mJik7CisgICAgV2ViR1BVUmVuZGVyUGFzc0VuY29k
ZXIoUmVmPFdlYkdQVUNvbW1hbmRCdWZmZXI+JiYsIFJlZjxHUFVSZW5kZXJQYXNzRW5jb2Rlcj4m
Jik7CiAKICAgICBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciYgcGFzc0VuY29kZXIoKSBjb25z
dCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaWRsCmluZGV4IDUwMDBkM2QwOGQyODZmMjYyYTgyMTQ1
ZWY1MTkyY2U5NWM3OWIzNGIuLjg2OGY2OGZjNGFkMWZlODhhZTRkZGQ3YzdlNmRkNWY0ZTk2MmM1
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBhc3NFbmNvZGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVSZW5kZXJQYXNzRW5jb2Rlci5pZGwKQEAgLTI0LDE2ICsyNCwyMCBAQAogICovCiAvLyBodHRw
czovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndl
YmlkbAogCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOworCiBbCiAgICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAotICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCisgICAgRW5hYmxlZEF0UnVudGlt
ZT1XZWJHUFUsCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QKIF0gaW50ZXJmYWNlIFdlYkdQVVJl
bmRlclBhc3NFbmNvZGVyIDogV2ViR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgeworICAgIHZv
aWQgZHJhdyh1MzIgdmVydGV4Q291bnQsIHUzMiBpbnN0YW5jZUNvdW50LCB1MzIgZmlyc3RWZXJ0
ZXgsIHUzMiBmaXJzdEluc3RhbmNlKTsKKwogLyogTm90IFlldCBJbXBsZW1lbnRlZAogICAgIHZv
aWQgc2V0QmxlbmRDb2xvcihmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKTsKICAg
ICB2b2lkIHNldEluZGV4QnVmZmVyKFdlYkdQVUJ1ZmZlciBidWZmZXIsIHUzMiBvZmZzZXQpOwog
ICAgIHZvaWQgc2V0VmVydGV4QnVmZmVycyh1MzIgc3RhcnRTbG90LCBzZXF1ZW5jZTxXZWJHUFVC
dWZmZXI+IGJ1ZmZlcnMsIHNlcXVlbmNlPHUzMj4gb2Zmc2V0cyk7CiAKLSAgICB2b2lkIGRyYXco
dTMyIHZlcnRleENvdW50LCB1MzIgaW5zdGFuY2VDb3VudCwgdTMyIGZpcnN0VmVydGV4LCB1MzIg
Zmlyc3RJbnN0YW5jZSk7CiAgICAgdm9pZCBkcmF3SW5kZXhlZCh1MzIgaW5kZXhDb3VudCwgdTMy
IGluc3RhbmNlQ291bnQsIHUzMiBmaXJzdEluZGV4LCBpMzIgYmFzZVZlcnRleCwgdTMyIGZpcnN0
SW5zdGFuY2UpOwogCiAgICAgLy8gVE9ETyBhZGQgbWlzc2luZyBjb21tYW5kcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3Bw
CmluZGV4IGFiM2MwMjAwNDI4MmQ3YmVhMjMyZmFlZmRkNzU2ODU3ZDU0ZmRhNGYuLjNjY2YzYzBk
YTI2NTU2YWYzOGY5NzM4NjJhNDg4ZWMwYzMxZWE5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKQEAgLTMyLDE2
ICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxXZWJHUFVSZW5kZXJQ
aXBlbGluZT4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShSZWZQdHI8R1BVUmVuZGVyUGlw
ZWxpbmU+JiYgcGlwZWxpbmUpCitSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IFdlYkdQVVJl
bmRlclBpcGVsaW5lOjpjcmVhdGUoUmVmPEdQVVJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lKQog
ewotICAgIGlmICghcGlwZWxpbmUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVSZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkp
OwogfQogCi1XZWJHUFVSZW5kZXJQaXBlbGluZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmUoUmVmUHRy
PEdQVVJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lKQotICAgIDogbV9yZW5kZXJQaXBlbGluZShw
aXBlbGluZSkKK1dlYkdQVVJlbmRlclBpcGVsaW5lOjpXZWJHUFVSZW5kZXJQaXBlbGluZShSZWY8
R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCisgICAgOiBtX3JlbmRlclBpcGVsaW5lKFdU
Rk1vdmUocGlwZWxpbmUpKQogewogICAgIFVOVVNFRF9QQVJBTShtX3JlbmRlclBpcGVsaW5lKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
aXBlbGluZS5oCmluZGV4IDhiNTEwNjJjZGQyNjE5OGMwZmEwZTk3Zjg2OTJiZjc2YzZmYWExMWIu
LjJjOGI4NjY4ZmFmNmJlMDkxNDk0NTUxZmM3M2NhY2Q5MjBmOTdkMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaApAQCAt
MzYsMTIgKzM2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVUmVuZGVy
UGlwZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVSZW5kZXJQaXBlbGluZT4gewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShSZWZQ
dHI8R1BVUmVuZGVyUGlwZWxpbmU+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVy
UGlwZWxpbmU+IGNyZWF0ZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYpOworCisgICAgUmVmPEdQ
VVJlbmRlclBpcGVsaW5lPiByZW5kZXJQaXBlbGluZSgpIHsgcmV0dXJuIG1fcmVuZGVyUGlwZWxp
bmUuY29weVJlZigpOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViR1BVUmVuZGVyUGlwZWxpbmUoUmVm
UHRyPEdQVVJlbmRlclBpcGVsaW5lPiYmKTsKKyAgICBXZWJHUFVSZW5kZXJQaXBlbGluZShSZWY8
R1BVUmVuZGVyUGlwZWxpbmU+JiYpOwogCi0gICAgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBt
X3JlbmRlclBpcGVsaW5lOworICAgIFJlZjxHUFVSZW5kZXJQaXBlbGluZT4gbV9yZW5kZXJQaXBl
bGluZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5jcHAKaW5kZXggZDViNGIzYmRjZWI0YmU1ZmYw
NDE3MWQxOWRlNDIxZTAyNjEwM2MzYi4uZWUxZjI0MzRjNmZjMzA3NTg1ZDVhM2RhZmRmMWY4YjRl
NzEyYjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
VGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4
dHVyZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNpbmNs
dWRlICJHUFVUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViR1BVVGV4dHVyZVZpZXcuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
VGV4dHVyZS5oCmluZGV4IDExYzA4ZGU0ZDI1ZGMyY2JkZWQ5NDE4YjU1YWM3MjViOTEzNjdlNTUu
LjFkNDRhMzk2MDZhYTg2ZDFlNjU3NjljMDEyOTkwODNlZTY2YTdlYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmgKQEAgLTI3LDEzICsyNywxMiBA
QAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAotI2luY2x1ZGUgIkdQVVRleHR1cmUuaCIKLQogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEdQVVRleHR1cmU7CiBjbGFzcyBXZWJHUFVUZXh0dXJl
VmlldzsKIAogY2xhc3MgV2ViR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVRl
eHR1cmU+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgKaW5kZXggOTViYjRiNWQ4
OGJjZmVhYzg0OTc1ODYwMmQyNzI5NjlkYjY2NTdiYy4uOTQ4YzBjODg2YTkzYTk1ODU4MTU5MGM5
YTUyYjU0NGE0YmQ3MjZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgKQEAg
LTMzLDE0ICszMywyMyBAQCBPQkpDX1BST1RPQ09MKE1UTENvbW1hbmRFbmNvZGVyKTsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZTsKKwogdXNpbmcgUGxh
dGZvcm1Qcm9ncmFtbWFibGVQYXNzRW5jb2RlciA9IE1UTENvbW1hbmRFbmNvZGVyOwogCiBjbGFz
cyBHUFVQcm9ncmFtbWFibGVQYXNzRW5jb2RlciA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVByb2dy
YW1tYWJsZVBhc3NFbmNvZGVyPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+R1BVUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXIoKSA9IGRlZmF1bHQ7CiAKKyAgICB2b2lkIGVuZFBhc3MoKTsKKworICAg
IHZpcnR1YWwgdm9pZCBzZXRQaXBlbGluZShSZWY8R1BVUmVuZGVyUGlwZWxpbmU+JiYpID0gMDsK
KwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgUGxhdGZvcm1Qcm9ncmFtbWFibGVQYXNzRW5jb2Rl
ciogcGxhdGZvcm1QYXNzRW5jb2RlcigpIGNvbnN0ID0gMDsKKworcHJpdmF0ZToKKyAgICBib29s
IG1faXNFbmNvZGluZyB7IHRydWUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQ
YXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJl
bmRlclBhc3NFbmNvZGVyLmgKaW5kZXggZjQwNDQ3ODE1YTQ2YTdhYmNkMTFhYTAyY2NjMGYwMGIz
ZjNkMDQ4My4uM2I2NGQwNDRjYTVlOWMxYWJkYTBhZGUyNzRmYjIxYmNiOWYwMDQzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBhc3NF
bmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJl
bmRlclBhc3NFbmNvZGVyLmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19QUk9UT0NPTChNVExSZW5k
ZXJDb21tYW5kRW5jb2Rlcik7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdQVUNvbW1h
bmRCdWZmZXI7CitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZTsKIAogc3RydWN0IEdQVVJlbmRlclBh
c3NEZXNjcmlwdG9yOwogCkBAIC00OCwxMyArNDksMTggQEAgY2xhc3MgR1BVUmVuZGVyUGFzc0Vu
Y29kZXIgOiBwdWJsaWMgR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29kZXIgewogcHVibGljOgogICAg
IHN0YXRpYyBSZWZQdHI8R1BVUmVuZGVyUGFzc0VuY29kZXI+IGNyZWF0ZShjb25zdCBHUFVDb21t
YW5kQnVmZmVyJiwgR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3ImJik7CiAKKyAgICB2b2lkIHNldFBp
cGVsaW5lKFJlZjxHUFVSZW5kZXJQaXBlbGluZT4mJikgZmluYWw7CisKKyAgICB2b2lkIGRyYXco
dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9u
Zyk7CisKIHByaXZhdGU6CiAgICAgR1BVUmVuZGVyUGFzc0VuY29kZXIoUGxhdGZvcm1SZW5kZXJQ
YXNzRW5jb2RlclNtYXJ0UHRyJiYpOwotICAgIH5HUFVSZW5kZXJQYXNzRW5jb2RlcigpOworICAg
IH5HUFVSZW5kZXJQYXNzRW5jb2RlcigpIHsgZW5kUGFzcygpOyB9IC8vIEVuc3VyZSB0aGF0IGVu
Y29kaW5nIGhhcyBlbmRlZCBiZWZvcmUgcmVsZWFzZS4KIAotICAgIFBsYXRmb3JtUHJvZ3JhbW1h
YmxlUGFzc0VuY29kZXIgKnBsYXRmb3JtUGFzc0VuY29kZXIoKSBjb25zdCBmaW5hbDsKKyAgICBQ
bGF0Zm9ybVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyKiBwbGF0Zm9ybVBhc3NFbmNvZGVyKCkgY29u
c3QgZmluYWw7CiAKICAgICBQbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyU21hcnRQdHIgbV9wbGF0
Zm9ybVJlbmRlclBhc3NFbmNvZGVyOworICAgIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gbV9w
aXBlbGluZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVSZW5kZXJQaXBlbGluZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmgKaW5k
ZXggNDJmZDlhMzM1ZGFhOTE0YzUyZDk2NzM1OWQ2NzgyMzk5OTNiMjMxNC4uYjNiNTQ4NGJlODZh
MmEzYWVkNTMxOTZmZjk0OWEzOGNhY2FmMmEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVJlbmRlclBpcGVsaW5lLmgKQEAgLTI3LDYg
KzI3LDggQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNpbmNsdWRlICJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuaCIKKwogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTM3LDEwICsz
OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR1BVRGV2aWNlOwogCi1zdHJ1Y3Qg
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwotCiB1c2luZyBQbGF0Zm9ybVJlbmRlclBpcGVs
aW5lID0gTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZTsKIHVzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxp
bmVTbWFydFB0ciA9IFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZVN0YXRlPjsKK3VzaW5nIFBy
aW1pdGl2ZVRvcG9sb2d5ID0gR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpQcmltaXRpdmVU
b3BvbG9neTsKIAogY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxH
UFVSZW5kZXJQaXBlbGluZT4gewogcHVibGljOgpAQCAtNDgsMTAgKzQ5LDEzIEBAIHB1YmxpYzoK
IAogICAgIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmUqIHBsYXRmb3JtUmVuZGVyUGlwZWxpbmUoKSBj
b25zdCB7IHJldHVybiBtX3BsYXRmb3JtUmVuZGVyUGlwZWxpbmUuZ2V0KCk7IH0KIAorICAgIFBy
aW1pdGl2ZVRvcG9sb2d5IHByaW1pdGl2ZVRvcG9sb2d5KCkgY29uc3QgeyByZXR1cm4gbV9kZXNj
cmlwdG9yLnByaW1pdGl2ZVRvcG9sb2d5OyB9CisKIHByaXZhdGU6Ci0gICAgR1BVUmVuZGVyUGlw
ZWxpbmUoUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyJiYpOworICAgIEdQVVJlbmRlclBp
cGVsaW5lKFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciYmLCBHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3ImJik7CiAKICAgICBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHIgbV9w
bGF0Zm9ybVJlbmRlclBpcGVsaW5lOworICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBt
X2Rlc2NyaXB0b3I7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUHJvZ3JhbW1hYmxl
UGFzc0VuY29kZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tCmluZGV4IDBiYjQyOGZi
M2VjOTk1NWFmMTg3YjMzMWI2MDZlNGY3NjEyYzY4MWEuLjJlNjQzNjM4MTQ2YTFiODljYTdmOGM5
Njg2NjUzZDI3MjVkMzQxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVQcm9ncmFtbWFibGVQYXNzRW5jb2Rlck1ldGFsLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVQcm9ncmFtbWFi
bGVQYXNzRW5jb2Rlck1ldGFsLm1tCkBAIC0yOCw4ICsyOCwxOSBAQAogCiAjaWYgRU5BQkxFKFdF
QkdQVSkKIAorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
Cit2b2lkIEdQVVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyOjplbmRQYXNzKCkKK3sKKyAgICBpZiAo
IW1faXNFbmNvZGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgW3BsYXRmb3JtUGFzc0VuY29k
ZXIoKSBlbmRFbmNvZGluZ107CisgICAgbV9pc0VuY29kaW5nID0gZmFsc2U7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGFz
c0VuY29kZXJNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tCmluZGV4IGUwMWE4ODNlYjBhM2M3ZWI1
OTdjNGQxNjc1ODYxMWRjNjk0ZDM0YTAuLjM4YWRiODY2YjdhNmFhNmMwYThmZDJiOTdiMjAyNzM3
ZjE2YzU4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQYXNzRW5jb2Rlck1ldGFsLm1t
CkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkdQVUNvbW1hbmRCdWZmZXIuaCIKICNpbXBv
cnQgIkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmgiCisjaW1wb3J0ICJHUFVSZW5kZXJQaXBlbGlu
ZS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogCiAjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgpAQCAt
NjgsMTYgKzY5LDQxIEBAIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpHUFVSZW5kZXJQYXNzRW5jb2Rl
cihQbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyU21hcnRQdHImJiBlCiB7CiB9CiAKLUdQVVJlbmRl
clBhc3NFbmNvZGVyOjp+R1BVUmVuZGVyUGFzc0VuY29kZXIoKQorUGxhdGZvcm1Qcm9ncmFtbWFi
bGVQYXNzRW5jb2RlciAqR1BVUmVuZGVyUGFzc0VuY29kZXI6OnBsYXRmb3JtUGFzc0VuY29kZXIo
KSBjb25zdAogewotICAgIC8vIFRoZSBNVExDb21tYW5kRW5jb2RlciBtdXN0IGhhdmUgZmluaXNo
ZWQgZW5jb2RpbmcgYmVmb3JlIGl0IGNhbiBiZSByZWxlYXNlZC4KLSAgICAvLyBGSVhNRTogT25s
eSBjYWxsIHRoaXMgaWYgd2UgaGF2ZSBub3QgYWxyZWFkeSBlbmRlZCBlbmNvZGluZy4KLSAgICBb
bV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIGVuZEVuY29kaW5nXTsKKyAgICByZXR1cm4gbV9w
bGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyLmdldCgpOwogfQogCi1QbGF0Zm9ybVByb2dyYW1tYWJs
ZVBhc3NFbmNvZGVyICpHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6cGxhdGZvcm1QYXNzRW5jb2Rlcigp
IGNvbnN0Cit2b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpzZXRQaXBlbGluZShSZWY8R1BVUmVu
ZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCiB7Ci0gICAgcmV0dXJuIG1fcGxhdGZvcm1SZW5kZXJQ
YXNzRW5jb2Rlci5nZXQoKTsKKyAgICBbbV9wbGF0Zm9ybVJlbmRlclBhc3NFbmNvZGVyIHNldFJl
bmRlclBpcGVsaW5lU3RhdGU6cGlwZWxpbmUtPnBsYXRmb3JtUmVuZGVyUGlwZWxpbmUoKV07Cisg
ICAgbV9waXBlbGluZSA9IFdURk1vdmUocGlwZWxpbmUpOworfQorCitzdGF0aWMgTVRMUHJpbWl0
aXZlVHlwZSBwcmltaXRpdmVUeXBlRm9yR1BVUHJpbWl0aXZlVG9wb2xvZ3koUHJpbWl0aXZlVG9w
b2xvZ3kgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFByaW1pdGl2ZVRv
cG9sb2d5OjpQb2ludExpc3Q6CisgICAgICAgIHJldHVybiBNVExQcmltaXRpdmVUeXBlUG9pbnQ7
CisgICAgY2FzZSBQcmltaXRpdmVUb3BvbG9neTo6TGluZUxpc3Q6CisgICAgICAgIHJldHVybiBN
VExQcmltaXRpdmVUeXBlTGluZTsKKyAgICBjYXNlIFByaW1pdGl2ZVRvcG9sb2d5OjpMaW5lU3Ry
aXA6CisgICAgICAgIHJldHVybiBNVExQcmltaXRpdmVUeXBlTGluZVN0cmlwOworICAgIGNhc2Ug
UHJpbWl0aXZlVG9wb2xvZ3k6OlRyaWFuZ2xlTGlzdDoKKyAgICAgICAgcmV0dXJuIE1UTFByaW1p
dGl2ZVR5cGVUcmlhbmdsZTsKKyAgICBjYXNlIFByaW1pdGl2ZVRvcG9sb2d5OjpUcmlhbmdsZVN0
cmlwOgorICAgICAgICByZXR1cm4gTVRMUHJpbWl0aXZlVHlwZVRyaWFuZ2xlU3RyaXA7CisgICAg
fQorfQorCit2b2lkIEdQVVJlbmRlclBhc3NFbmNvZGVyOjpkcmF3KHVuc2lnbmVkIGxvbmcgdmVy
dGV4Q291bnQsIHVuc2lnbmVkIGxvbmcgaW5zdGFuY2VDb3VudCwgdW5zaWduZWQgbG9uZyBmaXJz
dFZlcnRleCwgdW5zaWduZWQgbG9uZyBmaXJzdEluc3RhbmNlKQoreworICAgIFttX3BsYXRmb3Jt
UmVuZGVyUGFzc0VuY29kZXIgCisgICAgICAgIGRyYXdQcmltaXRpdmVzOnByaW1pdGl2ZVR5cGVG
b3JHUFVQcmltaXRpdmVUb3BvbG9neShtX3BpcGVsaW5lLT5wcmltaXRpdmVUb3BvbG9neSgpKQor
ICAgICAgICB2ZXJ0ZXhTdGFydDpmaXJzdFZlcnRleAorICAgICAgICB2ZXJ0ZXhDb3VudDp2ZXJ0
ZXhDb3VudAorICAgICAgICBpbnN0YW5jZUNvdW50Omluc3RhbmNlQ291bnQKKyAgICAgICAgYmFz
ZUluc3RhbmNlOmZpcnN0SW5zdGFuY2VdOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
UmVuZGVyUGlwZWxpbmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCmluZGV4IGM5NDZkNTUwOWQyMjI4
ZDQ1ZjA2NGIwZjZkMzViY2NhODYwZDdlYWYuLjllY2E0YzFiZjQ5MjlmZmUyMjEwNzg1ZTgzODMx
ZGIxNjIyNTJhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCkBA
IC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCi0jaW1wb3J0ICJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKIAogI2ltcG9ydCA8
TWV0YWwvTWV0YWwuaD4KQEAgLTM2LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgYm9vbCBzZXRGdW5jdGlvbnNGb3JQaXBlbGluZURlc2NyaXB0b3IoY29uc3QgY2hh
ciogY29uc3QgZnVuY3Rpb25OYW1lLCBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgKm10bERl
c2NyaXB0b3IsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCitzdGF0
aWMgYm9vbCBzZXRGdW5jdGlvbnNGb3JQaXBlbGluZURlc2NyaXB0b3IoY29uc3QgY2hhciogY29u
c3QgZnVuY3Rpb25OYW1lLCBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgKm10bERlc2NyaXB0
b3IsIGNvbnN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICNp
ZiBMT0dfRElTQUJMRUQKICAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKQEAgLTEwNSw3
ICsxMDQsNyBAQCBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IEdQVVJlbmRlclBpcGVsaW5lOjpj
cmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBpZiAoIXNldEZ1bmN0aW9uc0ZvclBpcGVsaW5lRGVzY3JpcHRvcihm
dW5jdGlvbk5hbWUsIG10bERlc2NyaXB0b3IuZ2V0KCksIFdURk1vdmUoZGVzY3JpcHRvcikpKQor
ICAgIGlmICghc2V0RnVuY3Rpb25zRm9yUGlwZWxpbmVEZXNjcmlwdG9yKGZ1bmN0aW9uTmFtZSwg
bXRsRGVzY3JpcHRvci5nZXQoKSwgZGVzY3JpcHRvcikpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgLy8gRklYTUU6IEdldCB0aGUgcGl4ZWxGb3JtYXQgYXMgY29uZmlndXJlZCBmb3Ig
dGhlIGNvbnRleHQvQ0FNZXRhbExheWVyLgpAQCAtMTI0LDExICsxMjMsMTIgQEAgUmVmUHRyPEdQ
VVJlbmRlclBpcGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKGNvbnN0IEdQVURldmlj
ZSYgZGV2aWNlLCBHUFUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBHUFVSZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGlu
ZSksIFdURk1vdmUoZGVzY3JpcHRvcikpKTsKIH0KIAotR1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJl
bmRlclBpcGVsaW5lKFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciYmIHBpcGVsaW5lKQor
R1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRlclBpcGVsaW5lKFBsYXRmb3JtUmVuZGVyUGlwZWxp
bmVTbWFydFB0ciYmIHBpcGVsaW5lLCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBkZXNj
cmlwdG9yKQogICAgIDogbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUp
KQorICAgICwgbV9kZXNjcmlwdG9yKFdURk1vdmUoZGVzY3JpcHRvcikpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA5MTRlZGYzMDJmMjY5YjZlZDU1MzBkZjIyOTQ5N2I2YTMxZjMwNjEzLi42NjA3M2I2OWM5Yzdj
YzkyM2Y4OTAyMjkwZjYxNjA1ZjIyYTk2MWUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgt
MTEtMjggIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2Vi
R1BVXSBXZWJHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0UGlwZWxpbmUsIGRyYXcsIGFuZCBlbmRQ
YXNzIHByb3RvdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MjEzNAorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAg
ICAgICBVcGRhdGluZyB0aGUgYmFzaWMgcmVuZGVyaW5nIHRlc3Qgd2l0aCBtb3JlIGNvbW1hbmRz
LCBhbmQgYSBwcm90b3R5cGUgV1BULWJhc2VkIHRlc3QgZm9yIFdlYkdQVVJlbmRlckNvbW1hbmRF
bmNvZGVyJ3MKKyAgICAgICAgbmV3IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiB3ZWJncHUv
anMvYmFzaWMtd2ViZ3B1LWZ1bmN0aW9ucy5qczoKKyAgICAgICAgKHJlbmRlcik6CisgICAgICAg
ICogd2ViZ3B1L3JlbmRlci1jb21tYW5kLWVuY29kaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogd2ViZ3B1L3JlbmRlci1jb21tYW5kLWVuY29kaW5nLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYmdwdS9yZW5kZXItcGFzc2VzLmh0bWw6CisKIDIwMTgtMTEtMjYgIEp1c3RpbiBG
YW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBCZWdpbiBpbXBs
ZW1lbnRhdGlvbiBvZiBXZWJHUFVSZW5kZXJQYXNzRW5jb2RlciBhbmQgYmFyZWJvbmVzIFdlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvanMv
YmFzaWMtd2ViZ3B1LWZ1bmN0aW9ucy5qcyBiL0xheW91dFRlc3RzL3dlYmdwdS9qcy9iYXNpYy13
ZWJncHUtZnVuY3Rpb25zLmpzCmluZGV4IDQxZjViY2VlYjM4NTVjZjlmODBhOWZhZWFiMmIwZmJh
ZThlNTI2YzUuLjUwYWEwOGVmYzJkMzhiMjFiZTk1YTJjOTU0OTM1Njg0YTU1ZjRhYTggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9qcy9iYXNpYy13ZWJncHUtZnVuY3Rpb25zLmpzCisr
KyBiL0xheW91dFRlc3RzL3dlYmdwdS9qcy9iYXNpYy13ZWJncHUtZnVuY3Rpb25zLmpzCkBAIC0x
NDksNSArMTQ5LDE1IEBAIGZ1bmN0aW9uIHJlbmRlcigpIHsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAorICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsK
KworICAgIC8vIE5vdGUgdGhhdCB3ZSBkaWRuJ3QgYXR0YWNoIGFueSBidWZmZXJzIC0gdGhlIHNo
YWRlciBpcyBnZW5lcmF0aW5nIHRoZSB2ZXJ0aWNlcyBmb3IgdXMuCisgICAgcmVuZGVyUGFzc0Vu
Y29kZXIuZHJhdygzLCAxLCAwLCAwKTsKKyAgICBsZXQgY29tbWFuZEJ1ZmZlckVuZCA9IHJlbmRl
clBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKKyAgICBpZiAoIWNvbW1hbmRCdWZmZXJFbmQpIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiVW5hYmxlIHRvIGNyZWF0ZSBXZWJHUFVDb21tYW5kQnVmZmVyIGZy
b20gV2VHUFVSZW5kZXJQYXNzRW5jb2Rlcjo6ZW5kUGFzcyEiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIC8vIEZJWE1FOiBSZXN0IG9mIHJlbmRlcmluZyBjb21tYW5kcyB0byBmb2xs
b3cuCiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3JlbmRlci1jb21tYW5kLWVuY29kaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDFkMzEzZjM1ZDZhZGFlYTU0MzU5ZGExY2Q0NmUyNzZkNDE2YmM4OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItY29tbWFuZC1lbmNvZGluZy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACitQQVNTIFtvYmplY3QgV2ViR1BVXSBpcyBkZWZpbmVkLgor
CitQQVNTIFdlYkdQVVJlbmRlclBhc3NFbmNvZGVyIGNyZWF0ZWQgYW5kIHN1Y2Nlc3NmdWxseSBl
bmRlZCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1jb21tYW5kLWVu
Y29kaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLWNvbW1hbmQtZW5jb2Rpbmcu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZjgyNGRkZTk0ZTAyYzEwMjYxY2UxN2QyMWUzZjc2YjUzNTkxOTFl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1jb21tYW5kLWVu
Y29kaW5nLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6V2ViR1BVRW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0
YSBjaGFyc2V0PXV0Zi04PgorPHRpdGxlPkdldCB0aGUgV2ViR1BVRGV2aWNlIGFuZCBhc2sgZm9y
IHRoZSBXZWJHUFVRdWV1ZTwvdGl0bGU+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJqcy9iYXNpYy13ZWJncHUt
ZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7CisKK2xldCBj
b21tYW5kQnVmZmVyLCByZW5kZXJQYXNzRW5jb2RlcjsKKworZnVuY3Rpb24gYmVnaW5QYXNzKCkg
eworICAgIC8vIEZJWE1FOiBGbGVzaCBvdXQgdGhlIHJlc3Qgb2YgV2ViR1BVUmVuZGVyUGFzc0Rl
c2NyaXB0b3IuIAorICAgIC8vIERlZmF1bHQgYSBsb2FkT3AsIHN0b3JlT3AsIGFuZCBjbGVhckNv
bG9yIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3Igbm93LgorICAgIGNvbnN0IHJlbmRlclBhc3NE
ZXNjcmlwdG9yID0geworICAgICAgICBhdHRhY2htZW50IDogY29udGV4dC5nZXROZXh0VGV4dHVy
ZSgpLmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpCisgICAgfQorCisgICAgcmVuZGVyUGFzc0Vu
Y29kZXIgPSBjb21tYW5kQnVmZmVyLmJlZ2luUmVuZGVyUGFzcyhyZW5kZXJQYXNzRGVzY3JpcHRv
cik7CisgICAgYXNzZXJ0X3RydWUocmVuZGVyUGFzc0VuY29kZXIgaW5zdGFuY2VvZiBXZWJHUFVS
ZW5kZXJQYXNzRW5jb2RlciwgImJlZ2luUmVuZGVyUGFzcyByZXR1cm5lZCBhIFdlYkdQVVJlbmRl
clBhc3NFbmNvZGVyIik7Cit9CisKK2Z1bmN0aW9uIHNldFVwQ29tbWFuZEJ1ZmZlcigpIHsKKyAg
ICBjb21tYW5kQnVmZmVyID0gZGVmYXVsdERldmljZS5jcmVhdGVDb21tYW5kQnVmZmVyKCk7Cisg
ICAgYXNzZXJ0X3RydWUoY29tbWFuZEJ1ZmZlciBpbnN0YW5jZW9mIFdlYkdQVUNvbW1hbmRCdWZm
ZXIsICJjcmVhdGVDb21tYW5kQnVmZmVyIHJldHVybmVkIGEgV2ViR1BVQ29tbWFuZEJ1ZmZlciIp
OworfQorCitmdW5jdGlvbiBlbmRSZW5kZXJQYXNzKCkgeworICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5lKTsKKworICAgIGNvbnN0IGNvbW1hbmRCdWZmZXJF
bmQgPSByZW5kZXJQYXNzRW5jb2Rlci5lbmRQYXNzKCk7CisgICAgYXNzZXJ0X3RydWUoY29tbWFu
ZEJ1ZmZlckVuZCBpbnN0YW5jZW9mIFdlYkdQVUNvbW1hbmRCdWZmZXIsICJlbmRQYXNzKCkgcmV0
dXJuZWQgYSBXZWJHUFVDb21tYW5kQnVmZmVyIik7CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIGNv
bW1hbmRCdWZmZXJFbmQgPT09IGNvbW1hbmRCdWZmZXI/Cit9CisKK3Byb21pc2VfdGVzdChhc3lu
YyAoKSA9PiB7CisgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2Fu
dmFzIik7CisgICAgYXdhaXQgc2V0VXBDb250ZXh0cyhjYW52YXMpOworICAgIHNldFVwUGlwZWxp
bmUoKTsKKyAgICBzZXRVcENvbW1hbmRCdWZmZXIoKTsKKyAgICBiZWdpblBhc3MoKTsKKyAgICBl
bmRSZW5kZXJQYXNzKCk7Cit9LCAiV2ViR1BVUmVuZGVyUGFzc0VuY29kZXIgY3JlYXRlZCBhbmQg
c3VjY2Vzc2Z1bGx5IGVuZGVkIik7CisKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1wYXNzZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdw
dS9yZW5kZXItcGFzc2VzLmh0bWwKaW5kZXggZGM5NDA1MGNiODFmODgwMDM4ZjdjZDBhMGM4Nzg4
MThmYmIzY2YxOS4uMjg2ZDQ3YTFiYjA0YjhlM2M3M2E2NWFjYzNkY2M1ZDljOWMxNzJhZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1wYXNzZXMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJncHUvcmVuZGVyLXBhc3Nlcy5odG1sCkBAIC02LDE2ICs2LDE2IEBACiBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCiAgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
Ci1sZXQgY29tbWFuZEJ1ZmZlciwgdGV4dHVyZSwgdGV4dHVyZVZpZXcsIHJlbmRlclBhc3NEZXNj
cmlwdG9yLCByZW5kZXJQYXNzRW5jb2RlcjsKK2xldCBjb21tYW5kQnVmZmVyLCByZW5kZXJQYXNz
RW5jb2RlcjsKIAogZnVuY3Rpb24gc2V0VXBCYXNpY1JlbmRlclBhc3NFbmNvZGVyKCkgewogICAg
IGNvbW1hbmRCdWZmZXIgPSBkZWZhdWx0RGV2aWNlLmNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKLSAg
ICB0ZXh0dXJlID0gY29udGV4dC5nZXROZXh0VGV4dHVyZSgpOwotICAgIHRleHR1cmVWaWV3ID0g
dGV4dHVyZS5jcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKTsKKyAgICBjb25zdCB0ZXh0dXJlID0g
Y29udGV4dC5nZXROZXh0VGV4dHVyZSgpOworICAgIGNvbnN0IHRleHR1cmVWaWV3ID0gdGV4dHVy
ZS5jcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKTsKIAogICAgIC8vIEZJWE1FOiBGbGVzaCBvdXQg
dGhlIHJlc3Qgb2YgV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuIAogICAgIC8vIERlZmF1bHQg
YSBsb2FkT3AsIHN0b3JlT3AsIGFuZCBjbGVhckNvbG9yIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBm
b3Igbm93LgotICAgIHJlbmRlclBhc3NEZXNjcmlwdG9yID0geworICAgIGNvbnN0IHJlbmRlclBh
c3NEZXNjcmlwdG9yID0gewogICAgICAgICBhdHRhY2htZW50IDogdGV4dHVyZVZpZXcKICAgICB9
CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>