<?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>191084</bug_id>
          
          <creation_ts>2018-10-30 15:03:28 -0700</creation_ts>
          <short_desc>[WebGPU] Experimental prototype for MSL shaders</short_desc>
          <delta_ts>2018-11-02 00:09:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1473426</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-10-30 15:03:28 -0700</bug_when>
    <thetext>[WebGPU] Experimental prototype for MSL shaders and render pipelines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473435</commentid>
    <comment_count>1</comment_count>
      <attachid>353416</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-10-30 15:19:12 -0700</bug_when>
    <thetext>Created attachment 353416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473441</commentid>
    <comment_count>2</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-10-30 15:33:04 -0700</bug_when>
    <thetext>Oh yeah. Everything is broken on non-cocoa platforms (and probably ios-sim). Fixing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473443</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-30 15:33:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/45683389&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473796</commentid>
    <comment_count>4</comment_count>
      <attachid>353416</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-10-31 11:33:20 -0700</bug_when>
    <thetext>Comment on attachment 353416
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Begin implementation for WebGPUDevice, WebGPUSwapChain, WebGPUShaderModule, WebGPURenderPipeline,
&gt; +        and any associated descriptor objects. This prototype compiles Metal Shading Language, which will not 
&gt; +        be available for the final implementation.

These should be split up into separate patches. One for creating the shader modules, one for the swap chain, and then one for the render pipeline.

&gt; Source/WebCore/Modules/webgpu/GPUDevice.h:30
&gt; +#include &lt;wtf/Ref.h&gt;

Don&apos;t need this.

&gt; Source/WebCore/Modules/webgpu/GPUDevice.h:34
&gt; +OBJC_PROTOCOL(MTLDevice);

Guard with USE(METAL)

&gt; Source/WebCore/Modules/webgpu/GPUDevice.h:41
&gt; +struct WebGPURenderPipelineDescriptor;

Needs to be GPURenderPipelineDescriptor. See below.

&gt; Source/WebCore/Modules/webgpu/GPUDevice.h:43
&gt; +class GPUDevice {

This should be a RefCounted object.

public RefCounted&lt;GPUDevice&gt;

&gt; Source/WebCore/Modules/webgpu/GPUDevice.h:45
&gt; +    GPUDevice();

Make this private. Use a static RefPtr&lt;GPUDevice&gt; create() method to initialise.

&gt; Source/WebCore/Modules/webgpu/GPUDevice.h:48
&gt; +    GPURenderPipeline createRenderPipeline(WebGPURenderPipelineDescriptor&amp;&amp;) const;

This should not take a WebGPU object as a parameter. Everything that is GPUFoo* needs to be ignorant of WebGPU*.

&gt; Source/WebCore/Modules/webgpu/GPUDevice.h:51
&gt; +    MTLDevice *mtlDevice() const { return m_mtlDevice.get(); }

We often call these accessors platformDevice(), and have a typedef for PlatformDevice.

I&apos;m not sure if we should do this right away, since Metal is the only backend for now. It might be a good idea though.

&gt; Source/WebCore/Modules/webgpu/GPUShaderModule.h:33
&gt; +OBJC_PROTOCOL(MTLLibrary);

USE(METAL)

&gt; Source/WebCore/Modules/webgpu/GPUShaderModule.h:39
&gt; +class GPUShaderModule {

RefCounted.

&gt; Source/WebCore/Modules/webgpu/WebGPUDevice.cpp:51
&gt; +    return WebGPUShaderModule::create(m_device.createShaderModule(descriptor.code));

I feel like the shader module should take the entire descriptor.

&gt; Source/WebCore/Modules/webgpu/WebGPUDevice.h:62
&gt; +    GPUDevice m_device;

This becomes a RefPtr&lt;GPUDevice&gt;

&gt; Source/WebCore/Modules/webgpu/WebGPUDevice.idl:55
&gt; +*/
&gt;      WebGPUShaderModule createShaderModule(WebGPUShaderModuleDescriptor descriptor);
&gt; +/*
&gt;      WebGPUAttachmentState createAttachmentState(WebGPUAttachmentStateDescriptor descriptor);
&gt;      WebGPUComputePipeline createComputePipeline(WebGPUComputePipelineDescriptor descriptor);
&gt; +*/
&gt;      WebGPURenderPipeline createRenderPipeline(WebGPURenderPipelineDescriptor descriptor);
&gt; -
&gt; +/*

I suggest keeping the unused objects in a group, rather than commenting bits and pieces out. We can clean up the finished IDL later to look like the official one.

&gt; Source/WebCore/Modules/webgpu/WebGPUPipelineDescriptorBase.h:37
&gt; +struct WebGPUPipelineDescriptorBase {
&gt; +    Vector&lt;WebGPUPipelineStageDescriptor&gt; stages;
&gt; +};

This is the base class. I wonder if it needs to be RefCounted. We do hold onto them.

&gt; Source/WebCore/Modules/webgpu/WebGPUPipelineDescriptorBase.idl:28
&gt; +    // FIXME: Figure out what PipelineLayout is for.

Remove this comment.

&gt; Source/WebCore/Modules/webgpu/WebGPURenderPipeline.h:44
&gt; +    GPURenderPipeline m_renderPipeline;

Becomes Ref&lt;&gt;

&gt; Source/WebCore/Modules/webgpu/WebGPURenderPipelineDescriptor.idl:42
&gt; +    /*
&gt; +    sequence&lt;WebGPUBlendState&gt; blendStates;
&gt; +    WebGPUDepthStencilState depthStencilState;
&gt; +    WebGPUInputState inputState;
&gt; +    WebGPUAttachmentsState attachmentsState; */
&gt; +    // TODO other properties

Make this more clear that they are not implemented. Put // in front rather than a block comment.

&gt; Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:36
&gt; +    enum : unsigned long {

Even though this is a u32 in the IDL, it doesn&apos;t need to be in the implementation.

&gt; Source/WebCore/Modules/webgpu/WebGPUSwapChain.h:40
&gt; +        // FIXME: More texture properties.

Remove this, or link to a bug.

&gt; Source/WebCore/Modules/webgpu/WebGPUSwapChain.h:69
&gt; +    GPUSwapChain m_swapChain;

Needs to be a Ref or RefPtr.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPUDeviceMetal.mm:41
&gt; +    : m_mtlDevice { adoptNS(MTLCreateSystemDefaultDevice()) }

I would prefer this go in the function body. Eventually it won&apos;t be a call to creating the default device.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPURenderPipeline.h:40
&gt; +class GPURenderPipeline {

Should be RefCounted.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPURenderPipeline.h:42
&gt; +    GPURenderPipeline(const GPUDevice&amp;, WebGPURenderPipelineDescriptor&amp;&amp;);

See above about disconnecting from WebGPU objects.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPURenderPipelineMetal.mm:41
&gt; +        return; // FIXME: Throw relevant error before returning.

I think we should do this now. Alas, this probably means a bit of code to throw exceptions from the WebGPURenderPipeline.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPURenderPipelineMetal.mm:48
&gt; +        // FIXME: How many encapsulation laws does this break??

All of them :)

&gt; Source/WebCore/Modules/webgpu/cocoa/GPURenderPipelineMetal.mm:49
&gt; +        auto mtlLibrary = retainPtr(stageDescriptor.module-&gt;m_module.mtlLibrary());

If we access the mtlLibrary this way, the accessor might as well give us a RetainPtr&lt;&gt; directly.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPURenderPipelineMetal.mm:52
&gt; +        if (!mtlLibrary)
&gt; +            return; // FIXME: Throw relevant error before returning.

Yeah. This means the shader didn&apos;t compile.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPURenderPipelineMetal.mm:56
&gt; +            [mtlDescriptor setVertexFunction:[mtlLibrary newFunctionWithName:stageDescriptor.entryPoint]];

We need to throw an error if we were unable to find the function, otherwise we simply crash when we go to draw.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPURenderPipelineMetal.mm:67
&gt; +    // FIXME: Get the pixelFormat as configured for the context/CAMetalLayer.

File a bug and link to it here.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPURenderPipelineMetal.mm:70
&gt; +    // FIXME: Assert that both vertex and fragment functions have been assigned?

Yes.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPUShaderModuleMetal.mm:45
&gt; +    NSError *error = [NSError errorWithDomain:@&quot;com.apple.WebKit.GPU&quot; code:1 userInfo:nil];
&gt; +    m_mtlLibrary = adoptNS([device.mtlDevice() newLibraryWithSource:code options:nil error:&amp;error]);
&gt; +    if (!m_mtlLibrary)
&gt; +        LOG(WebGPU, &quot;Shader compilation error: %s&quot;, [[error localizedDescription] UTF8String]);

Again, we need to handle this properly, otherwise we&apos;ll crash horrifically :)

Maybe the IDL doesn&apos;t yet expose a way to throw an exception, but we should add one.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPUSwapChain.h:32
&gt; +OBJC_CLASS CAMetalLayer;

USE(METAL)

&gt; Source/WebCore/Modules/webgpu/cocoa/GPUSwapChain.h:42
&gt; +    void setDevice(const GPUDevice&amp;);

This should take a Ref&lt;&gt;. I&apos;m not sure how the ownership will happen - I guess the WebGPUSwapChain can go away and break the ref.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPUSwapChainMetal.mm:38
&gt; +    : m_layer(adoptNS([[CAMetalLayer alloc] init]))

Move into function body.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPUSwapChainMetal.mm:43
&gt; +    // FIXME: For now, default to these settings.

File a bug and link to it.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPUSwapChainMetal.mm:51
&gt; +    if (!device.mtlDevice())
&gt; +        return; // FIXME: Throw appropriate error

We should do this now.

&gt; LayoutTests/ChangeLog:10
&gt; +        * webgpu/webgpu-basics.html: Added.

You should make new test files to exercise creating the render pipeline and shader modules.

&gt; LayoutTests/webgpu/webgpu-basics.html:56
&gt; +    window.webgpu.requestAdapter({ powerPreference: &quot;default&quot; }).then(adapter_ =&gt; {

You can remove this { powerPreference } parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473923</commentid>
    <comment_count>5</comment_count>
      <attachid>353547</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-10-31 16:21:17 -0700</bug_when>
    <thetext>Created attachment 353547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473928</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-31 16:26:26 -0700</bug_when>
    <thetext>Attachment 353547 did not pass style-queue:


ERROR: Source/WebCore/Modules/webgpu/GPUShaderModule.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/webgpu/GPUDevice.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/webgpu/WebGPUDevice.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473946</commentid>
    <comment_count>7</comment_count>
      <attachid>353547</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-10-31 16:46:44 -0700</bug_when>
    <thetext>Comment on attachment 353547
Patch

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

&gt; Source/WTF/ChangeLog:3
&gt; +        [WebGPU] Experimental prototype for MSL shaders and render pipelines

This title is now wrong.

&gt; Source/WebCore/CMakeLists.txt:-456
&gt; -    Modules/webgpu/WebGPUSwapChainDescriptor.idl

Did this file never exist? I don&apos;t understand why it is being removed in this patch.

&gt; Source/WebCore/Modules/webgpu/GPUDevice.h:44
&gt; +using PlatformDevice =
&gt; +#if USE(METAL)
&gt; +    MTLDevice;
&gt; +#else
&gt; +    void;
&gt; +#endif

Our convention is that the entire statement goes in the #if section. So

#if USE(METAL)
using PlatformDevice = MTLDevice;
...

&gt; Source/WebCore/Modules/webgpu/GPUDevice.h:54
&gt; +    Ref&lt;GPUShaderModule&gt; createShaderModule(GPUShaderModuleDescriptor&amp;&amp;) const;

Can this ever fail? I think it can if the descriptor is bogus, so it might have to be a RefPtr.

&gt; Source/WebCore/Modules/webgpu/GPUDevice.h:61
&gt; +    RetainPtr&lt;PlatformDevice&gt; m_platformDevice;

I guess the issue here is that it is only a RetainPtr in USE(METAL) (where it is an ObjC object). Maybe guard this with #if USE(METAL) as well for now.

&gt; Source/WebCore/Modules/webgpu/GPUShaderModule.h:49
&gt; +using PlatformShaderModule =
&gt; +#if USE(METAL)
&gt; +    MTLLibrary;
&gt; +#else
&gt; +    void;
&gt; +#endif

Same as above. Although you can probably put the OBJC_PROTOCOL bit in here too.

&gt; Source/WebCore/Modules/webgpu/GPUShaderModule.h:60
&gt; +    RetainPtr&lt;PlatformShaderModule&gt; m_platformShaderModule;

And ditto with the RetainPtr.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPUDeviceMetal.mm:57
&gt; +Ref&lt;GPUDevice&gt; GPUDevice::create()
&gt; +{
&gt; +    return adoptRef(*new GPUDevice());
&gt; +}

We put this first in the .cpp file.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPUShaderModuleMetal.mm:57
&gt; +Ref&lt;GPUShaderModule&gt; GPUShaderModule::create(const GPUDevice&amp; device, GPUShaderModuleDescriptor&amp;&amp; descriptor)
&gt; +{
&gt; +    return adoptRef(*new GPUShaderModule(device, WTFMove(descriptor)));
&gt; +}

Same here. Goes first.

Also, I think we need to do something if there is no device - return nullptr. At the moment you create what looks like a valid GPUShaderModule.

&gt; LayoutTests/ChangeLog:8
&gt; +        * webgpu/webgpu-basics.html: Added.

This should be called shadermodule-basics.html or something like that.

&gt; LayoutTests/webgpu/webgpu-basics.html:72
&gt; +    window.webgpu.requestAdapter().then(adapter_ =&gt; {
&gt; +        if (!adapter_) {
&gt; +            testFailed(&quot;Could not create default WebGPUAdapter!&quot;)
&gt; +            return;
&gt; +        }
&gt; +        adapter = adapter_;
&gt; +
&gt; +        defaultDevice = adapter.createDevice();
&gt; +        if (!defaultDevice) {
&gt; +            testFailed(&quot;Could not create WebGPUDevice!&quot;);
&gt; +            return;
&gt; +        }
&gt; +
&gt; +        setUpShaders();
&gt; +    }, error =&gt; {
&gt; +        console.log(error);
&gt; +    });

This code is fine, but I tend to find async/await a bit easier to read.

The function would become async function setUpContexts()

And then the body would be:

adapter = await window.webgpu.requestAdapter();
if (!adapter)...

If you still think there might be an error, you put it in try catch.

&gt; LayoutTests/webgpu/webgpu-basics.html:82
&gt; +        return;

This return isn&apos;t needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474310</commentid>
    <comment_count>8</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-01 16:07:43 -0700</bug_when>
    <thetext>(In reply to Dean Jackson from comment #7)
&gt; Comment on attachment 353547 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=353547&amp;action=review

WebGPUSwapChainDescriptor&apos;s contents were merged into the WebGPUSwapChain class since it isn&apos;t referenced in any other IDL.

webgpu-basics will contain more functionality all up until drawing a triangle as features are implemented, but I&apos;ll whip up some more tests to stress each new feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474348</commentid>
    <comment_count>9</comment_count>
      <attachid>353669</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-01 17:31:39 -0700</bug_when>
    <thetext>Created attachment 353669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474351</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-01 17:36:12 -0700</bug_when>
    <thetext>Attachment 353669 did not pass style-queue:


ERROR: Source/WebCore/Modules/webgpu/WebGPUDevice.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474353</commentid>
    <comment_count>11</comment_count>
      <attachid>353669</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-11-01 17:41:46 -0700</bug_when>
    <thetext>Comment on attachment 353669
Patch

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

We should probably add a test with bad shader code to ensure our promise is rejected.

I think the sooner you make small tests for each bit of the library, the better.

&gt; Source/WebCore/ChangeLog:3
&gt; +        [WebGPU] Experimental prototype for MSL shaders and render pipelines

Needs to be accurate.

&gt; Source/WebCore/Modules/webgpu/GPUDevice.h:34
&gt; +#if ENABLE(WEBGPU)

Typo: METAL

&gt; Source/WebCore/Modules/webgpu/WebGPUDevice.h:46
&gt; +    static RefPtr&lt;WebGPUDevice&gt; create(ScriptExecutionContext&amp;, Ref&lt;WebGPUAdapter&gt;&amp;&amp;);

Why do we need the ScriptExecutionContext?

&gt; Source/WebCore/Modules/webgpu/cocoa/GPUDeviceMetal.mm:68
&gt; +GPUDevice::GPUDevice(PlatformDeviceSmartPtr&amp;&amp; device)
&gt; +    : m_platformDevice(WTFMove(device))
&gt; +{
&gt; +    UNUSED_PARAM(m_platformDevice);
&gt; +}
&gt; +
&gt; +RefPtr&lt;GPUShaderModule&gt; GPUDevice::createShaderModule(GPUShaderModuleDescriptor&amp;&amp; descriptor) const
&gt; +{
&gt; +    return GPUShaderModule::create(*this, WTFMove(descriptor));
&gt; +}

Technically these bits could go in a GPUDevice.cpp file, but we can do that later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474369</commentid>
    <comment_count>12</comment_count>
      <attachid>353674</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-01 18:41:03 -0700</bug_when>
    <thetext>Created attachment 353674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474370</commentid>
    <comment_count>13</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-01 18:44:28 -0700</bug_when>
    <thetext>Attachment 353674 did not pass style-queue:


ERROR: Source/WebCore/Modules/webgpu/WebGPUDevice.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474410</commentid>
    <comment_count>14</comment_count>
      <attachid>353674</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-02 00:09:17 -0700</bug_when>
    <thetext>Comment on attachment 353674
Patch

Clearing flags on attachment: 353674

Committed r237723: &lt;https://trac.webkit.org/changeset/237723&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474411</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-02 00:09:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353416</attachid>
            <date>2018-10-30 15:19:12 -0700</date>
            <delta_ts>2018-10-31 16:21:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191084-20181030151911.patch</filename>
            <type>text/plain</type>
            <size>93705</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ0ZmE2ODE5MmVhOTYx
ZGFmYTE4ZDgzNWI0MWVkMTI2YThlOTU4NS4uZDlhNmM3NDQwZmI0ZWU4NGIxNWY5NzQ5ZjdjMzEx
ZTNhY2M4NTI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE4LTEwLTMwICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRXhwZXJp
bWVudGFsIHByb3RvdHlwZSBmb3IgTVNMIHNoYWRlcnMgYW5kIHJlbmRlciBwaXBlbGluZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTA4NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlZ2luIGltcGxl
bWVudGF0aW9uIGZvciBXZWJHUFVEZXZpY2UsIFdlYkdQVVN3YXBDaGFpbiwgV2ViR1BVU2hhZGVy
TW9kdWxlLCBXZWJHUFVSZW5kZXJQaXBlbGluZSwKKyAgICAgICAgYW5kIGFueSBhc3NvY2lhdGVk
IGRlc2NyaXB0b3Igb2JqZWN0cy4gVGhpcyBwcm90b3R5cGUgY29tcGlsZXMgTWV0YWwgU2hhZGlu
ZyBMYW5ndWFnZSwgd2hpY2ggd2lsbCBub3QgCisgICAgICAgIGJlIGF2YWlsYWJsZSBmb3IgdGhl
IGZpbmFsIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFRlc3Q6IHdlYmdwdS93ZWJncHUtYmFz
aWNzLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmg6IAorICAg
ICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjptdGxEZXZpY2UgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L0dQVVNoYWRlck1vZHVsZS5oOiAKKyAgICAgICAgKFdlYkNvcmU6OkdQVVNo
YWRlck1vZHVsZTo6bXRsTGlicmFyeSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVRGV2aWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6V2ViR1BV
RGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6Y3JlYXRlU2hhZGVyTW9k
dWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6Y3JlYXRlUmVuZGVy
UGlwZWxpbmUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5o
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGw6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oOiAKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbDogCisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaDogCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRs
OiAKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHA6IAor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHUFVSZW5kZXJQaXBlbGluZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmg6IAorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbDogCisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg6IAorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGw6IAor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHA6IAorICAgICAg
ICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpXZWJHUFVTaGFkZXJNb2R1bGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOiAKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsOiAKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg6IAorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsOiAKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5oOiAKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVTaGFkZXJTdGFnZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENo
YWluLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVN3YXBDaGFpbjo6Y29uZmlndXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVN3YXBDaGFpbjo6cmVzaGFwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVTd2FwQ2hhaW46Om1hcmtMYXllckNvbXBvc2l0ZWQpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVN3YXBDaGFpbi5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BV
U3dhcENoYWluRGVzY3JpcHRvci5oOiBEZWxldGVkIChtZXJnZWQgaW50byBXZWJHUFVTd2FwQ2hh
aW4pLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3Iu
aWRsOiBEZWxldGVkIChtZXJnZWQgaW50byBXZWJHUFVTd2FwQ2hhaW4pLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tOiAKKyAgICAgICAgKFdlYkNvcmU6
OkdQVURldmljZTo6R1BVRGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVURldmljZTo6Y3Jl
YXRlU2hhZGVyTW9kdWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdQVURldmljZTo6Y3Jl
YXRlUmVuZGVyUGlwZWxpbmUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29h
L0dQVVJlbmRlclBpcGVsaW5lLmg6IAorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGlwZWxp
bmU6Om10bFJlbmRlclBpcGVsaW5lU3RhdGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRlclBpcGVsaW5lKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbTogCisgICAgICAgIChX
ZWJDb3JlOjpHUFVTaGFkZXJNb2R1bGU6OkdQVVNoYWRlck1vZHVsZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENoYWluLmg6IAorICAgICAgICAoV2ViQ29yZTo6R1BV
U3dhcENoYWluOjpsYXllciBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvY29jb2Ev
R1BVU3dhcENoYWluTWV0YWwubW06IAorICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpH
UFVTd2FwQ2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpzZXREZXZpY2Up
OgorICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpyZXNoYXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdQVVN3YXBDaGFpbjo6cHJlc2VudCk6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1l
cy5oOgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKwogMjAxOC0xMC0yMyAgSnVzdGlu
IEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIFJlbmFtZSBv
bGQgR1BVKiBpbXBsZW1lbnRhdGlvbiBmaWxlcyB0byBHUFVMZWdhY3kqIGZvciBXZWJNZXRhbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxMjliNmM1NDkzMmY5ZTRlODg0NjZkY2Y5MThjYmQ2ZTE3
NDY0MmQ1Li43YjU5ZWVjY2RhNzZjMzJiNDA2ZDU0YWJjZDFhOTExNTNlNTRhNWY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNDUxLDkgKzQ1MSwxNSBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lE
TF9GSUxFUwogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaWRsCiAgICAgTW9kdWxl
cy93ZWJncHUvV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUv
V2ViR1BVRGV2aWNlLmlkbAorICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3Jp
cHRvckJhc2UuaWRsCisgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2Ny
aXB0b3IuaWRsCisgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCisg
ICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbAogICAg
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsCisgICAgTW9kdWxlcy93
ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbAorICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNo
YWRlck1vZHVsZURlc2NyaXB0b3IuaWRsCisgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVy
U3RhZ2UuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbAotICAgIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaWRsCiAKICAgICBNb2R1bGVz
L3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwKICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjYzOTBkNDlmYjM5ZDZj
NGIyYzQ3NjI2MDVkMjYwNWZiMmI1YjEwZC4uNTgwZTY2NzE0NGE3MTUyMjllMDZjZTlmNWJkMGYy
NTVhMzY2NjhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0zNzIsOSArMzcy
LDE1IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUFkYXB0ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUFkYXB0ZXJEZXNjcmlwdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVEZXZpY2UuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBp
cGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmlkbCBcCisgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgXAorICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCBcCisgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRs
IFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0YWdlLmlkbCBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYnZyL0RPTVdpbmRvd1dlYlZSLmlkbCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3ODA0N2E0YTdjMzk0Yzk3
ZGZlOTRmYWUxMGI5MDFiMTQ1MGZkOGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworT0JKQ19QUk9UT0NPTChNVExEZXZpY2UpOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEdQVVJlbmRlclBpcGVsaW5lOworY2xhc3MgR1BVU2hhZGVyTW9kdWxlOwor
CitzdHJ1Y3QgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOworCitjbGFzcyBHUFVEZXZp
Y2UgeworcHVibGljOgorICAgIEdQVURldmljZSgpOworCisgICAgR1BVU2hhZGVyTW9kdWxlIGNy
ZWF0ZVNoYWRlck1vZHVsZShjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBHUFVSZW5kZXJQaXBl
bGluZSBjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Im
JikgY29uc3Q7CisKKyNpZiBVU0UoTUVUQUwpCisgICAgTVRMRGV2aWNlICptdGxEZXZpY2UoKSBj
b25zdCB7IHJldHVybiBtX210bERldmljZS5nZXQoKTsgfQorI2VuZGlmCisKK3ByaXZhdGU6Cisj
aWYgVVNFKE1FVEFMKQorICAgIFJldGFpblB0cjxNVExEZXZpY2U+IG1fbXRsRGV2aWNlOworI2Vu
ZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVy
TW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJNb2R1bGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMGZmNDQyZDRlMzlkYWFmZThkYTJmNTQ5MTUxNWRmZTNmZWQ4ZjQ0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVy
TW9kdWxlLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworT0JKQ19QUk9UT0NPTChNVExMaWJyYXJ5KTsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVEZXZpY2U7CisKK2NsYXNzIEdQVVNoYWRl
ck1vZHVsZSB7CitwdWJsaWM6CisgICAgR1BVU2hhZGVyTW9kdWxlKGNvbnN0IEdQVURldmljZSYs
IGNvbnN0IFN0cmluZyYpOworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTExpYnJhcnkgKm10bExp
YnJhcnkoKSBjb25zdCB7IHJldHVybiBtX210bExpYnJhcnkuZ2V0KCk7IH0KKyNlbmRpZgorCitw
cml2YXRlOgorI2lmIFVTRShNRVRBTCkKKyAgICBSZXRhaW5QdHI8TVRMTGlicmFyeT4gbV9tdGxM
aWJyYXJ5OworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5jcHAKaW5kZXggY2NkNDhkODVhN2MyMDg1ODg2OTY5MDhlYWY5MTBkMTZmNmEzYTJh
MS4uYWNhODkzYThhMzkyM2MxYzkxODU3NjU0MmM0ZGI2NmEzZjJlMWFmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCkBAIC0yOCw2ICsyOCwx
MSBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVs
aW5lLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCisjaW5j
bHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCisjaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvci5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZjxXZWJHUFVEZXZpY2U+
IFdlYkdQVURldmljZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8V2ViR1BV
QWRhcHRlcj4mJiBhZGFwdGVyKQpAQCAtMzgsOSArNDMsMjAgQEAgUmVmPFdlYkdQVURldmljZT4g
V2ViR1BVRGV2aWNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxXZWJHUFVB
ZGFwdGUKIFdlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKFJlZjxXZWJHUFVBZGFwdGVyPiYmIGFk
YXB0ZXIpCiAgICAgOiBtX2FkYXB0ZXIoV1RGTW92ZShhZGFwdGVyKSkKIHsKLSAgICBVTlVTRURf
UEFSQU0obV9hZGFwdGVyKTsKKyAgICBVTlVTRURfUEFSQU0obV9hZGFwdGVyKTsgLy8gRklYTUU6
IFRha2UgYWRhcHRlciBpbnRvIGFjY291bnQgd2hlbiBjcmVhdGluZyBtX2RldmljZS4KK30KKwor
UmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUo
V2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKG1fZGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZShkZXNjcmlwdG9yLmNvZGUpKTsKIH0KIAorUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBX
ZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKFdlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkdQVVJlbmRlclBp
cGVsaW5lOjpjcmVhdGUobV9kZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShkZXNj
cmlwdG9yKSkpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmlj
ZS5oCmluZGV4IDY4Y2VjMWExN2E4ZTZkZGNlYTRlZWFkYmE2YTVlOWJjZTJhYjU4OGYuLmEzZTNk
NTcwYmQ4ZTczNGRiNjUwMmU0YjU5MGVkYzFjNzYxOTUyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCkBAIC0yNywxMiArMjcsMjEgQEAKIAogI2lm
IEVOQUJMRShXRUJHUFUpCiAKKyNpbmNsdWRlICJHUFVEZXZpY2UuaCIKKyNpbmNsdWRlICJXZWJH
UFVBZGFwdGVyLmgiCisKKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwogY2xhc3MgV2ViR1BVQWRhcHRlcjsKK2NsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5l
OworY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxlOworCitzdHJ1Y3QgV2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOworc3RydWN0IFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3I7CiAKIGNs
YXNzIFdlYkdQVURldmljZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVURldmljZT4gewogcHVi
bGljOgpAQCAtNDAsMTAgKzQ5LDE3IEBAIHB1YmxpYzoKIAogICAgIFdlYkdQVUFkYXB0ZXImIGFk
YXB0ZXIoKSBjb25zdCB7IHJldHVybiBtX2FkYXB0ZXIuZ2V0KCk7IH0KIAorICAgIFJlZjxXZWJH
UFVTaGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yJiYpIGNvbnN0OworICAgIFJlZjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVu
ZGVyUGlwZWxpbmUoV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYpIGNvbnN0OworCiBw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBXZWJHUFVTd2FwQ2hhaW47IC8vIEZJWE1FOiBXcml0
ZSBhIGdldHRlciBmb3IgbV9kZXZpY2UgaWYgdGhpcyBkb2VzIG5vdCBicmVhayBlbmNhcHN1bGF0
aW9uLgorCiAgICAgV2ViR1BVRGV2aWNlKFJlZjxXZWJHUFVBZGFwdGVyPiYmKTsKIAogICAgIFJl
ZjxXZWJHUFVBZGFwdGVyPiBtX2FkYXB0ZXI7CisKKyAgICBHUFVEZXZpY2UgbV9kZXZpY2U7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAppbmRleCAwNzVlODA4M2E4NzgwNmE5YzkwZWNkMjI2YjQ2
MWZjM2ZlZWUxNmIwLi5mMTYzNjdhOWRhODhhOTRiNjEwOTJkZjRkODFiNTAwODU0ZGRmOTMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwKQEAg
LTQ1LDExICs0NSwxNCBAQAogICAgIFdlYkdQVUJsZW5kU3RhdGUgY3JlYXRlQmxlbmRTdGF0ZShX
ZWJHUFVCbGVuZFN0YXRlRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKICAgICBXZWJHUFVEZXB0aFN0
ZW5jaWxTdGF0ZSBjcmVhdGVEZXB0aFN0ZW5jaWxTdGF0ZShXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0
ZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BVSW5wdXRTdGF0ZSBjcmVhdGVJbnB1
dFN0YXRlKFdlYkdQVUlucHV0U3RhdGVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOworKi8KICAgICBX
ZWJHUFVTaGFkZXJNb2R1bGUgY3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3IgZGVzY3JpcHRvcik7CisvKgogICAgIFdlYkdQVUF0dGFjaG1lbnRTdGF0ZSBjcmVh
dGVBdHRhY2htZW50U3RhdGUoV2ViR1BVQXR0YWNobWVudFN0YXRlRGVzY3JpcHRvciBkZXNjcmlw
dG9yKTsKICAgICBXZWJHUFVDb21wdXRlUGlwZWxpbmUgY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKFdl
YkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CisqLwogICAgIFdlYkdQ
VVJlbmRlclBpcGVsaW5lIGNyZWF0ZVJlbmRlclBpcGVsaW5lKFdlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLQorLyoKICAgICBXZWJHUFVDb21tYW5kQnVmZmVyIGNy
ZWF0ZUNvbW1hbmRCdWZmZXIoV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IgZGVzY3JpcHRv
cik7CiAgICAgV2ViR1BVRmVuY2UgY3JlYXRlRmVuY2UoV2ViR1BVRmVuY2VEZXNjcmlwdG9yIGRl
c2NyaXB0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzEyMWE5YmE1
NjgzNzQwMTQzY2VjMzA1OTA4MmJjODJjYTU0MTU5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaApA
QCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFdl
YkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgeworICAgIFZlY3RvcjxXZWJHUFVQaXBlbGluZVN0
YWdlRGVzY3JpcHRvcj4gc3RhZ2VzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1
ZTNjMTRkMjc3NjdmZWI4NGRkZjM1N2IyMjI3OGQ5MDQ0ZTFkYjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JC
YXNlLmlkbApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKy8vIGh0dHBzOi8vZ2l0aHViLmNv
bS9ncHV3ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCisKK2RpY3Rp
b25hcnkgV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7CisgICAgLy8gRklYTUU6IEZpZ3Vy
ZSBvdXQgd2hhdCBQaXBlbGluZUxheW91dCBpcyBmb3IuEAorICAgIC8vIFdlYkdQVVBpcGVsaW5l
TGF5b3V0IGxheW91dDsKKyAgICBzZXF1ZW5jZTxXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRv
cj4gc3RhZ2VzOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhMjg2
NjQ4NTJmZTU5YTNmODY1ODViNjdkOGUxNWQwN2NiNTkwNWMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRv
ci5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKKworI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5n
IFdlYkdQVVNoYWRlclN0YWdlRW51bSA9IHVuc2lnbmVkIGxvbmc7CisKK3N0cnVjdCBXZWJHUFVQ
aXBlbGluZVN0YWdlRGVzY3JpcHRvciB7CisgICAgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4g
bW9kdWxlOworICAgIFdlYkdQVVNoYWRlclN0YWdlRW51bSBzdGFnZTsKKyAgICBTdHJpbmcgZW50
cnlQb2ludDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJjYmI5
MDU2Nzk5ODhjYzFjMzUzMjZiOTM4ZGNkZDliYjY1MzRlYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9y
LmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9n
cHV3ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCisKK3R5cGVkZWYg
dW5zaWduZWQgbG9uZyBXZWJHUFVTaGFkZXJTdGFnZUVudW07CisKK2RpY3Rpb25hcnkgV2ViR1BV
UGlwZWxpbmVTdGFnZURlc2NyaXB0b3IgeworICAgIFdlYkdQVVNoYWRlck1vZHVsZSBtb2R1bGU7
CisgICAgV2ViR1BVU2hhZGVyU3RhZ2VFbnVtIHN0YWdlOworICAgIERPTVN0cmluZyBlbnRyeVBv
aW50OworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDNmYmM4NjU5NzYxNmJiNDNhZWU0YzUz
ODQ4MTYyZjQzN2Y1MTIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxp
bmUuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGlu
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxXZWJHUFVSZW5kZXJQaXBlbGluZT4g
V2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShHUFVSZW5kZXJQaXBlbGluZSYmIHBpcGVsaW5l
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKFdURk1v
dmUocGlwZWxpbmUpKSk7Cit9CisKK1dlYkdQVVJlbmRlclBpcGVsaW5lOjpXZWJHUFVSZW5kZXJQ
aXBlbGluZShHUFVSZW5kZXJQaXBlbGluZSYmIHBpcGVsaW5lKQorICAgIDogbV9yZW5kZXJQaXBl
bGluZShwaXBlbGluZSkKK3sKKyAgICBVTlVTRURfUEFSQU0obV9yZW5kZXJQaXBlbGluZSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBl
bGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxp
bmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43ZGI2NDM0YTc0YzQyY2Q0MmZmNTkzNmIzOTFmNDNiNzA1YzMyZTVl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmUuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmUu
aCIKKworI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoR1BVUmVuZGVyUGlwZWxpbmUmJik7
CisKK3ByaXZhdGU6CisgICAgV2ViR1BVUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmUm
Jik7CisKKyAgICBHUFVSZW5kZXJQaXBlbGluZSBtX3JlbmRlclBpcGVsaW5lOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNDZkMDFhMjk1ZTFhYWRkYTE3NmQ5NTVhZDI5ZWU0OTBiNDEwM2Q0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuaWRsCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8gaHR0cHM6Ly9n
aXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWduL3NrZXRjaC53ZWJpZGwK
KworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQ
VSwKKyAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCitdIGludGVyZmFjZSBXZWJHUFVSZW5k
ZXJQaXBlbGluZSB7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NmVlYzVkOGI2ZmVlMjk1ZTVmNDAxMTA5ZGExYmFkODFlMmU4ZDUyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgV2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yIDogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7CisgICAgZW51bSBj
bGFzcyBQcmltaXRpdmVUb3BvbG9neSB7CisgICAgICAgIFBvaW50TGlzdCwKKyAgICAgICAgTGlu
ZUxpc3QsCisgICAgICAgIExpbmVTdHJpcCwKKyAgICAgICAgVHJpYW5nbGVMaXN0LAorICAgICAg
ICBUcmlhbmdsZVN0cmlwCisgICAgfTsKKworICAgIFByaW1pdGl2ZVRvcG9sb2d5IHByaW1pdGl2
ZVRvcG9sb2d5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUy
NjAxMzU1MDAzZGU2MGQ1MjJhOTMyMzkzNzBlOTI1OTY1ZDUxMmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuaWRsCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8gaHR0cHM6Ly9naXRodWIu
Y29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWduL3NrZXRjaC53ZWJpZGwKKworZW51
bSBXZWJHUFVQcmltaXRpdmVUb3BvbG9neSB7CisgICAgInBvaW50TGlzdCIsCisgICAgImxpbmVM
aXN0IiwKKyAgICAibGluZVN0cmlwIiwKKyAgICAidHJpYW5nbGVMaXN0IiwKKyAgICAidHJpYW5n
bGVTdHJpcCIKK307CisKK2RpY3Rpb25hcnkgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
IDogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7CisgICAgV2ViR1BVUHJpbWl0aXZlVG9w
b2xvZ3kgcHJpbWl0aXZlVG9wb2xvZ3k7CisgICAgLyoKKyAgICBzZXF1ZW5jZTxXZWJHUFVCbGVu
ZFN0YXRlPiBibGVuZFN0YXRlczsKKyAgICBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSBkZXB0aFN0
ZW5jaWxTdGF0ZTsKKyAgICBXZWJHUFVJbnB1dFN0YXRlIGlucHV0U3RhdGU7CisgICAgV2ViR1BV
QXR0YWNobWVudHNTdGF0ZSBhdHRhY2htZW50c1N0YXRlOyAqLworICAgIC8vIFRPRE8gb3RoZXIg
cHJvcGVydGllcworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTaGFkZXJNb2R1bGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0MjAyMzg3NjY2NmQ5YTY3NmE0YzZj
NzFkOWZlODkzMzljYjAwNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxl
LmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxX
ZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKEdQVVNoYWRlck1v
ZHVsZSYmIG1vZHVsZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVTaGFkZXJN
b2R1bGUoV1RGTW92ZShtb2R1bGUpKSk7Cit9CisKK1dlYkdQVVNoYWRlck1vZHVsZTo6V2ViR1BV
U2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZSYmIG1vZHVsZSkKKyAgICA6IG1fbW9kdWxlKG1v
ZHVsZSkKK3sKKyAgICBVTlVTRURfUEFSQU0obV9tb2R1bGUpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYmM4
MmY1NzNiNDkxZjQ1ZjhlZWZhYWJjNGUxMTA3N2I4ZmIzZjlkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmgKQEAgLTAs
MCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQ
VSkKKworI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgorCisjaW5jbHVkZSA8d3RmL1JlZi5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU2hhZGVy
TW9kdWxlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNy
ZWF0ZShHUFVTaGFkZXJNb2R1bGUmJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdQ
VVJlbmRlclBpcGVsaW5lOworCisgICAgV2ViR1BVU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVs
ZSYmKTsKKworICAgIEdQVVNoYWRlck1vZHVsZSBtX21vZHVsZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY4M2U5NzllNDg3YjRiOGQyYWM2OTdlMDA5YWQ2NjNmN2IwZGZkMWYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUu
aWRsCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8gaHR0cHM6Ly9naXRodWIuY29tL2dw
dXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWduL3NrZXRjaC53ZWJpZGwKKworWworICAgIENv
bmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVSwKKyAgICBJbXBs
ZW1lbnRhdGlvbkxhY2tzVlRhYmxlCitdIGludGVyZmFjZSBXZWJHUFVTaGFkZXJNb2R1bGUgewor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjMyYTk4OWVkNWM1MDZkZjNh
N2RjYjA5MzU1Y2U1MjY4NGMzMDhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEs
NDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdHJ1Y3QgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7CisgICAgU3RyaW5nIGNvZGU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BV
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVy
TW9kdWxlRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmQ3MDdlZDkyYjU1MjQy
NmNiNTQxYWVmNDhjOGI1ZWE0ZGE2MzVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwKQEAgLTAs
MCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdl
Yi9ibG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAorCitbCisgICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGRpY3Rpb25hcnkgV2ViR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7CisgICAgLypBcnJheUJ1ZmZlciovIERPTVN0cmluZyBj
b2RlOyAvLyBGSVhNRTogRE9NU3RyaW5nIGZvciBNVEwgcHJvdG90eXBpbmcgb25seS4KK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNjhmYjYxNDlmNGFjZTdlNGQ5NjM0M2QzODZhYTFmODZmOTQ1N2IzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVy
U3RhZ2UuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHUFVTaGFkZXJTdGFnZSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYkdQVVNoYWRlclN0YWdlPiB7CitwdWJsaWM6CisgICAgZW51bSA6IHVuc2lnbmVkIGxv
bmcgeworICAgICAgICBWRVJURVggPSAwLAorICAgICAgICBGUkFHTUVOVCA9IDEsCisgICAgICAg
IENPTVBVVEUgPSAyCisgICAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2EzN2EzNzQxMmQ0OTMwMWJi
ZjU3ODE3ZTg1NmM5NmQwNjM0Y2U2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0YWdlLmlkbApAQCAtMCwwICsxLDM3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVy
L2Rlc2lnbi9za2V0Y2gud2ViaWRsCisKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7CisKK1sK
KyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUsCisg
ICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQorXSBpbnRlcmZhY2UgV2ViR1BVU2hhZGVyU3Rh
Z2UgeworICAgIGNvbnN0IHUzMiBWRVJURVggPSAwOworICAgIGNvbnN0IHUzMiBGUkFHTUVOVCA9
IDE7CisgICAgY29uc3QgdTMyIENPTVBVVEUgPSAyOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwCmluZGV4IDgzMThiNGZiN2ZmZjI0
ZGQzZmZmMDgwMDEyOWQ5MTE5NGJiZDczYWEuLjg2NTZhNjllZTllZDFmNzNhZmNhOTBmYjY1NmY3
MGIyMTIyOWYwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVN3YXBDaGFpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU3dhcENoYWluLmNwcApAQCAtMjgsMTQgKzI4LDE3IEBACiAKICNpZiBFTkFCTEUoV0VCR1BV
KQogCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldl
YkdQVURldmljZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdlYkdQVVN3YXBDaGFpbjo6
fldlYkdQVVN3YXBDaGFpbigpID0gZGVmYXVsdDsKIAotdm9pZCBXZWJHUFVTd2FwQ2hhaW46OmNv
bmZpZ3VyZShjb25zdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQordm9p
ZCBXZWJHUFVTd2FwQ2hhaW46OmNvbmZpZ3VyZShEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKIHsK
KyAgICBpZiAoZGVzY3JpcHRvci5kZXZpY2UpCisgICAgICAgIG1fc3dhcENoYWluLnNldERldmlj
ZShkZXNjcmlwdG9yLmRldmljZS0+bV9kZXZpY2UpOworCiAgICAgcmVzaGFwZShkZXNjcmlwdG9y
LndpZHRoLCBkZXNjcmlwdG9yLmhlaWdodCk7CiB9CiAKQEAgLTQ2LDEzICs0OSwxMiBAQCB2b2lk
IFdlYkdQVVN3YXBDaGFpbjo6cHJlc2VudCgpCiAKIHZvaWQgV2ViR1BVU3dhcENoYWluOjpyZXNo
YXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKLSAgICBtX3dpZHRoID0gd2lkdGg7Ci0gICAg
bV9oZWlnaHQgPSBoZWlnaHQ7CisgICAgbV9zd2FwQ2hhaW4ucmVzaGFwZSh3aWR0aCwgaGVpZ2h0
KTsKIH0KIAogdm9pZCBXZWJHUFVTd2FwQ2hhaW46Om1hcmtMYXllckNvbXBvc2l0ZWQoKQogewot
ICAgIC8vIEZJWE1FOiBVbmltcGxlbWVudGVkIHN0dWIuCisgICAgbV9zd2FwQ2hhaW4ucHJlc2Vu
dCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oCmluZGV4IGQyY2YyNjA2YzI4MDEzNjZkYjlh
MjFmYzdhNjk1MmZjMDI3YzBkYmQuLjdiOTFjM2RkODMzMjlkNTQ4YjMwNzQxMzk1ZTM5MDI0ZmZj
ZjA2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3
YXBDaGFpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBD
aGFpbi5oCkBAIC0yOCwxNSArMjgsMjIgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQogCiAjaW5jbHVk
ZSAiR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiR1BVU3dhcENo
YWluLmgiCisjaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RydWN0IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3I7Ci0KIGNsYXNzIFdlYkdQVVN3YXBD
aGFpbiA6IHB1YmxpYyBHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQgewogcHVibGljOgor
ICAgIHN0cnVjdCBEZXNjcmlwdG9yIHsKKyAgICAgICAgUmVmUHRyPFdlYkdQVURldmljZT4gZGV2
aWNlOworICAgICAgICAvLyBGSVhNRTogTW9yZSB0ZXh0dXJlIHByb3BlcnRpZXMuCisgICAgICAg
IHVuc2lnbmVkIGxvbmcgd2lkdGg7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0OworICAg
IH07CisKICAgICB2aXJ0dWFsIH5XZWJHUFVTd2FwQ2hhaW4oKSA9IDA7Ci0gICAgdm9pZCBjb25m
aWd1cmUoY29uc3QgV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvciYpOworICAgIHZvaWQgY29uZmln
dXJlKERlc2NyaXB0b3ImJik7CiAgICAgLy8gRklYTUU6IFdlYkdQVVRleHR1cmUgZ2V0TmV4dFRl
eHR1cmUoKTsKICAgICB2b2lkIHByZXNlbnQoKTsKIApAQCAtNTksOCArNjYsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlIHsgfQogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRv
Y3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAg
ICB1bnNpZ25lZCBsb25nIG1fd2lkdGg7Ci0gICAgdW5zaWduZWQgbG9uZyBtX2hlaWdodDsKKyAg
ICBHUFVTd2FwQ2hhaW4gbV9zd2FwQ2hhaW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hh
aW4uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlk
bAppbmRleCBhMGJkZjc5MmRjYWFhMTY5ZDRkZmYxNjM1Yjc3MWI5MDVmMjdhZGZkLi41MDJlM2Rk
ZDAxMWY4NTJmNWJiZGYzZmRhYzU0M2E5ZmY2MzUwZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwKQEAgLTMzLDMgKzMzLDE0IEBA
CiAgICAgLy8gV2ViR1BVVGV4dHVyZSBnZXROZXh0VGV4dHVyZSgpOwogICAgIHZvaWQgcHJlc2Vu
dCgpOwogfTsKKwordHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKKworZGljdGlvbmFyeSBXZWJH
UFVTd2FwQ2hhaW5EZXNjcmlwdG9yIHsKKyAgICBXZWJHUFVEZXZpY2UgZGV2aWNlOyAvLyBGSVhN
RTogUHJvcG9zZSB0aGlzIGFkZGl0aW9uIHRvIElETC4KKyAgICAvLyBXZWJHUFVUZXh0dXJlVXNh
Z2VGbGFncyB1c2FnZTsKKyAgICAvLyBXZWJHUFVUZXh0dXJlRm9ybWF0RW51bSBmb3JtYXQ7Cisg
ICAgdTMyIHdpZHRoOworICAgIHUzMiBoZWlnaHQ7Cit9OworCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxNjU5Y2E5NzdlZDU2MmYxYTU4MGQ4OTRkYzY5
MjY1Nzk2NWYzNDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRv
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1
Y3QgV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvciB7Ci0gICAgLy8gRklYTUU6IE1vcmUgdGV4dHVy
ZSBwcm9wZXJ0aWVzLgotICAgIHVuc2lnbmVkIGxvbmcgd2lkdGg7Ci0gICAgdW5zaWduZWQgbG9u
ZyBoZWlnaHQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU3dhcENoYWluRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNTM2NzUwYTliNmI1YjMxN2Q0ZTIyMGQ2OWUwMDhjY2YyNDk5NTczNy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmlkbAorKysgL2Rldi9udWxsCkBA
IC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotLy8gaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9n
cHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWduL3NrZXRjaC53ZWJpZGwKLQotdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIHUzMjsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKLSAgICBFbmFibGVkQXRS
dW50aW1lPVdlYkdQVQotXSBkaWN0aW9uYXJ5IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3Igewot
ICAgIC8vIFdlYkdQVVRleHR1cmVVc2FnZUZsYWdzIHVzYWdlOwotICAgIC8vIFdlYkdQVVRleHR1
cmVGb3JtYXRFbnVtIGZvcm1hdDsKLSAgICB1MzIgd2lkdGg7Ci0gICAgdTMyIGhlaWdodDsKLX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVEZXZp
Y2VNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVURldmlj
ZU1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlYmVhZWY1MmU5NzhiYzczOTY1ZTI0ZWJiYjI1ZGQwZTAz
NmI4ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9j
b2NvYS9HUFVEZXZpY2VNZXRhbC5tbQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVEZXZpY2UuaCIKKworI2lmIEVOQUJMRShXRUJH
UFUpCisKKyNpbXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lLmgiCisjaW1wb3J0ICJHUFVTaGFkZXJN
b2R1bGUuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIldlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oIgorCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0dQVURldmljZTo6R1BVRGV2aWNlKCkKKyAgICA6IG1fbXRsRGV2aWNlIHsg
YWRvcHROUyhNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCkpIH0KK3sKKyAgICBpZiAoIW1f
bXRsRGV2aWNlKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0coV2ViR1BVLCAiR1BVRGV2aWNl
OjpHUFVEZXZpY2UoKTogTVRMRGV2aWNlIGlzICVwIiwgbV9tdGxEZXZpY2UuZ2V0KCkpOworfQor
CitHUFVTaGFkZXJNb2R1bGUgR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgU3Ry
aW5nJiBjb2RlKSBjb25zdAoreworICAgIHJldHVybiBHUFVTaGFkZXJNb2R1bGUoKnRoaXMsIGNv
ZGUpOworfQorCitHUFVSZW5kZXJQaXBlbGluZSBHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVs
aW5lKFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0Cit7
CisgICAgcmV0dXJuIEdQVVJlbmRlclBpcGVsaW5lKCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0b3Ip
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJl
bmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVS
ZW5kZXJQaXBlbGluZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlYzJjZjE5OTRjMWQwYWVlYTc0NjkyZDliMzY2
OWM5YmU3ZTEyOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisKK09CSkNfUFJPVE9DT0woTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSk7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVRGV2aWNlOworCitzdHJ1Y3QgV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOworCitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZSB7Citw
dWJsaWM6CisgICAgR1BVUmVuZGVyUGlwZWxpbmUoY29uc3QgR1BVRGV2aWNlJiwgV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYpOworCisjaWYgVVNFKE1FVEFMKQorICAgIE1UTFJlbmRl
clBpcGVsaW5lU3RhdGUgKm10bFJlbmRlclBpcGVsaW5lU3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X210bFJlbmRlclBpcGVsaW5lU3RhdGUuZ2V0KCk7IH0KKyNlbmRpZgorCitwcml2YXRlOgorI2lm
IFVTRShNRVRBTCkKKyAgICBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxpbmVTdGF0ZT4gbV9tdGxS
ZW5kZXJQaXBlbGluZVN0YXRlOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTg2NzZmYzc4MDAzZThlMGJmMzZiMWVhMjExZTVmYzVjMDE2YTA2MwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRl
clBpcGVsaW5lTWV0YWwubW0KQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbXBvcnQgIldlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgorI2lt
cG9ydCAiV2ViR1BVU2hhZGVyU3RhZ2UuaCIKKworI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitHUFVSZW5kZXJQaXBlbGluZTo6R1BVUmVuZGVyUGlwZWxp
bmUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciYmIGRlc2NyaXB0b3IpCit7CisgICAgaWYgKCFkZXZpY2UubXRsRGV2aWNlKCkpCisgICAgICAg
IHJldHVybjsgLy8gRklYTUU6IFRocm93IHJlbGV2YW50IGVycm9yIGJlZm9yZSByZXR1cm5pbmcu
CisKKyAgICAvLyBDcmVhdGUgcGlwZWxpbmUgZGVzY3JpcHRvci4KKyAgICBhdXRvIG10bERlc2Ny
aXB0b3IgPSBhZG9wdE5TKFtNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgbmV3XSk7CisKKyAg
ICAvLyBDcmVhdGUgZnVuY3Rpb25zLgorICAgIGZvciAoY29uc3QgYXV0byYgc3RhZ2VEZXNjcmlw
dG9yIDogZGVzY3JpcHRvci5zdGFnZXMpIHsKKyAgICAgICAgLy8gRklYTUU6IEhvdyBtYW55IGVu
Y2Fwc3VsYXRpb24gbGF3cyBkb2VzIHRoaXMgYnJlYWs/PworICAgICAgICBhdXRvIG10bExpYnJh
cnkgPSByZXRhaW5QdHIoc3RhZ2VEZXNjcmlwdG9yLm1vZHVsZS0+bV9tb2R1bGUubXRsTGlicmFy
eSgpKTsKKworICAgICAgICBpZiAoIW10bExpYnJhcnkpCisgICAgICAgICAgICByZXR1cm47IC8v
IEZJWE1FOiBUaHJvdyByZWxldmFudCBlcnJvciBiZWZvcmUgcmV0dXJuaW5nLgorCisgICAgICAg
IHN3aXRjaCAoc3RhZ2VEZXNjcmlwdG9yLnN0YWdlKSB7CisgICAgICAgIGNhc2UgV2ViR1BVU2hh
ZGVyU3RhZ2U6OlZFUlRFWDoKKyAgICAgICAgICAgIFttdGxEZXNjcmlwdG9yIHNldFZlcnRleEZ1
bmN0aW9uOlttdGxMaWJyYXJ5IG5ld0Z1bmN0aW9uV2l0aE5hbWU6c3RhZ2VEZXNjcmlwdG9yLmVu
dHJ5UG9pbnRdXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkdQVVNoYWRl
clN0YWdlOjpGUkFHTUVOVDoKKyAgICAgICAgICAgIFttdGxEZXNjcmlwdG9yIHNldEZyYWdtZW50
RnVuY3Rpb246W210bExpYnJhcnkgbmV3RnVuY3Rpb25XaXRoTmFtZTpzdGFnZURlc2NyaXB0b3Iu
ZW50cnlQb2ludF1dOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAvLyBGSVhNRTogVGhyb3cgc29tZSBzb3J0IG9mIGVycm9yIGlmIG5vbiB2ZXJ0ZXgv
ZnJhZ21lbnQgc3RhZ2UgcHJvdmlkZWQgdG8gdGhpcyBjb25zdHJ1Y3Rvci4KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRklYTUU6IEdldCB0aGUgcGl4ZWxG
b3JtYXQgYXMgY29uZmlndXJlZCBmb3IgdGhlIGNvbnRleHQvQ0FNZXRhbExheWVyLgorICAgIG10
bERlc2NyaXB0b3IuZ2V0KCkuY29sb3JBdHRhY2htZW50c1swXS5waXhlbEZvcm1hdCA9IE1UTFBp
eGVsRm9ybWF0QkdSQThVbm9ybTsKKworICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhhdCBib3RoIHZl
cnRleCBhbmQgZnJhZ21lbnQgZnVuY3Rpb25zIGhhdmUgYmVlbiBhc3NpZ25lZD8KKyAgICBtX210
bFJlbmRlclBpcGVsaW5lU3RhdGUgPSBhZG9wdE5TKFtkZXZpY2UubXRsRGV2aWNlKCkgbmV3UmVu
ZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm10bERlc2NyaXB0b3IuZ2V0KCkgZXJyb3I6
bmlsXSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9H
UFVTaGFkZXJNb2R1bGVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2Nv
Y29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwODQ2MWI0ZjczMDA1ZmVm
Mzc3NDBiMGJhNjg0NDk0ZjI4ZjkzZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbQpAQCAtMCwwICsx
LDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVTaGFk
ZXJNb2R1bGUuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbXBvcnQgIkdQVURldmljZS5o
IgorI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitHUFVTaGFkZXJNb2R1bGU6OkdQVVNoYWRlck1vZHVsZShjb25zdCBH
UFVEZXZpY2UmIGRldmljZSwgY29uc3QgU3RyaW5nJiBjb2RlKQoreworICAgIGlmICghZGV2aWNl
Lm10bERldmljZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBOU0Vycm9yICplcnJvciA9IFtO
U0Vycm9yIGVycm9yV2l0aERvbWFpbjpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIiBjb2RlOjEgdXNl
ckluZm86bmlsXTsKKyAgICBtX210bExpYnJhcnkgPSBhZG9wdE5TKFtkZXZpY2UubXRsRGV2aWNl
KCkgbmV3TGlicmFyeVdpdGhTb3VyY2U6Y29kZSBvcHRpb25zOm5pbCBlcnJvcjomZXJyb3JdKTsK
KyAgICBpZiAoIW1fbXRsTGlicmFyeSkKKyAgICAgICAgTE9HKFdlYkdQVSwgIlNoYWRlciBjb21w
aWxhdGlvbiBlcnJvcjogJXMiLCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3Ry
aW5nXSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRjYTg0M2I5OGFhOGNkNmU5M2UzODYwNjdlNTAxYzFkODEwMmIyYzcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW4uaApA
QCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIENBTWV0
YWxMYXllcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVEZXZpY2U7CisKK2Ns
YXNzIEdQVVN3YXBDaGFpbiB7CitwdWJsaWM6CisgICAgR1BVU3dhcENoYWluKCk7CisKKyAgICB2
b2lkIHNldERldmljZShjb25zdCBHUFVEZXZpY2UmKTsKKyAgICB2b2lkIHJlc2hhcGUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIHByZXNlbnQoKTsKKworI2lmIFVTRShNRVRBTCkK
KyAgICBDQU1ldGFsTGF5ZXIgKmxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsg
fQorI2VuZGlmCisKK3ByaXZhdGU6CisjaWYgVVNFKE1FVEFMKQorICAgIFJldGFpblB0cjxDQU1l
dGFsTGF5ZXI+IG1fbGF5ZXI7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4
ZThhZDkyZmRkMjc1ZjQ3NzRmZWEzMWM1ZjRmMTg3M2I2NzkwNWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5t
bQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJHUFVTd2FwQ2hhaW4uaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbXBvcnQgIkdQ
VURldmljZS5oIgorI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPFF1YXJ0ekNvcmUv
UXVhcnR6Q29yZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dQVVN3YXBDaGFpbjo6R1BV
U3dhcENoYWluKCkKKyAgICA6IG1fbGF5ZXIoYWRvcHROUyhbW0NBTWV0YWxMYXllciBhbGxvY10g
aW5pdF0pKQoreworICAgIFttX2xheWVyIHNldE9wYXF1ZTowXTsKKyAgICBbbV9sYXllciBzZXRO
YW1lOkAiV2ViR1BVIExheWVyIl07CisKKyAgICAvLyBGSVhNRTogRm9yIG5vdywgZGVmYXVsdCB0
byB0aGVzZSBzZXR0aW5ncy4KKyAgICBbbV9sYXllciBzZXRQaXhlbEZvcm1hdDpNVExQaXhlbEZv
cm1hdEJHUkE4VW5vcm1dOworICAgIFttX2xheWVyIHNldEZyYW1lYnVmZmVyT25seTpZRVNdOwor
fQorCit2b2lkIEdQVVN3YXBDaGFpbjo6c2V0RGV2aWNlKGNvbnN0IEdQVURldmljZSYgZGV2aWNl
KQoreworICAgIGlmICghZGV2aWNlLm10bERldmljZSgpKQorICAgICAgICByZXR1cm47IC8vIEZJ
WE1FOiBUaHJvdyBhcHByb3ByaWF0ZSBlcnJvcgorCisgICAgW21fbGF5ZXIgc2V0RGV2aWNlOmRl
dmljZS5tdGxEZXZpY2UoKV07Cit9CisKK3ZvaWQgR1BVU3dhcENoYWluOjpyZXNoYXBlKGludCB3
aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBbbV9sYXllciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgw
LCAwLCB3aWR0aCwgaGVpZ2h0KV07CisgICAgW21fbGF5ZXIgc2V0RHJhd2FibGVTaXplOkNHU2l6
ZU1ha2Uod2lkdGgsIGhlaWdodCldOworfQorCit2b2lkIEdQVVN3YXBDaGFpbjo6cHJlc2VudCgp
Cit7CisgICAgLy8gRklYTUU6IFVuaW1wbGVtZW50ZWQgc3R1Yi4KK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
YWViNjYyZWIyZjAwZTBjMmJkY2ViNWM3YWExZmU1NDBiMGMxYmI3Yy4uMmYyZmE1OWExMTA2NWM5
ZDc3ZDYxYzhjY2U3N2I1NTA3ODRkODZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTMwMCw2ICszMDAs
OCBAQCBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFw
dGVyLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBp
cGVsaW5lLmNwcAorTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcAogTW9kdWxl
cy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcAogCiBNb2R1bGVzL3dlYnZyL05hdmlnYXRvcldl
YlZSLmNwcApAQCAtMzE4MSw5ICszMTgzLDE1IEBAIEpTV2ViR1BVLmNwcAogSlNXZWJHUFVBZGFw
dGVyLmNwcAogSlNXZWJHUFVBZGFwdGVyRGVzY3JpcHRvci5jcHAKIEpTV2ViR1BVRGV2aWNlLmNw
cAorSlNXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmNwcAorSlNXZWJHUFVQaXBlbGluZVN0
YWdlRGVzY3JpcHRvci5jcHAKIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAKK0pTV2ViR1BV
UmVuZGVyUGlwZWxpbmUuY3BwCitKU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAK
K0pTV2ViR1BVU2hhZGVyTW9kdWxlLmNwcAorSlNXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
LmNwcAorSlNXZWJHUFVTaGFkZXJTdGFnZS5jcHAKIEpTV2ViR1BVU3dhcENoYWluLmNwcAotSlNX
ZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNwcAogSlNXZWJNZXRhbEJ1ZmZlci5jcHAKIEpTV2Vi
TWV0YWxDb21tYW5kQnVmZmVyLmNwcAogSlNXZWJNZXRhbENvbW1hbmRRdWV1ZS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CmluZGV4IDk0ZmYxNTYyNWIzNDhjNDUyYjFiYTcwMzViN2VkODAyMDUy
Nzk0MzcuLmU5ODNkYWIyOGNjYWRlY2M5MmU0NmI1YjFhOGI1MGJhNWEyOTg3NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dApAQCAtMjcsNiArMjcsMTEgQEAgTW9kdWxlcy9wbHVnaW5zL1F1aWNr
VGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJl
cGxhY2VtZW50LmNwcAogTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJD
b2NvYS5tbQogCitNb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbQorTW9kdWxl
cy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbQorTW9kdWxlcy93ZWJncHUv
Y29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0KK01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3
YXBDaGFpbk1ldGFsLm1tCisKIGFjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJ
T1MubW0KIGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KIGFjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmMyZDcxZWZj
NzcxNTdkZGUzZDM0NGYyYWZlNDc5NjczNjE0NmE4My4uY2JlODIxMDE2ZTdlNmVmY2Q5MTA3MWUw
MTdmMzBiN2IzYWY4ZTFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM2NzUsOCArMTM2NzUsNiBAQAogCQlEMDBGNTk0NjIx
NkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDBGNTk0NzIxNkVGRTU0MDAwRDcxREIgLyogV2Vi
R1BVLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQwMEY1OTQ4MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYkdQVS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwMEY1OTRDMjE2RkRG
OEUwMDBENzFEQiAvKiBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVQWRh
cHRlckRlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBGNTk0
RTIxNkZGNkYwMDAwRDcxREIgLyogV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDAwRjU5NEYyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVQWRhcHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
MDBGNTk1MDIxNkZGQUMyMDAwRDcxREIgLyogV2ViR1BVQWRhcHRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJHUFVBZGFwdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RDAwRjU5NTEyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXIuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQ
VUFkYXB0ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM2ODUsNiArMTM2
ODMsOCBAQAogCQlEMDBGNTk1NDIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJHUFVEZXZpY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDFB
MjdBQjEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGFjZVNwbGl0U3RyaW5nLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAxQTI3QUMxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3Bs
aXRTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BhY2VTcGxpdFN0
cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDJDMjY5MTIxODE0MTZEMDBE
ODE4RTQgLyogV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BV
QWRhcHRlckRlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDAyQzI2
OTIyMTgxNDE2RDAwRDgxOEU0IC8qIFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJHUFVBZGFwdGVyRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUQwMkY4NTRFMjE2ODJBNEEwMDg4RUU3NCAvKiBXZWJNZXRhbENvbW1hbmRRdWV1ZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViTWV0YWxDb21tYW5kUXVldWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEMDJGODU1MDIxNjgyQTU2MDA4OEVFNzQgLyogV2ViTWV0YWxDb21wdXRlQ29tbWFuZEVuY29k
ZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNv
ZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAyRjg1NTEyMTY4MkE1NjAw
ODhFRTc0IC8qIFdlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViTWV0YWxDb21wdXRlUGlwZWxpbmVTdGF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM3NTQsNiArMTM3NTQsMTUgQEAKIAkJRDA1NzNENDIy
MTdFQjgxRTAwRDFCRTkxIC8qIEdQVUxlZ2FjeVRleHR1cmVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVRleHR1cmVNZXRhbC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA1Q0VEMjcwQTQwQkIyQzAwQzVBRjM4IC8qIEZv
cm1hdEJsb2NrQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRm9ybWF0QmxvY2tDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RDA1Q0VEMjgwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybWF0QmxvY2tDb21tYW5kLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwNjBEODg0MjE4MjVENUYwMDMzOTMxOCAvKiBXZWJHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA2MEQ4ODcyMTgyNjk3MDAw
MzM5MzE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlEMDYwRDg4ODIxODI4MEMxMDAzMzkzMTggLyogR1BVU2hhZGVyTW9kdWxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVVNoYWRlck1vZHVsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlEMDYwRDg4OTIxODI4MEMxMDAzMzkzMTggLyogR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBHUFVTaGFkZXJNb2R1bGVNZXRhbC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRDA2MTVGQ0MyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRl
ck1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA2MTVGQ0QyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNo
YWRlck1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDYxNUZDRTIxN0ZFNUM2MDA4QTQ4QTgg
LyogV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1bGUuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDYxNUZDRjIxN0ZGMTg1MDA4QTQ4QTggLyog
R1BVRGV2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlEMDYxNUZEMTIxN0ZGMUUxMDA4QTQ4QTggLyogR1BVRGV2aWNlTWV0YWwu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVEZXZpY2VNZXRhbC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDA2QzBEOEQwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1h
dENvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3ZlRm9ybWF0
Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDZDMEQ4RTBDRkQxMTQ2
MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdmVGb3JtYXRDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDA3REVBQjcwQTM2NTU0QTAwQ0EzMEY4IC8qIEluc2VydExpc3RDb21t
YW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNlcnRMaXN0
Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzc2NSw2ICsxMzc3
NCw4IEBACiAJCUQwOTNEMjI1MjE3OTUxRDQwMDMyOTIxNyAvKiBXZWJHUFVSZW5kZXJpbmdDb250
ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA5M0QyMjcyMTc5NTFENDAwMzI5MjE3IC8qIFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDkzRDIyOTIxNzk1NDE2MDAzMjkyMTcgLyogV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJp
bmdDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA5NzI3QjUyMTg3
RjQ0MzAwOTQyRjNBIC8qIEdQVVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHUFVTd2FwQ2hh
aW4uaDsgcGF0aCA9IGNvY29hL0dQVVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlEMDk3MjdCNjIxODdGNDQzMDA5NDJGM0EgLyogR1BVU3dhcENoYWluTWV0YWwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVTd2FwQ2hhaW5NZXRhbC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDBBMjBENTQyMDkyQTBBNjAwRTBDMjU5IC8qIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBU1RDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVBU1RDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQw
QTIwRDU2MjA5MkEwQTYwMEUwQzI1OSAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVNUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQTNBNzMwMTQwNUEz
OTgwMEZCOEVEMyAvKiBSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMzc3Myw2ICsxMzc4NCwxOSBAQAogCQlEMEJDNTQ0ODE0NDNBQzRBMDBF
MTA1REEgLyogQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQwQkQ0RjVBMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9T
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkNvbW1h
bmRJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEJENEY1QjE0MDg4NTBG
MDA2ODM5QjYgLyogRGljdGF0aW9uQ29tbWFuZElPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEaWN0YXRpb25Db21tYW5kSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUQwQzQxOUVCMjE4M0NGQTIwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGluZVN0YWdlRGVz
Y3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlFQzIxODNDRkEyMDA5RUMxREUg
LyogV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5l
U3RhZ2VEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5
RUUyMTgzRDlDODAwOUVDMURFIC8qIFdlYkdQVVNoYWRlclN0YWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkdQVVNoYWRlclN0YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQx
OUVGMjE4M0Q5QzgwMDlFQzFERSAvKiBXZWJHUFVTaGFkZXJTdGFnZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BV
U2hhZGVyU3RhZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlGMDIx
ODNFQjMxMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUQwQzQxOUYxMjE4M0VCMzEwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RjIyMTgzRUZFQzAwOUVDMURFIC8q
IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RDBDNDE5RjMyMTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RjcyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJl
bmRlclBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUY4MjE4NDA0REEwMDlFQzFERSAvKiBX
ZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQ
aXBlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUY5MjE4NDA0
REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVy
UGlwZWxpbmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlGQTIxODQw
RjZDMDA5RUMxREUgLyogR1BVUmVuZGVyUGlwZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR1BVUmVu
ZGVyUGlwZWxpbmUuaDsgcGF0aCA9IGNvY29hL0dQVVJlbmRlclBpcGVsaW5lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUZCMjE4NDBGNkMwMDlFQzFERSAvKiBHUFVSZW5k
ZXJQaXBlbGluZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVuZGVyUGlwZWxp
bmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBDQUFFOTgyMTY4MjRB
NjAwMUM5MUM3IC8qIFdlYk1ldGFsQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJNZXRhbEJ1ZmZlci5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTlBMjE2ODI0QTYwMDFDOTFDNyAv
KiBXZWJNZXRhbENvbW1hbmRCdWZmZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTlCMjE2ODI0QTcwMDFDOTFD
NyAvKiBXZWJNZXRhbENvbW1hbmRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZXRhbENvbW1h
bmRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM3ODIsOCArMTM4MDYs
NiBAQAogCQlEMERBMEJFNDIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEMERBMEJFNTIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQwREEwQkU2MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYkdQVVN3YXBDaGFpbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwREEwQkU4MjE3OTNCNTYwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRDBEQTBCRTkyMTc5M0I1NjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBD
aGFpbkRlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEVEQTc3MjE0M0UzMDNDMDAyOEUzODMgLyog
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
MEVEQTc3MzE0M0UzMDNDMDAyOEUzODMgLyogQ2FjaGVkUmF3UmVzb3VyY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUmF3UmVzb3VyY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDBGRjJBNUIxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2FkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGluZ0xvYWRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTM2NSwzMiArMjUzODcsNjIgQEAKIAkJ
RDAwRjU5M0UyMTZFQ0M0MzAwMEQ3MURCIC8qIHdlYmdwdSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRDA2MTVGRDIyMTdGRkVFMzAwOEE0OEE4IC8qIGNv
Y29hICovLAogCQkJCUQwMEY1OTQxMjE2RUNDN0EwMDBENzFEQiAvKiBET01XaW5kb3dXZWJHUFUu
Y3BwICovLAogCQkJCUQwMEY1OTQwMjE2RUNDN0EwMDBENzFEQiAvKiBET01XaW5kb3dXZWJHUFUu
aCAqLywKIAkJCQlEMDBGNTk0MjIxNkVDQzdBMDAwRDcxREIgLyogRE9NV2luZG93V2ViR1BVLmlk
bCAqLywKKwkJCQlEMDYxNUZDRjIxN0ZGMTg1MDA4QTQ4QTggLyogR1BVRGV2aWNlLmggKi8sCisJ
CQkJRDBDNDE5RkEyMTg0MEY2QzAwOUVDMURFIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggKi8sCisJ
CQkJRDA2MEQ4ODgyMTgyODBDMTAwMzM5MzE4IC8qIEdQVVNoYWRlck1vZHVsZS5oICovLAorCQkJ
CUQwOTcyN0I1MjE4N0Y0NDMwMDk0MkYzQSAvKiBHUFVTd2FwQ2hhaW4uaCAqLywKIAkJCQlEMDBG
NTk0NzIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmNwcCAqLywKIAkJCQlEMDBGNTk0NjIxNkVG
RTU0MDAwRDcxREIgLyogV2ViR1BVLmggKi8sCiAJCQkJRDAwRjU5NDgyMTZFRkU1NDAwMEQ3MURC
IC8qIFdlYkdQVS5pZGwgKi8sCiAJCQkJRDAwRjU5NTAyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQ
VUFkYXB0ZXIuY3BwICovLAogCQkJCUQwMEY1OTRGMjE2RkZBQzIwMDBENzFEQiAvKiBXZWJHUFVB
ZGFwdGVyLmggKi8sCiAJCQkJRDAwRjU5NTEyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0
ZXIuaWRsICovLAotCQkJCUQwMEY1OTRFMjE2RkY2RjAwMDBENzFEQiAvKiBXZWJHUFVBZGFwdGVy
RGVzY3JpcHRvci5oICovLAotCQkJCUQwMEY1OTRDMjE2RkRGOEUwMDBENzFEQiAvKiBXZWJHUFVB
ZGFwdGVyRGVzY3JpcHRvci5pZGwgKi8sCisJCQkJRDAyQzI2OTEyMTgxNDE2RDAwRDgxOEU0IC8q
IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmggKi8sCisJCQkJRDAyQzI2OTIyMTgxNDE2RDAwRDgx
OEU0IC8qIFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmlkbCAqLywKIAkJCQlEMDBGNTk1MzIxNzAx
RDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmNwcCAqLywKIAkJCQlEMDBGNTk1MjIxNzAxRDhD
MDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmggKi8sCiAJCQkJRDAwRjU5NTQyMTcwMUQ4QzAwMEQ3
MURCIC8qIFdlYkdQVURldmljZS5pZGwgKi8sCisJCQkJRDBDNDE5RjAyMTgzRUIzMTAwOUVDMURF
IC8qIFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLywKKwkJCQlEMEM0MTlGMTIxODNF
QjMxMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgKi8sCisJCQkJ
RDBDNDE5RUIyMTgzQ0ZBMjAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9y
LmggKi8sCisJCQkJRDBDNDE5RUMyMTgzQ0ZBMjAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lU3Rh
Z2VEZXNjcmlwdG9yLmlkbCAqLywKIAkJCQlEMDkzRDIyOTIxNzk1NDE2MDAzMjkyMTcgLyogV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgKi8sCiAJCQkJRDA5M0QyMjUyMTc5NTFENDAwMzI5MjE3
IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCAqLywKIAkJCQlEMDkzRDIyNzIxNzk1MUQ0MDAz
MjkyMTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwgKi8sCisJCQkJRDBDNDE5RjgyMTg0
MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lLmNwcCAqLywKKwkJCQlEMEM0MTlG
NzIxODQwNERBMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCAqLywKKwkJCQlEMEM0
MTlGOTIxODQwNERBMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsICovLAorCQkJ
CUQwQzQxOUYyMjE4M0VGRUMwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuaCAqLywKKwkJCQlEMEM0MTlGMzIxODNFRkVDMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmlkbCAqLywKKwkJCQlEMDYxNUZDRDIxN0ZFNUM2MDA4QTQ4QTggLyog
V2ViR1BVU2hhZGVyTW9kdWxlLmNwcCAqLywKKwkJCQlEMDYxNUZDQzIxN0ZFNUM2MDA4QTQ4QTgg
LyogV2ViR1BVU2hhZGVyTW9kdWxlLmggKi8sCisJCQkJRDA2MTVGQ0UyMTdGRTVDNjAwOEE0OEE4
IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5pZGwgKi8sCisJCQkJRDA2MEQ4ODcyMTgyNjk3MDAwMzM5
MzE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLywKKwkJCQlEMDYwRDg4NDIx
ODI1RDVGMDAzMzkzMTggLyogV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwgKi8sCisJ
CQkJRDBDNDE5RUUyMTgzRDlDODAwOUVDMURFIC8qIFdlYkdQVVNoYWRlclN0YWdlLmggKi8sCisJ
CQkJRDBDNDE5RUYyMTgzRDlDODAwOUVDMURFIC8qIFdlYkdQVVNoYWRlclN0YWdlLmlkbCAqLywK
IAkJCQlEMERBMEJFNTIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmNwcCAqLywK
IAkJCQlEMERBMEJFNDIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmggKi8sCiAJ
CQkJRDBEQTBCRTYyMTc5MzBFMjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5pZGwgKi8sCi0J
CQkJRDBEQTBCRTgyMTc5M0I1NjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3Iu
aCAqLywKLQkJCQlEMERBMEJFOTIxNzkzQjU2MDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluRGVz
Y3JpcHRvci5pZGwgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHdlYmdwdTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07CisJCUQwNjE1RkQyMjE3RkZFRTMwMDhBNDhBOCAvKiBjb2NvYSAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRDA2MTVGRDEy
MTdGRjFFMTAwOEE0OEE4IC8qIEdQVURldmljZU1ldGFsLm1tICovLAorCQkJCUQwQzQxOUZCMjE4
NDBGNkMwMDlFQzFERSAvKiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICovLAorCQkJCUQwNjBE
ODg5MjE4MjgwQzEwMDMzOTMxOCAvKiBHUFVTaGFkZXJNb2R1bGVNZXRhbC5tbSAqLywKKwkJCQlE
MDk3MjdCNjIxODdGNDQzMDA5NDJGM0EgLyogR1BVU3dhcENoYWluTWV0YWwubW0gKi8sCisJCQkp
OworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJ
REY5QUZENkYxM0ZDMzFCMDAwMTVGRUI3IC8qIG9iamMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4IDFjOTM4NTllY2MxNjg3NGMwYzA3ZTM3M2IyOTczYzQy
NTA1ZGVhODAuLjY5ODMwZDk2N2Q3ODNhYjdkZDU2ZDdhM2E4ZjQxNTNhMzA2NDU1YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAg
LTE3NiwxMSArMTc2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhXZWJHTFZl
cnRleEFycmF5T2JqZWN0KSBcCiAgICAgbWFjcm8oV2ViR1BVKSBcCiAgICAgbWFjcm8oV2ViR1BV
QWRhcHRlcikgXAotICAgIG1hY3JvKFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yKSBcCiAgICAgbWFj
cm8oV2ViR1BVRGV2aWNlKSBcCiAgICAgbWFjcm8oV2ViR1BVUmVuZGVyaW5nQ29udGV4dCkgXAor
ICAgIG1hY3JvKFdlYkdQVVJlbmRlclBpcGVsaW5lKSBcCisgICAgbWFjcm8oV2ViR1BVU2hhZGVy
U3RhZ2UpIFwKKyAgICBtYWNybyhXZWJHUFVTaGFkZXJNb2R1bGUpIFwKICAgICBtYWNybyhXZWJH
UFVTd2FwQ2hhaW4pIFwKLSAgICBtYWNybyhXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yKSBcCiAg
ICAgbWFjcm8oV2ViTWV0YWxCdWZmZXIpIFwKICAgICBtYWNybyhXZWJNZXRhbENvbW1hbmRCdWZm
ZXIpIFwKICAgICBtYWNybyhXZWJNZXRhbENvbW1hbmRRdWV1ZSkgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TG9nZ2luZy5oCmluZGV4IGYxMDU2N2Q2YzI0MmUwZDA5NDJhMjg1ODBjMGIzOTAwMmI0MDIwMGQu
LjE4NzkyNDYwNWE4YTViNTkxMWNkMjk0MDY2ZDZjYWJjMDRmNmRiNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Mb2dnaW5nLmgKQEAgLTk5LDYgKzk5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IE0oVmlld3BvcnRzKSBcCiAgICAgTShXZWJBdWRpbykgXAogICAgIE0oV2ViR0wpIFwKKyAgICBN
KFdlYkdQVSkgXAogICAgIE0oV2ViTWV0YWwpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2hl
ZWxFdmVudFRlc3RUcmlnZ2VycykgXApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDliNTUyNjkwYWUyMWMyZjM0ODQzM2NhZWVl
ZjEzNjZjZWZlZmJiOTQuLjYyYmZmMjJhMGY1MjI2MjZjYTk0NjgyNTkwNjYyZDkyZDg2ODYwZDQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOC0xMC0zMCAgSnVzdGluIEZhbiAgPGp1c3Rpbl9m
YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEV4cGVyaW1lbnRhbCBwcm90b3R5cGUg
Zm9yIE1TTCBzaGFkZXJzIGFuZCByZW5kZXIgcGlwZWxpbmVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEwODQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNpYyBmdW5jdGlvbmFsaXR5IHRlc3QgZm9y
IHRoZSBuZXdseSBwcm90b3R5cGVkIFdlYkdQVSBmZWF0dXJlcy4KKworICAgICAgICAqIHdlYmdw
dS93ZWJncHUtYmFzaWNzLmh0bWw6IEFkZGVkLgorCiAyMDE4LTEwLTIzICBSeWFuIEhhZGRhZCAg
PHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIyMzcyNjEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1iYXNpY3MuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
MTk0M2YwNzA3NTdjMDkwOGNkOThhOWEwZTIyZWUyYjc1M2NjMzBkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1iYXNpY3MuaHRtbApAQCAtMCwwICsxLDEyOSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0ibGlicmFyeSIgdHlwZT0ieC1zaGFk
ZXIveC1tZXRhbCI+CisgICAgI2luY2x1ZGUgPG1ldGFsX3N0ZGxpYj4KKyAgICAKKyAgICB1c2lu
ZyBuYW1lc3BhY2UgbWV0YWw7CisgICAgCisgICAgc3RydWN0IFZlcnRleAorICAgIHsKKyAgICAg
ICAgZmxvYXQ0IHBvc2l0aW9uIFtbcG9zaXRpb25dXTsKKyAgICB9OworICAgIAorICAgIHZlcnRl
eCBWZXJ0ZXggdmVydGV4X21haW4odWludCB2aWQgW1t2ZXJ0ZXhfaWRdXSkKKyAgICB7CisgICAg
ICAgIFZlcnRleCB2OworICAgICAgICBzd2l0Y2ggKHZpZCkgeworICAgICAgICBjYXNlIDA6Cisg
ICAgICAgICAgICB2LnBvc2l0aW9uID0gZmxvYXQ0KC0uNzUsIC0uNzUsIDAsIDEpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHYucG9zaXRpb24gPSBm
bG9hdDQoLjc1LCAtLjc1LCAwLCAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IDI6CisgICAgICAgICAgICB2LnBvc2l0aW9uID0gZmxvYXQ0KDAsIC43NSwgMCwgMSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHYucG9zaXRpb24g
PSBmbG9hdDQoMCwgMCwgMCwgMSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHY7CisgICAg
fQorICAgIAorICAgIGZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKFZlcnRleCB2ZXJ0ZXhJ
biBbW3N0YWdlX2luXV0pCisgICAgeworICAgICAgICByZXR1cm4gZmxvYXQ0KDEuMCwgMC4wLCAw
LjAsIDEuMCk7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCitp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworCitsZXQgY2FudmFzOworbGV0IGNvbnRleHQ7CitsZXQgYWRhcHRlcjsKK2xldCBkZWZhdWx0
RGV2aWNlOworCitmdW5jdGlvbiBzZXRVcENvbnRleHRzKCkgeworICAgIGNhbnZhcyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29u
dGV4dCgid2ViZ3B1Iik7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICB0ZXN0RmFpbGVkKCJD
b3VsZCBub3QgY3JlYXRlIFdlYkdQVSBjb250ZXh0ISIpOworCisgICAgc2hvdWxkQmVEZWZpbmVk
KHdpbmRvdy53ZWJncHUpOworICAgIHdpbmRvdy53ZWJncHUucmVxdWVzdEFkYXB0ZXIoeyBwb3dl
clByZWZlcmVuY2U6ICJkZWZhdWx0IiB9KS50aGVuKGFkYXB0ZXJfID0+IHsKKyAgICAgICAgaWYg
KCFhZGFwdGVyXykgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBk
ZWZhdWx0IFdlYkdQVUFkYXB0ZXIhIikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBhZGFwdGVyID0gYWRhcHRlcl87CisKKyAgICAgICAgZGVmYXVsdERldmljZSA9IGFk
YXB0ZXIuY3JlYXRlRGV2aWNlKCk7CisgICAgICAgIGlmICghZGVmYXVsdERldmljZSkgeworICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFVEZXZpY2UhIik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBEZWZhdWx0IHRvICJC
OEc4UjhBOFVub3JtIiBmb3JtYXQgZm9yIG5vdy4KKyAgICAgICAgLy8gRklYTUU6IE5PVCBZRVQg
SU4gSURMOiBkZXZpY2UgcHJvcGVydHkKKyAgICAgICAgY29udGV4dC5jb25maWd1cmUoeyBkZXZp
Y2U6IGRlZmF1bHREZXZpY2UsIHdpZHRoOiBjYW52YXMud2lkdGgsIGhlaWdodDogY2FudmFzLmhl
aWdodCB9KTsKKworICAgICAgICBzZXRVcFBpcGVsaW5lKCk7CisgICAgfSkuY2F0Y2goZXJyb3Ig
PT4geworICAgICAgICB0ZXN0RmFpbGVkKCJQb21pc2UgUmVqZWN0aW9uOiBzZWUgY29uc29sZSEi
KTsKKyAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9u
IHNldFVwUGlwZWxpbmUoKSB7CisgICAgbGV0IHNoYWRlckRlc2NyaXB0b3IgPSB7CisgICAgICAg
IGNvZGU6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaWJyYXJ5IikudGV4dAorICAgIH07Cisg
ICAgbGV0IHNoYWRlck1vZHVsZSA9IGRlZmF1bHREZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHNo
YWRlckRlc2NyaXB0b3IpOworICAgIGlmICghc2hhZGVyTW9kdWxlKSB7CisgICAgICAgIHRlc3RG
YWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVU2hhZGVyTW9kdWxlISIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbGV0IHZlcnRleFN0YWdlRGVzY3JpcHRvciA9IHsgCisgICAg
ICAgIG1vZHVsZTogc2hhZGVyTW9kdWxlLCAKKyAgICAgICAgc3RhZ2U6IFdlYkdQVVNoYWRlclN0
YWdlLlZFUlRFWCwgCisgICAgICAgIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhfbWFpbiIgCisgICAgfTsK
KworICAgIGxldCBmcmFnbWVudFN0YWdlRGVzY3JpcHRvciA9IHsKKyAgICAgICAgbW9kdWxlOiBz
aGFkZXJNb2R1bGUsCisgICAgICAgIHN0YWdlOiBXZWJHUFVTaGFkZXJTdGFnZS5GUkFHTUVOVCwK
KyAgICAgICAgZW50cnlQb2ludDogImZyYWdtZW50X21haW4iCisgICAgfTsKKworICAgIGlmICgh
dmVydGV4U3RhZ2VEZXNjcmlwdG9yIHx8ICFmcmFnbWVudFN0YWdlRGVzY3JpcHRvcikgeworICAg
ICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNj
cmlwdG9yISIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGV0IHBpcGVsaW5lRGVz
Y3JpcHRvciA9IHsKKyAgICAgICAgc3RhZ2VzOiBbdmVydGV4U3RhZ2VEZXNjcmlwdG9yLCBmcmFn
bWVudFN0YWdlRGVzY3JpcHRvcl0sCisgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAidHJpYW5n
bGVMaXN0IgorICAgIH07CisKKyAgICBpZiAoIXBpcGVsaW5lRGVzY3JpcHRvcikgeworICAgICAg
ICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciEiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH07CisKKyAgICBsZXQgcmVuZGVyUGlwZWxp
bmUgPSBkZWZhdWx0RGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHBpcGVsaW5lRGVzY3JpcHRv
cik7CisgICAgaWYgKCFyZW5kZXJQaXBlbGluZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3Vs
ZCBub3QgY3JlYXRlIFdlYkdQVVJlbmRlclBpcGVsaW5lISIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cit9CisKK3NldFVwQ29u
dGV4dHMoKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353547</attachid>
            <date>2018-10-31 16:21:17 -0700</date>
            <delta_ts>2018-11-01 17:31:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191084-20181031162117.patch</filename>
            <type>text/plain</type>
            <size>54159</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGExODA5Y2YwODI0ZWI2M2U0NDllNmQ2
ZDRlNjI4ODg3YTNlNTIxMjguLmIwZjhkYTUzZTBmNmM1OTIwZGNkMTkyOTU4MTNhZWViMWExNTY2
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTAtMzEgIEp1c3RpbiBGYW4gIDxqdXN0aW5f
ZmFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBFeHBlcmltZW50YWwgcHJvdG90eXBl
IGZvciBNU0wgc2hhZGVycyBhbmQgcmVuZGVyIHBpcGVsaW5lcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMDg0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGlzYWJsaW5nIFdlYkdQVSBvbiBub24tQ29j
b2EgcGxhdGZvcm1zIGFuZCBpT1MgU2ltdWxhdG9yLgorCisgICAgICAgICogd3RmL1BsYXRmb3Jt
Lmg6CisKIDIwMTgtMTAtMjIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVhbGx5IHByZXZlbnQgUExBVEZPUk0oSU9TKSBmcm9tIGJlaW5nIHVzZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA5ZDRmYTY4MTkyZWE5NjFkYWZhMThkODM1YjQxZWQxMjZhOGU5NTg1Li5hNzE5
N2Y5NzViZDhjYTdkNDI0ZWM0MzY5YjhkNWJhZjVkNjhlOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTAgQEAKKzIwMTgtMTAtMzEgIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4K
KworICAgICAgICBbV2ViR1BVXSBFeHBlcmltZW50YWwgcHJvdG90eXBlIGZvciBNU0wgc2hhZGVy
cyBhbmQgcmVuZGVyIHBpcGVsaW5lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkxMDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQmVnaW4gaW1wbGVtZW50YXRpb24gZm9yIFdlYkdQVURldmljZSBhbmQg
V2ViR1BVU2hhZGVyTW9kdWxlIGFuZCBhc3NvY2lhdGVkIGRlc2NyaXB0b3Igb2JqZWN0cy4KKwor
ICAgICAgICBUZXN0OiB3ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L0dQVURldmljZS5oOgorICAgICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjpw
bGF0Zm9ybURldmljZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVy
TW9kdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpHUFVTaGFkZXJNb2R1bGU6OnBsYXRmb3JtU2hh
ZGVyTW9kdWxlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlIGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNoYWRlck1vZHVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVTaGFkZXJNb2R1bGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVTaGFkZXJNb2R1bGU6OldlYkdQVVNo
YWRlck1vZHVsZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxl
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGw6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdQVVN3YXBDaGFpbjo6Y29uZmlndXJlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVTd2FwQ2hhaW4uaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVURldmlj
ZU1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjpHUFVEZXZpY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BV
RGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BV
U2hhZGVyTW9kdWxlOjpHUFVTaGFkZXJNb2R1bGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVU2hh
ZGVyTW9kdWxlOjpjcmVhdGUpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNv
dXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Mb2dnaW5nLmg6CisKIDIwMTgtMTAtMjMgIEp1c3RpbiBGYW4gIDxqdXN0
aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBSZW5hbWUgb2xkIEdQVSogaW1w
bGVtZW50YXRpb24gZmlsZXMgdG8gR1BVTGVnYWN5KiBmb3IgV2ViTWV0YWwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmlu
ZGV4IDQ2N2I4ZjhlYmM3OTk1YTI3NGM4N2E1MGY5N2UyNGZjNzNmYjEyMWIuLmE5N2ZmZTY0MWM2
N2JhZDFkYjhkZmYyNzRiMjAyYzAwZWU2NzExMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTM4MiwzICsx
MzgyLDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKENBKSAmJiAhUExBVEZPUk0oSU9T
X0ZBTUlMWV9TSU1VTEFUT1IpCiAjZGVmaW5lIFVTRV9JT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdf
U1RPUkUgMQogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKElPU19G
QU1JTFlfU0lNVUxBVE9SKQorI2RlZmluZSBFTkFCTEVfV0VCR1BVIDEKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCAxMjliNmM1NDkzMmY5ZTRlODg0NjZkY2Y5MThjYmQ2ZTE3NDY0MmQ1
Li40ZTkwMWRlMzgxNWE2ZTQyZTI5MTMyMWM4MDExNGIyYTA2ZjA3N2IxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtNDUyLDggKzQ1Miw5IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVT
CiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuaWRsCiAgICAgTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlcmluZ0NvbnRleHQuaWRsCisgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxl
LmlkbAorICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRs
CiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbAotICAgIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaWRsCiAKICAgICBNb2R1bGVzL3dlYnNvY2tl
dHMvQ2xvc2VFdmVudC5pZGwKICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjYzOTBkNDlmYjM5ZDZjNGIyYzQ3NjI2
MDVkMjYwNWZiMmI1YjEwZC4uNTIwYjQxMzc3MmZmMTBkN2UzZWJmZjQ2MTJkM2M3Yjg1MGQ0NjNm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0zNzMsOCArMzczLDkgQEAgSlNf
QklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRh
cHRlckRlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
aW5nQ29udGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hh
ZGVyTW9kdWxlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTd2FwQ2hhaW4uaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVN3YXBDaGFpbkRlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vic29j
a2V0cy9DbG9zZUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnZyL0RPTVdpbmRvd1dl
YlZSLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVE
ZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNmZjFmOTBiMDFhNDBkZTg0OWZhMTFjMTNhMWYzNWVmNjI2MjlkZTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuaApAQCAt
MCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisKKyNpZiBVU0UoTUVUQUwpCitPQkpDX1BST1RPQ09MKE1UTERldmljZSk7CisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBQbGF0Zm9ybURldmljZSA9CisjaWYg
VVNFKE1FVEFMKQorICAgIE1UTERldmljZTsKKyNlbHNlCisgICAgdm9pZDsKKyNlbmRpZgorCitj
bGFzcyBHUFVTaGFkZXJNb2R1bGU7CisKK3N0cnVjdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
OworCitjbGFzcyBHUFVEZXZpY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVEZXZpY2U+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUmVmPEdQVURldmljZT4gY3JlYXRlKCk7CisKKyAgICBSZWY8R1BV
U2hhZGVyTW9kdWxlPiBjcmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ciYmKSBjb25zdDsKKworICAgIFBsYXRmb3JtRGV2aWNlICpwbGF0Zm9ybURldmljZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGxhdGZvcm1EZXZpY2UuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBHUFVE
ZXZpY2UoKTsKKworICAgIFJldGFpblB0cjxQbGF0Zm9ybURldmljZT4gbV9wbGF0Zm9ybURldmlj
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJN
b2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlck1vZHVsZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU3MjA2OGIwNzEyZGZmY2ZkYzczMTY5ZDkzNTU5YzQ5NDc4M2YzOTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJN
b2R1bGUuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNp
ZiBVU0UoTUVUQUwpCitPQkpDX1BST1RPQ09MKE1UTExpYnJhcnkpOworI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVRGV2aWNlOworCitzdHJ1Y3QgR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvcjsKKwordXNpbmcgUGxhdGZvcm1TaGFkZXJNb2R1bGUgPQorI2lmIFVTRShN
RVRBTCkKKyAgICBNVExMaWJyYXJ5OworI2Vsc2UKKyAgICB2b2lkOworI2VuZGlmCisKK2NsYXNz
IEdQVVNoYWRlck1vZHVsZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVNoYWRlck1vZHVsZT4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8R1BVU2hhZGVyTW9kdWxlPiBjcmVhdGUoY29uc3QgR1BV
RGV2aWNlJiwgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYmKTsKKworICAgIFBsYXRmb3JtU2hh
ZGVyTW9kdWxlICpwbGF0Zm9ybVNoYWRlck1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZv
cm1TaGFkZXJNb2R1bGUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBHUFVTaGFkZXJNb2R1bGUo
Y29uc3QgR1BVRGV2aWNlJiwgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYmKTsKKworICAgIFJl
dGFpblB0cjxQbGF0Zm9ybVNoYWRlck1vZHVsZT4gbV9wbGF0Zm9ybVNoYWRlck1vZHVsZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNmZTBhZDVhODdiMzJjNDhhZTM0YmQ3NmQyZjFj
NTk4MWJlN2Q1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaApAQCAtMCwwICsxLDQwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdQVVNo
YWRlck1vZHVsZURlc2NyaXB0b3IgeworICAgIFN0cmluZyBjb2RlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCmluZGV4IGNjZDQ4ZDg1YTdjMjA4
NTg4Njk2OTA4ZWFmOTEwZDE2ZjZhM2EyYTEuLmRjYjdlYTYyYzVhMDcwYjlhNWNkODkzYTEwYzNh
YWVkM2FiNjcwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
RGV2aWNlLmNwcApAQCAtMjgsNiArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNp
bmNsdWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVU2hh
ZGVyTW9kdWxlLmgiCisjaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZjxXZWJHUFVEZXZpY2U+IFdlYkdQVURldmljZTo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFw
dGVyKQpAQCAtMzcsMTAgKzQxLDE3IEBAIFJlZjxXZWJHUFVEZXZpY2U+IFdlYkdQVURldmljZTo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8V2ViR1BVQWRhcHRlCiAKIFdlYkdQ
VURldmljZTo6V2ViR1BVRGV2aWNlKFJlZjxXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIpCiAgICAg
OiBtX2FkYXB0ZXIoV1RGTW92ZShhZGFwdGVyKSkKKyAgICAsIG1fZGV2aWNlKEdQVURldmljZTo6
Y3JlYXRlKCkpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1fYWRhcHRlcik7CisgICAgVU5VU0VEX1BB
UkFNKG1fYWRhcHRlcik7IC8vIEZJWE1FOiBUYWtlIGFkYXB0ZXIgaW50byBhY2NvdW50IHdoZW4g
Y3JlYXRpbmcgbV9kZXZpY2UuCiB9CiAKK1JlZjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVURl
dmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImJiBk
ZXNjcmlwdG9yKSBjb25zdAoreworICAgIHJldHVybiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0
ZShtX2RldmljZS0+Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Ig
eyBkZXNjcmlwdG9yLmNvZGUgfSkpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVURldmljZS5oCmluZGV4IDY4Y2VjMWExN2E4ZTZkZGNlYTRlZWFkYmE2YTVlOWJjZTJh
YjU4OGYuLjY2OTM2ZDI4NjZhYzdkZDc0MWQ4ZmViNjc1YTY1M2M2MzZmNDRiMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCkBAIC0yNywxMiArMjcs
MTggQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNpbmNsdWRlICJHUFVEZXZpY2UuaCIKKwor
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBX
ZWJHUFVBZGFwdGVyOworY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxlOworCitzdHJ1Y3QgV2ViR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVRGV2aWNlIDogcHVibGljIFJl
ZkNvdW50ZWQ8V2ViR1BVRGV2aWNlPiB7CiBwdWJsaWM6CkBAIC00MCwxMCArNDYsMTQgQEAgcHVi
bGljOgogCiAgICAgV2ViR1BVQWRhcHRlciYgYWRhcHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWRh
cHRlci5nZXQoKTsgfQogCisgICAgUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlU2hhZGVy
TW9kdWxlKFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImJikgY29uc3Q7CisKIHByaXZhdGU6
CiAgICAgV2ViR1BVRGV2aWNlKFJlZjxXZWJHUFVBZGFwdGVyPiYmKTsKIAogICAgIFJlZjxXZWJH
UFVBZGFwdGVyPiBtX2FkYXB0ZXI7CisKKyAgICBSZWY8R1BVRGV2aWNlPiBtX2RldmljZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVEZXZpY2UuaWRsCmluZGV4IDA3NWU4MDgzYTg3ODA2YTljOTBlY2QyMjZiNDYx
ZmMzZmVlZTE2YjAuLmQxYTlmMWEyYzljMzNkNTczMDJhZDI5NzQ4NjE4NWNiNmJlMjdjZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbApAQCAt
MzMsNyArMzMsOSBAQAogICAgIC8vIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFVMaW1pdHMgbGlt
aXRzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFVBZGFwdGVyIGFkYXB0ZXI7CiAKLS8q
CisgICAgV2ViR1BVU2hhZGVyTW9kdWxlIGNyZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOworCisvKiBUbyBCZSBJbXBsZW1lbnRlZDoKICAg
ICBXZWJHUFVCdWZmZXIgY3JlYXRlQnVmZmVyKFdlYkdQVUJ1ZmZlckRlc2NyaXB0b3IgZGVzY3Jp
cHRvcik7CiAgICAgV2ViR1BVVGV4dHVyZSBjcmVhdGVUZXh0dXJlKFdlYkdQVVRleHR1cmVEZXNj
cmlwdG9yIGRlc2NyaXB0b3IpOwogICAgIFdlYkdQVVNhbXBsZXIgY3JlYXRlU2FtcGxlcihXZWJH
UFVTYW1wbGVyRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKQEAgLTQ1LDcgKzQ3LDYgQEAKICAgICBX
ZWJHUFVCbGVuZFN0YXRlIGNyZWF0ZUJsZW5kU3RhdGUoV2ViR1BVQmxlbmRTdGF0ZURlc2NyaXB0
b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUgY3JlYXRlRGVwdGhT
dGVuY2lsU3RhdGUoV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGVEZXNjcmlwdG9yIGRlc2NyaXB0b3Ip
OwogICAgIFdlYkdQVUlucHV0U3RhdGUgY3JlYXRlSW5wdXRTdGF0ZShXZWJHUFVJbnB1dFN0YXRl
RGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVTaGFkZXJNb2R1bGUgY3JlYXRlU2hh
ZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAgICAg
V2ViR1BVQXR0YWNobWVudFN0YXRlIGNyZWF0ZUF0dGFjaG1lbnRTdGF0ZShXZWJHUFVBdHRhY2ht
ZW50U3RhdGVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogICAgIFdlYkdQVUNvbXB1dGVQaXBlbGlu
ZSBjcmVhdGVDb21wdXRlUGlwZWxpbmUoV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciBk
ZXNjcmlwdG9yKTsKICAgICBXZWJHUFVSZW5kZXJQaXBlbGluZSBjcmVhdGVSZW5kZXJQaXBlbGlu
ZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45OTRjMmVjYTBhOThiYzVmNmQzNjRkOTM2MDlkZjljZDJhMWM3ZjNkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9k
dWxlLmNwcApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8V2ViR1BVU2hhZGVyTW9kdWxlPiBXZWJHUFVT
aGFkZXJNb2R1bGU6OmNyZWF0ZShSZWY8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVsZSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVTaGFkZXJNb2R1bGUoV1RGTW92ZShtb2R1bGUp
KSk7Cit9CisKK1dlYkdQVVNoYWRlck1vZHVsZTo6V2ViR1BVU2hhZGVyTW9kdWxlKFJlZjxHUFVT
aGFkZXJNb2R1bGU+JiYgbW9kdWxlKQorICAgIDogbV9tb2R1bGUoV1RGTW92ZShtb2R1bGUpKQor
eworICAgIFVOVVNFRF9QQVJBTShtX21vZHVsZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmMzA5ZGJkNWYw
YjYwMjg2NGFiZjMzNWE5ZjEzMTJiOWU2YWE2ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaApAQCAtMCwwICsxLDQ5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisj
aW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJy
YXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGUg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVTaGFkZXJNb2R1bGU+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFdlYkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlKFJlZjxHUFVTaGFkZXJNb2R1bGU+
JiYpOworCitwcml2YXRlOgorICAgIFdlYkdQVVNoYWRlck1vZHVsZShSZWY8R1BVU2hhZGVyTW9k
dWxlPiYmKTsKKworICAgIFJlZjxHUFVTaGFkZXJNb2R1bGU+IG1fbW9kdWxlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY4M2U5NzllNDg3YjRiOGQyYWM2OTdlMDA5YWQ2NjNmN2IwZGZkMWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJN
b2R1bGUuaWRsCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8gaHR0cHM6Ly9naXRodWIu
Y29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWduL3NrZXRjaC53ZWJpZGwKKworWwor
ICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVSwKKyAg
ICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCitdIGludGVyZmFjZSBXZWJHUFVTaGFkZXJNb2R1
bGUgeworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjMyYTk4OWVkNWM1
MDZkZjNhN2RjYjA5MzU1Y2U1MjY4NGMzMDhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCkBAIC0w
LDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJH
UFUpCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdHJ1Y3QgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7CisgICAgU3RyaW5n
IGNvZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmQ3MDdlZDky
YjU1MjQyNmNiNTQxYWVmNDhjOGI1ZWE0ZGE2MzVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwK
QEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2Vi
L2dwdXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAorCitbCisgICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGRpY3Rpb25hcnkg
V2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7CisgICAgLypBcnJheUJ1ZmZlciovIERPTVN0
cmluZyBjb2RlOyAvLyBGSVhNRTogRE9NU3RyaW5nIGZvciBNVEwgcHJvdG90eXBpbmcgb25seS4K
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2Fw
Q2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWlu
LmNwcAppbmRleCA4MzE4YjRmYjdmZmYyNGRkM2ZmZjA4MDAxMjlkOTExOTRiYmQ3M2FhLi4wMzgy
YWU3YmRmYzc1YjVhNTIwOGUzYjVlNzA1YWZlZWFiOWY4ZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAKQEAgLTI4LDEzICsyOCwx
MSBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbkRl
c2NyaXB0b3IuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXZWJHUFVTd2FwQ2hhaW46On5X
ZWJHUFVTd2FwQ2hhaW4oKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViR1BVU3dhcENoYWluOjpjb25m
aWd1cmUoY29uc3QgV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3ZvaWQg
V2ViR1BVU3dhcENoYWluOjpjb25maWd1cmUoY29uc3QgRGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IHsKICAgICByZXNoYXBlKGRlc2NyaXB0b3Iud2lkdGgsIGRlc2NyaXB0b3IuaGVpZ2h0KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFp
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmgKaW5k
ZXggZDJjZjI2MDZjMjgwMTM2NmRiOWEyMWZjN2E2OTUyZmMwMjdjMGRiZC4uZjU2ZDM2MWY4NWQ0
YmJiMDRiNzA2MDkzMDA0Yzg5NGYyZjAzMzg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmgKQEAgLTMxLDEyICszMSwxNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVjdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yOwotCiBj
bGFzcyBXZWJHUFVTd2FwQ2hhaW4gOiBwdWJsaWMgR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250
ZXh0IHsKIHB1YmxpYzoKKyAgICBzdHJ1Y3QgRGVzY3JpcHRvciB7CisgICAgICAgIC8vIEZJWE1F
OiBNb3JlIHRleHR1cmUgcHJvcGVydGllcy4KKyAgICAgICAgdW5zaWduZWQgbG9uZyB3aWR0aDsK
KyAgICAgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQ7CisgICAgfTsKKwogICAgIHZpcnR1YWwgfldl
YkdQVVN3YXBDaGFpbigpID0gMDsKLSAgICB2b2lkIGNvbmZpZ3VyZShjb25zdCBXZWJHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yJik7CisgICAgdm9pZCBjb25maWd1cmUoY29uc3QgRGVzY3JpcHRvciYp
OwogICAgIC8vIEZJWE1FOiBXZWJHUFVUZXh0dXJlIGdldE5leHRUZXh0dXJlKCk7CiAgICAgdm9p
ZCBwcmVzZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVN3YXBDaGFpbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVTd2FwQ2hhaW4uaWRsCmluZGV4IGEwYmRmNzkyZGNhYWExNjlkNGRmZjE2MzViNzcxYjkwNWYy
N2FkZmQuLjk5Y2E5MGU0M2NhNjIzNjhlMWY5YWFlYmExMzQzZmY0M2UyYWNmMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbApAQCAt
MzMsMyArMzMsMTMgQEAKICAgICAvLyBXZWJHUFVUZXh0dXJlIGdldE5leHRUZXh0dXJlKCk7CiAg
ICAgdm9pZCBwcmVzZW50KCk7CiB9OworCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOworCitk
aWN0aW9uYXJ5IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IgeworICAgIC8vIFdlYkdQVVRleHR1
cmVVc2FnZUZsYWdzIHVzYWdlOworICAgIC8vIFdlYkdQVVRleHR1cmVGb3JtYXRFbnVtIGZvcm1h
dDsKKyAgICB1MzIgd2lkdGg7CisgICAgdTMyIGhlaWdodDsKK307CisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3Iu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzE2NTljYTk3N2VkNTYyZjFhNTgwZDg5
NGRjNjkyNjU3OTY1ZjM0OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNj
cmlwdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0cnVjdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIHsKLSAgICAvLyBGSVhNRTogTW9yZSB0
ZXh0dXJlIHByb3BlcnRpZXMuCi0gICAgdW5zaWduZWQgbG9uZyB3aWR0aDsKLSAgICB1bnNpZ25l
ZCBsb25nIGhlaWdodDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1MzY3NTBhOWI2YjViMzE3ZDRlMjIwZDY5ZTAwOGNjZjI0OTk1NzM3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsMzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0vLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1
d2ViL2dwdXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAotCi10eXBlZGVmIHVu
c2lnbmVkIGxvbmcgdTMyOwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJs
ZWRBdFJ1bnRpbWU9V2ViR1BVCi1dIGRpY3Rpb25hcnkgV2ViR1BVU3dhcENoYWluRGVzY3JpcHRv
ciB7Ci0gICAgLy8gV2ViR1BVVGV4dHVyZVVzYWdlRmxhZ3MgdXNhZ2U7Ci0gICAgLy8gV2ViR1BV
VGV4dHVyZUZvcm1hdEVudW0gZm9ybWF0OwotICAgIHUzMiB3aWR0aDsKLSAgICB1MzIgaGVpZ2h0
OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQ
VURldmljZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BV
RGV2aWNlTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ4NTMyNmIzNjJlMWU5NTgxOTQzZWY2MGJlMWFi
MDY4NjQ3MDNiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVURldmljZS5oIgorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworI2ltcG9ydCAiR1BVU2hhZGVyTW9kdWxlLmgiCisjaW1wb3J0ICJHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9yLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisKKyNpbXBvcnQgPE1l
dGFsL01ldGFsLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0dQVURldmljZTo6R1BVRGV2aWNlKCkKK3sKKyAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBtX3BsYXRmb3JtRGV2aWNlID0gYWRvcHROUyhN
VExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCkpOyAvLyBGSVhNRTogVGFrZSBXZWJHUFVQb3dl
clByZWZlcmVuY2UgaW50byBhY2NvdW50LgorCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKKworICAgIGlmICghbV9wbGF0Zm9ybURldmljZSkKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQ
VURldmljZTo6R1BVRGV2aWNlKCk6IFVuYWJsZSB0byBjcmVhdGUgR1BVRGV2aWNlISIpOworICAg
IGVsc2UKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVURldmljZTo6R1BVRGV2aWNlKCk6IE1UTERl
dmljZSBpcyAlcCIsIG1fcGxhdGZvcm1EZXZpY2UuZ2V0KCkpOworfQorCitSZWY8R1BVRGV2aWNl
PiBHUFVEZXZpY2U6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVRGV2
aWNlKCkpOworfQorCitSZWY8R1BVU2hhZGVyTW9kdWxlPiBHUFVEZXZpY2U6OmNyZWF0ZVNoYWRl
ck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKK3sK
KyAgICByZXR1cm4gR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZGVzY3Jp
cHRvcikpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2Ev
R1BVU2hhZGVyTW9kdWxlTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9j
b2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGFjZjhmMmQ1N2NhZTg3
ZjBjYzM4ZDY1OThlNDc5ZTMwYWVkYzQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0KQEAgLTAsMCAr
MSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVU2hh
ZGVyTW9kdWxlLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW1wb3J0ICJHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisKKyNpbXBvcnQgPE1ldGFs
L01ldGFsLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0dQVVNoYWRlck1vZHVsZTo6R1BVU2hhZGVyTW9kdWxlKGNvbnN0IEdQ
VURldmljZSYgZGV2aWNlLCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikK
K3sKKyAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKworICAgIE5TRXJyb3IgKmVycm9yID0g
W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAiY29tLmFwcGxlLldlYktpdC5HUFUiIGNvZGU6MSB1
c2VySW5mbzpuaWxdOworICAgIG1fcGxhdGZvcm1TaGFkZXJNb2R1bGUgPSBhZG9wdE5TKFtkZXZp
Y2UucGxhdGZvcm1EZXZpY2UoKSBuZXdMaWJyYXJ5V2l0aFNvdXJjZTpkZXNjcmlwdG9yLmNvZGUg
b3B0aW9uczpuaWwgZXJyb3I6JmVycm9yXSk7CisgICAgaWYgKCFtX3BsYXRmb3JtU2hhZGVyTW9k
dWxlKQorICAgICAgICBMT0coV2ViR1BVLCAiU2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yOiAlcyIs
IFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKKworICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7Cit9CisKK1JlZjxHUFVTaGFkZXJNb2R1bGU+IEdQVVNoYWRl
ck1vZHVsZTo6Y3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBHUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVT
aGFkZXJNb2R1bGUoZGV2aWNlLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKSk7Cit9CisKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGFlYjY2MmViMmYwMGUwYzJi
ZGNlYjVjN2FhMWZlNTQwYjBjMWJiN2MuLjFmNGYwZThkZWY2OGViMzIzMjI5NTAxM2M1MmRmYTc2
YzFiNjg1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0zMDAsNiArMzAwLDcgQEAgTW9kdWxlcy93ZWJn
cHUvV2ViR1BVLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVURldmljZS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0Nv
bnRleHQuY3BwCitNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwCiAKIE1vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2Vi
VlIuY3BwCkBAIC0zMTgyLDggKzMxODMsOSBAQCBKU1dlYkdQVUFkYXB0ZXIuY3BwCiBKU1dlYkdQ
VUFkYXB0ZXJEZXNjcmlwdG9yLmNwcAogSlNXZWJHUFVEZXZpY2UuY3BwCiBKU1dlYkdQVVJlbmRl
cmluZ0NvbnRleHQuY3BwCitKU1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKK0pTV2ViR1BVU2hhZGVy
TW9kdWxlRGVzY3JpcHRvci5jcHAKIEpTV2ViR1BVU3dhcENoYWluLmNwcAotSlNXZWJHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yLmNwcAogSlNXZWJNZXRhbEJ1ZmZlci5jcHAKIEpTV2ViTWV0YWxDb21t
YW5kQnVmZmVyLmNwcAogSlNXZWJNZXRhbENvbW1hbmRRdWV1ZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDk0ZmYxNTYyNWIzNDhjNDUyYjFiYTcwMzViN2VkODAyMDUyNzk0MzcuLjA0
MzFhYjQyOTk2NDU0ZTIzMTFmM2JkMTVlYWVjYzg3ZWYxMWVjMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dApAQCAtMjcsNiArMjcsOSBAQCBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2lu
UmVwbGFjZW1lbnQubW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQu
Y3BwCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCiAK
K01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tCitNb2R1bGVzL3dlYmdwdS9j
b2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbQorCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3Np
YmlsaXR5T2JqZWN0SU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1t
CiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDZjMmQ3MWVmYzc3MTU3ZGRlM2QzNDRmMmFmZTQ3OTY3MzYxNDZhODMuLjM0M2IwOGQ3OGUy
MWYyNmU4YjU0ODYxYzNjMjI0ZTVlNzZiYTlhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNjc1LDggKzEzNjc1LDYgQEAK
IAkJRDAwRjU5NDYyMTZFRkU1NDAwMEQ3MURCIC8qIFdlYkdQVS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAwRjU5NDcyMTZFRkU1NDAw
MEQ3MURCIC8qIFdlYkdQVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDBGNTk0ODIxNkVGRTU0MDAwRDcxREIgLyogV2Vi
R1BVLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJHUFUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlE
MDBGNTk0QzIxNkZERjhFMDAwRDcxREIgLyogV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRDAwRjU5NEUyMTZGRjZGMDAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwMEY1OTRGMjE2RkZBQzIwMDBENzFEQiAvKiBXZWJHUFVBZGFw
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUFkYXB0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRDAwRjU5NTAyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVQWRhcHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQwMEY1OTUxMjE2RkZBQzIwMDBENzFEQiAvKiBXZWJHUFVBZGFwdGVyLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJHUFVBZGFwdGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEzNjg1LDYgKzEzNjgzLDggQEAKIAkJRDAwRjU5NTQyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQ
VURldmljZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVRGV2aWNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRDAxQTI3QUIxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BhY2VTcGxpdFN0cmluZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMUEyN0FDMTBDOUJGRDgwMDAyNkE0
MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNwYWNlU3BsaXRTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDAyQzI2
OTEyMTgxNDE2RDAwRDgxOEU0IC8qIFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUQwMkMyNjkyMjE4MTQxNkQwMEQ4MThFNCAvKiBXZWJHUFVBZGFwdGVyRGVzY3JpcHRv
ci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMDJGODU0RTIxNjgyQTRBMDA4OEVFNzQgLyogV2ViTWV0YWxDb21tYW5k
UXVldWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZFF1ZXVlLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDAyRjg1NTAyMTY4MkE1NjAwODhFRTc0IC8qIFdlYk1ldGFsQ29tcHV0
ZUNvbW1hbmRFbmNvZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJNZXRhbENvbXB1
dGVDb21tYW5kRW5jb2Rlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMkY4
NTUxMjE2ODJBNTYwMDg4RUU3NCAvKiBXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3Rh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNzU0LDYgKzEzNzU0LDE1IEBA
CiAJCUQwNTczRDQyMjE3RUI4MUUwMEQxQkU5MSAvKiBHUFVMZWdhY3lUZXh0dXJlTWV0YWwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lUZXh0dXJl
TWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNUNFRDI3MEE0MEJCMkMw
MEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZvcm1hdEJsb2NrQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQwNUNFRDI4MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1h
bmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1hdEJsb2NrQ29tbWFu
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDYwRDg4NDIxODI1RDVGMDAzMzkz
MTggLyogV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU2hhZGVy
TW9kdWxlRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwNjBE
ODg3MjE4MjY5NzAwMDMzOTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRDA2MEQ4ODgyMTgyODBDMTAwMzM5MzE4IC8qIEdQVVNoYWRlck1v
ZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRDA2MEQ4ODkyMTgyODBDMTAwMzM5MzE4IC8qIEdQVVNoYWRlck1vZHVs
ZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxlTWV0YWwubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwNjE1RkNDMjE3RkU1QzYwMDhBNDhBOCAv
KiBXZWJHUFVTaGFkZXJNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVU2hhZGVyTW9kdWxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwNjE1RkNEMjE3RkU1QzYwMDhBNDhB
OCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVU2hh
ZGVyTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA2MTVGQ0UyMTdG
RTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU2hhZGVy
TW9kdWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA2MTVGQ0YyMTdGRjE4
NTAwOEE0OEE4IC8qIEdQVURldmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVEZXZpY2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA2MTVGRDEyMTdGRjFFMTAwOEE0OEE4IC8qIEdQ
VURldmljZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVRGV2aWNlTWV0YWwubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNkMwRDhEMENGRDExNDYwMDY1RjQzRiAv
KiBSZW1vdmVGb3JtYXRDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW92ZUZvcm1hdENvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2
QzBEOEUwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwN0RFQUI3MEEzNjU1NEEwMENBMzBGOCAvKiBJ
bnNlcnRMaXN0Q29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zZXJ0TGlzdENvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTM3NjUsNiArMTM3NzQsNyBAQAogCQlEMDkzRDIyNTIxNzk1MUQ0MDAzMjkyMTcgLyogV2ViR1BV
UmVuZGVyaW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJpbmdDb250ZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwOTNEMjI3MjE3OTUxRDQwMDMyOTIx
NyAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJpbmdDb250
ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA5M0QyMjkyMTc5NTQxNjAw
MzI5MjE3IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUQwOTcyN0MyMjE4QTQ3MjkwMDk0MkYzQSAvKiBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDBBMjBENTQyMDkyQTBBNjAwRTBDMjU5IC8qIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBU1RDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVBU1RDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQw
QTIwRDU2MjA5MkEwQTYwMEUwQzI1OSAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVNUQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQTNBNzMwMTQwNUEz
OTgwMEZCOEVEMyAvKiBSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMzc4Miw4ICsxMzc5Miw2IEBACiAJCUQwREEwQkU0MjE3OTMwRTIwMDdG
RTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVU3dhcENoYWlu
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwREEwQkU1MjE3OTMwRTIwMDdGRTJB
QyAvKiBXZWJHUFVTd2FwQ2hhaW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVU3dhcENo
YWluLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBEQTBCRTYyMTc5MzBFMjAw
N0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU3dhcENoYWluLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDBEQTBCRTgyMTc5M0I1NjAwN0ZFMkFDIC8q
IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVU3dhcENo
YWluRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMERBMEJFOTIx
NzkzQjU2MDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
R1BVU3dhcENoYWluRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUQwRURBNzcyMTQzRTMwM0MwMDI4RTM4MyAvKiBDYWNoZWRSYXdSZXNvdXJjZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRSYXdSZXNvdXJjZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRURBNzczMTQzRTMwM0MwMDI4RTM4MyAvKiBD
YWNoZWRSYXdSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNo
ZWRSYXdSZXNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEZGMkE1QjEx
RjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQaW5nTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI1MzY1LDMyICsyNTM3Myw0OCBAQAogCQlEMDBGNTkzRTIxNkVDQzQzMDAwRDcxREIgLyog
d2ViZ3B1ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlE
MDYxNUZEMjIxN0ZGRUUzMDA4QTQ4QTggLyogY29jb2EgKi8sCiAJCQkJRDAwRjU5NDEyMTZFQ0M3
QTAwMEQ3MURCIC8qIERPTVdpbmRvd1dlYkdQVS5jcHAgKi8sCiAJCQkJRDAwRjU5NDAyMTZFQ0M3
QTAwMEQ3MURCIC8qIERPTVdpbmRvd1dlYkdQVS5oICovLAogCQkJCUQwMEY1OTQyMjE2RUNDN0Ew
MDBENzFEQiAvKiBET01XaW5kb3dXZWJHUFUuaWRsICovLAorCQkJCUQwNjE1RkNGMjE3RkYxODUw
MDhBNDhBOCAvKiBHUFVEZXZpY2UuaCAqLywKKwkJCQlEMDYwRDg4ODIxODI4MEMxMDAzMzkzMTgg
LyogR1BVU2hhZGVyTW9kdWxlLmggKi8sCisJCQkJRDA5NzI3QzIyMThBNDcyOTAwOTQyRjNBIC8q
IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLywKIAkJCQlEMDBGNTk0NzIxNkVGRTU0MDAw
RDcxREIgLyogV2ViR1BVLmNwcCAqLywKIAkJCQlEMDBGNTk0NjIxNkVGRTU0MDAwRDcxREIgLyog
V2ViR1BVLmggKi8sCiAJCQkJRDAwRjU5NDgyMTZFRkU1NDAwMEQ3MURCIC8qIFdlYkdQVS5pZGwg
Ki8sCiAJCQkJRDAwRjU5NTAyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXIuY3BwICov
LAogCQkJCUQwMEY1OTRGMjE2RkZBQzIwMDBENzFEQiAvKiBXZWJHUFVBZGFwdGVyLmggKi8sCiAJ
CQkJRDAwRjU5NTEyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXIuaWRsICovLAotCQkJ
CUQwMEY1OTRFMjE2RkY2RjAwMDBENzFEQiAvKiBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvci5oICov
LAotCQkJCUQwMEY1OTRDMjE2RkRGOEUwMDBENzFEQiAvKiBXZWJHUFVBZGFwdGVyRGVzY3JpcHRv
ci5pZGwgKi8sCisJCQkJRDAyQzI2OTEyMTgxNDE2RDAwRDgxOEU0IC8qIFdlYkdQVUFkYXB0ZXJE
ZXNjcmlwdG9yLmggKi8sCisJCQkJRDAyQzI2OTIyMTgxNDE2RDAwRDgxOEU0IC8qIFdlYkdQVUFk
YXB0ZXJEZXNjcmlwdG9yLmlkbCAqLywKIAkJCQlEMDBGNTk1MzIxNzAxRDhDMDAwRDcxREIgLyog
V2ViR1BVRGV2aWNlLmNwcCAqLywKIAkJCQlEMDBGNTk1MjIxNzAxRDhDMDAwRDcxREIgLyogV2Vi
R1BVRGV2aWNlLmggKi8sCiAJCQkJRDAwRjU5NTQyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURl
dmljZS5pZGwgKi8sCiAJCQkJRDA5M0QyMjkyMTc5NTQxNjAwMzI5MjE3IC8qIFdlYkdQVVJlbmRl
cmluZ0NvbnRleHQuY3BwICovLAogCQkJCUQwOTNEMjI1MjE3OTUxRDQwMDMyOTIxNyAvKiBXZWJH
UFVSZW5kZXJpbmdDb250ZXh0LmggKi8sCiAJCQkJRDA5M0QyMjcyMTc5NTFENDAwMzI5MjE3IC8q
IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsICovLAorCQkJCUQwNjE1RkNEMjE3RkU1QzYwMDhB
NDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuY3BwICovLAorCQkJCUQwNjE1RkNDMjE3RkU1QzYw
MDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuaCAqLywKKwkJCQlEMDYxNUZDRTIxN0ZFNUM2
MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCAqLywKKwkJCQlEMDYwRDg4NzIxODI2
OTcwMDAzMzkzMTggLyogV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovLAorCQkJCUQw
NjBEODg0MjE4MjVENUYwMDMzOTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlk
bCAqLywKIAkJCQlEMERBMEJFNTIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmNw
cCAqLywKIAkJCQlEMERBMEJFNDIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmgg
Ki8sCiAJCQkJRDBEQTBCRTYyMTc5MzBFMjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5pZGwg
Ki8sCi0JCQkJRDBEQTBCRTgyMTc5M0I1NjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbkRlc2Ny
aXB0b3IuaCAqLywKLQkJCQlEMERBMEJFOTIxNzkzQjU2MDA3RkUyQUMgLyogV2ViR1BVU3dhcENo
YWluRGVzY3JpcHRvci5pZGwgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHdlYmdwdTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUQwNjE1RkQyMjE3RkZFRTMwMDhBNDhBOCAvKiBj
b2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRDA2
MTVGRDEyMTdGRjFFMTAwOEE0OEE4IC8qIEdQVURldmljZU1ldGFsLm1tICovLAorCQkJCUQwNjBE
ODg5MjE4MjgwQzEwMDMzOTMxOCAvKiBHUFVTaGFkZXJNb2R1bGVNZXRhbC5tbSAqLywKKwkJCSk7
CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlE
RjlBRkQ2RjEzRkMzMUIwMDAxNUZFQjcgLyogb2JqYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJD
b3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggMWM5Mzg1OWVjYzE2ODc0YzBjMDdlMzczYjI5NzNjNDI1
MDVkZWE4MC4uMjhiMGU4NTBkMDE0MTZlMTA4YTE5YTE3MjA4MGIzZDI5ODUyMmVmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAt
MTc2LDExICsxNzYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKFdlYkdMVmVy
dGV4QXJyYXlPYmplY3QpIFwKICAgICBtYWNybyhXZWJHUFUpIFwKICAgICBtYWNybyhXZWJHUFVB
ZGFwdGVyKSBcCi0gICAgbWFjcm8oV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IpIFwKICAgICBtYWNy
byhXZWJHUFVEZXZpY2UpIFwKICAgICBtYWNybyhXZWJHUFVSZW5kZXJpbmdDb250ZXh0KSBcCisg
ICAgbWFjcm8oV2ViR1BVU2hhZGVyTW9kdWxlKSBcCiAgICAgbWFjcm8oV2ViR1BVU3dhcENoYWlu
KSBcCi0gICAgbWFjcm8oV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvcikgXAogICAgIG1hY3JvKFdl
Yk1ldGFsQnVmZmVyKSBcCiAgICAgbWFjcm8oV2ViTWV0YWxDb21tYW5kQnVmZmVyKSBcCiAgICAg
bWFjcm8oV2ViTWV0YWxDb21tYW5kUXVldWUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaApp
bmRleCBmMTA1NjdkNmMyNDJlMGQwOTQyYTI4NTgwYzBiMzkwMDJiNDAyMDBkLi4xODc5MjQ2MDVh
OGE1YjU5MTFjZDI5NDA2NmQ2Y2FiYzA0ZjZkYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2lu
Zy5oCkBAIC05OSw2ICs5OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKFZpZXdwb3J0
cykgXAogICAgIE0oV2ViQXVkaW8pIFwKICAgICBNKFdlYkdMKSBcCisgICAgTShXZWJHUFUpIFwK
ICAgICBNKFdlYk1ldGFsKSBcCiAgICAgTShXZWJSVEMpIFwKICAgICBNKFdoZWVsRXZlbnRUZXN0
VHJpZ2dlcnMpIFwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA5YjU1MjY5MGFlMjFjMmYzNDg0MzNjYWVlZWYxMzY2Y2VmZWZi
Yjk0Li5mNmIwZTczMmZiYzZiODYzOTI2NGFmNGJmODExOGE0NzA5N2I4ZmM1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTgtMTAtMzEgIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNv
bT4KKworICAgICAgICBbV2ViR1BVXSBFeHBlcmltZW50YWwgcHJvdG90eXBlIGZvciBNU0wgc2hh
ZGVycyBhbmQgcmVuZGVyIHBpcGVsaW5lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sOiBBZGRlZC4KKwog
MjAxOC0xMC0yMyAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM3MjYxLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvd2ViZ3B1L3dlYmdwdS1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93ZWJncHUt
YmFzaWNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBlNWY1NmEwNjk5YTE4ZDUxMjU1ZTUwYjViNTMwYmU5
YTUyNzI5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS93ZWJncHUtYmFz
aWNzLmh0bWwKQEAgLTAsMCArMSw5MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBp
ZD0ibGlicmFyeSIgdHlwZT0ieC1zaGFkZXIveC1tZXRhbCI+CisgICAgI2luY2x1ZGUgPG1ldGFs
X3N0ZGxpYj4KKyAgICAKKyAgICB1c2luZyBuYW1lc3BhY2UgbWV0YWw7CisgICAgCisgICAgc3Ry
dWN0IFZlcnRleAorICAgIHsKKyAgICAgICAgZmxvYXQ0IHBvc2l0aW9uIFtbcG9zaXRpb25dXTsK
KyAgICB9OworICAgIAorICAgIHZlcnRleCBWZXJ0ZXggdmVydGV4X21haW4odWludCB2aWQgW1t2
ZXJ0ZXhfaWRdXSkKKyAgICB7CisgICAgICAgIFZlcnRleCB2OworICAgICAgICBzd2l0Y2ggKHZp
ZCkgeworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICB2LnBvc2l0aW9uID0gZmxvYXQ0KC0u
NzUsIC0uNzUsIDAsIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMToKKyAg
ICAgICAgICAgIHYucG9zaXRpb24gPSBmbG9hdDQoLjc1LCAtLjc1LCAwLCAxKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICB2LnBvc2l0aW9uID0gZmxv
YXQ0KDAsIC43NSwgMCwgMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHYucG9zaXRpb24gPSBmbG9hdDQoMCwgMCwgMCwgMSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHY7CisgICAgfQorICAgIAorICAgIGZyYWdtZW50IGZsb2F0NCBmcmFn
bWVudF9tYWluKFZlcnRleCB2ZXJ0ZXhJbiBbW3N0YWdlX2luXV0pCisgICAgeworICAgICAgICBy
ZXR1cm4gZmxvYXQ0KDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0PgorJ3VzZSBzdHJpY3QnOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgd2luZG93
LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCitsZXQgY2FudmFzOworbGV0IGNvbnRleHQ7Cits
ZXQgYWRhcHRlcjsKK2xldCBkZWZhdWx0RGV2aWNlOworCitmdW5jdGlvbiBzZXRVcENvbnRleHRz
KCkgeworICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAg
IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ3B1Iik7CisgICAgaWYgKCFjb250ZXh0
KQorICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVSBjb250ZXh0ISIp
OworCisgICAgc2hvdWxkQmVEZWZpbmVkKHdpbmRvdy53ZWJncHUpOworICAgIHdpbmRvdy53ZWJn
cHUucmVxdWVzdEFkYXB0ZXIoKS50aGVuKGFkYXB0ZXJfID0+IHsKKyAgICAgICAgaWYgKCFhZGFw
dGVyXykgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBkZWZhdWx0
IFdlYkdQVUFkYXB0ZXIhIikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBhZGFwdGVyID0gYWRhcHRlcl87CisKKyAgICAgICAgZGVmYXVsdERldmljZSA9IGFkYXB0ZXIu
Y3JlYXRlRGV2aWNlKCk7CisgICAgICAgIGlmICghZGVmYXVsdERldmljZSkgeworICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFVEZXZpY2UhIik7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzZXRVcFNoYWRlcnMoKTsKKyAgICB9
LCBlcnJvciA9PiB7CisgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTsKKyAgICB9KTsKK30KKwor
ZnVuY3Rpb24gc2V0VXBTaGFkZXJzKCkgeworICAgIGxldCBzaGFkZXJEZXNjcmlwdG9yID0gewor
ICAgICAgICBjb2RlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGlicmFyeSIpLnRleHQKKyAg
ICB9OworICAgIGxldCBzaGFkZXJNb2R1bGUgPSBkZWZhdWx0RGV2aWNlLmNyZWF0ZVNoYWRlck1v
ZHVsZShzaGFkZXJkZXNjcmlwdG9yKTsKKyAgICBpZiAoIXNoYWRlck1vZHVsZSkgeworICAgICAg
ICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVVNoYWRlck1vZHVsZSEiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KK30KKworc2V0VXBDb250ZXh0cygpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353669</attachid>
            <date>2018-11-01 17:31:39 -0700</date>
            <delta_ts>2018-11-01 18:41:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191084-20181101173138.patch</filename>
            <type>text/plain</type>
            <size>57839</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGExODA5Y2YwODI0ZWI2M2U0NDllNmQ2
ZDRlNjI4ODg3YTNlNTIxMjguLmIwZjhkYTUzZTBmNmM1OTIwZGNkMTkyOTU4MTNhZWViMWExNTY2
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTAtMzEgIEp1c3RpbiBGYW4gIDxqdXN0aW5f
ZmFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBFeHBlcmltZW50YWwgcHJvdG90eXBl
IGZvciBNU0wgc2hhZGVycyBhbmQgcmVuZGVyIHBpcGVsaW5lcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMDg0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGlzYWJsaW5nIFdlYkdQVSBvbiBub24tQ29j
b2EgcGxhdGZvcm1zIGFuZCBpT1MgU2ltdWxhdG9yLgorCisgICAgICAgICogd3RmL1BsYXRmb3Jt
Lmg6CisKIDIwMTgtMTAtMjIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVhbGx5IHByZXZlbnQgUExBVEZPUk0oSU9TKSBmcm9tIGJlaW5nIHVzZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA5ZDRmYTY4MTkyZWE5NjFkYWZhMThkODM1YjQxZWQxMjZhOGU5NTg1Li5hNzE5
N2Y5NzViZDhjYTdkNDI0ZWM0MzY5YjhkNWJhZjVkNjhlOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTAgQEAKKzIwMTgtMTAtMzEgIEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4K
KworICAgICAgICBbV2ViR1BVXSBFeHBlcmltZW50YWwgcHJvdG90eXBlIGZvciBNU0wgc2hhZGVy
cyBhbmQgcmVuZGVyIHBpcGVsaW5lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkxMDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQmVnaW4gaW1wbGVtZW50YXRpb24gZm9yIFdlYkdQVURldmljZSBhbmQg
V2ViR1BVU2hhZGVyTW9kdWxlIGFuZCBhc3NvY2lhdGVkIGRlc2NyaXB0b3Igb2JqZWN0cy4KKwor
ICAgICAgICBUZXN0OiB3ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L0dQVURldmljZS5oOgorICAgICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjpw
bGF0Zm9ybURldmljZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVy
TW9kdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpHUFVTaGFkZXJNb2R1bGU6OnBsYXRmb3JtU2hh
ZGVyTW9kdWxlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6V2ViR1BVRGV2aWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlIGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaDoKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNoYWRlck1vZHVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVTaGFkZXJNb2R1bGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVTaGFkZXJNb2R1bGU6OldlYkdQVVNo
YWRlck1vZHVsZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxl
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGw6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdQVVN3YXBDaGFpbjo6Y29uZmlndXJlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVTd2FwQ2hhaW4uaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVURldmlj
ZU1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjpHUFVEZXZpY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BV
RGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BV
U2hhZGVyTW9kdWxlOjpHUFVTaGFkZXJNb2R1bGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVU2hh
ZGVyTW9kdWxlOjpjcmVhdGUpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNv
dXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Mb2dnaW5nLmg6CisKIDIwMTgtMTAtMjMgIEp1c3RpbiBGYW4gIDxqdXN0
aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBSZW5hbWUgb2xkIEdQVSogaW1w
bGVtZW50YXRpb24gZmlsZXMgdG8gR1BVTGVnYWN5KiBmb3IgV2ViTWV0YWwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmlu
ZGV4IDQ2N2I4ZjhlYmM3OTk1YTI3NGM4N2E1MGY5N2UyNGZjNzNmYjEyMWIuLmE5N2ZmZTY0MWM2
N2JhZDFkYjhkZmYyNzRiMjAyYzAwZWU2NzExMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTM4MiwzICsx
MzgyLDcgQEAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKENBKSAmJiAhUExBVEZPUk0oSU9T
X0ZBTUlMWV9TSU1VTEFUT1IpCiAjZGVmaW5lIFVTRV9JT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdf
U1RPUkUgMQogI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKElPU19G
QU1JTFlfU0lNVUxBVE9SKQorI2RlZmluZSBFTkFCTEVfV0VCR1BVIDEKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCAxMjliNmM1NDkzMmY5ZTRlODg0NjZkY2Y5MThjYmQ2ZTE3NDY0MmQ1
Li40ZTkwMWRlMzgxNWE2ZTQyZTI5MTMyMWM4MDExNGIyYTA2ZjA3N2IxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtNDUyLDggKzQ1Miw5IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVT
CiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuaWRsCiAgICAgTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlcmluZ0NvbnRleHQuaWRsCisgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxl
LmlkbAorICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRs
CiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbAotICAgIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaWRsCiAKICAgICBNb2R1bGVzL3dlYnNvY2tl
dHMvQ2xvc2VFdmVudC5pZGwKICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjYzOTBkNDlmYjM5ZDZjNGIyYzQ3NjI2
MDVkMjYwNWZiMmI1YjEwZC4uNTIwYjQxMzc3MmZmMTBkN2UzZWJmZjQ2MTJkM2M3Yjg1MGQ0NjNm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0zNzMsOCArMzczLDkgQEAgSlNf
QklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRh
cHRlckRlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
aW5nQ29udGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hh
ZGVyTW9kdWxlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTd2FwQ2hhaW4uaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVN3YXBDaGFpbkRlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vic29j
a2V0cy9DbG9zZUV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnZyL0RPTVdpbmRvd1dl
YlZSLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVE
ZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNhNzY4MGJjZTYzMmYzYzhhYTQwZGRlYTFmNmM3ZjAxOWUyZWU5ZTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuaApAQCAt
MCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgRU5BQkxFKFdFQkdQVSkKK09C
SkNfUFJPVE9DT0woTVRMRGV2aWNlKTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
KyNpZiBVU0UoTUVUQUwpCit1c2luZyBQbGF0Zm9ybURldmljZSA9IE1UTERldmljZTsKK3VzaW5n
IFBsYXRmb3JtRGV2aWNlU21hcnRQdHIgPSBSZXRhaW5QdHI8TVRMRGV2aWNlPjsKKyNlbHNlCit1
c2luZyBQbGF0Zm9ybURldmljZSA9IHZvaWQ7Cit1c2luZyBQbGF0Zm9ybURldmljZVNtYXJ0UHRy
ID0gUmVmUHRyPHZvaWQ+OworI2VuZGlmCisKK2NsYXNzIEdQVVNoYWRlck1vZHVsZTsKKworc3Ry
dWN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3I7CisKK2NsYXNzIEdQVURldmljZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPEdQVURldmljZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8R1BV
RGV2aWNlPiBjcmVhdGUoKTsKKworICAgIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZVNo
YWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYpIGNvbnN0OworCisgICAgUGxh
dGZvcm1EZXZpY2UgKnBsYXRmb3JtRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURl
dmljZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIEdQVURldmljZShQbGF0Zm9ybURldmljZVNt
YXJ0UHRyJiYpOworCisgICAgUGxhdGZvcm1EZXZpY2VTbWFydFB0ciBtX3BsYXRmb3JtRGV2aWNl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlck1v
ZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyTW9kdWxlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmRmMzAyMzdmYmRkMjljMjY5OGEzMTJiZDk2YTk2YmE2MWZiNGZlZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlck1v
ZHVsZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBVU0UoTUVU
QUwpCitPQkpDX1BST1RPQ09MKE1UTExpYnJhcnkpOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgR1BVRGV2aWNlOworCitzdHJ1Y3QgR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvcjsKKworI2lmIFVTRShNRVRBTCkKK3VzaW5nIFBsYXRmb3JtU2hhZGVyTW9kdWxlID0gTVRM
TGlicmFyeTsKK3VzaW5nIFBsYXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQdHIgPSBSZXRhaW5QdHI8
TVRMTGlicmFyeT47CisjZWxzZQordXNpbmcgUGxhdGZvcm1TaGFkZXJNb2R1bGUgPSB2b2lkOwor
dXNpbmcgUGxhdGZvcm1TaGFkZXJNb2R1bGVTbWFydFB0ciA9IFJlZlB0cjx2b2lkPjsKKyNlbmRp
ZgorCitjbGFzcyBHUFVTaGFkZXJNb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVTaGFkZXJN
b2R1bGU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gY3Jl
YXRlKGNvbnN0IEdQVURldmljZSYsIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImJik7CisKKyAg
ICBQbGF0Zm9ybVNoYWRlck1vZHVsZSAqcGxhdGZvcm1TaGFkZXJNb2R1bGUoKSBjb25zdCB7IHJl
dHVybiBtX3BsYXRmb3JtU2hhZGVyTW9kdWxlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgR1BV
U2hhZGVyTW9kdWxlKFBsYXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQdHImJik7CisKKyAgICBQbGF0
Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyIG1fcGxhdGZvcm1TaGFkZXJNb2R1bGU7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjZmUwYWQ1YTg3YjMyYzQ4YWUzNGJkNzZkMmYxYzU5ODFi
ZTdkNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yIHsKKyAgICBTdHJpbmcgY29kZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVLmNwcAppbmRleCBiNzQ1MTg4MmFkMjMwOWQ3ODg5YTRhNjcxNzdlMzRk
NGM1ZjI2YmE1Li4zZDE1NGFjNWEyMWFlNjFjNjU3YTMwMGZhZDk2MzZiYTBkODNkOTA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKQEAgLTM5LDcgKzM5LDExIEBA
IFJlZjxXZWJHUFU+IFdlYkdQVTo6Y3JlYXRlKCkKIAogdm9pZCBXZWJHUFU6OnJlcXVlc3RBZGFw
dGVyKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXZWJHUFVBZGFw
dGVyUHJvbWlzZSYmIGRlZmVycmVkKSBjb25zdAogewotICAgIGRlZmVycmVkLnJlc29sdmUoV2Vi
R1BVQWRhcHRlcjo6Y3JlYXRlKGRlc2NyaXB0b3IpKTsKKyAgICBhdXRvIGFkYXB0ZXIgPSBXZWJH
UFVBZGFwdGVyOjpjcmVhdGUoZGVzY3JpcHRvcik7CisgICAgaWYgKCFhZGFwdGVyKQorICAgICAg
ICBkZWZlcnJlZC5yZWplY3QoKTsKKworICAgIGRlZmVycmVkLnJlc29sdmUoKmFkYXB0ZXIpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCmluZGV4IDZkZjQ1ZTFiZWQ2MjRjYjU5OGIyOThhZGE5
MjY1MjIwNTJiMWZmZjcuLjVkNTEyMTAxNjE1MWQxNmRlMTY0NTM2MjFlMTI1MzIyMWM1NDRlY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3Bw
CkBAIC0zNCw5ICszNCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJHUFVB
ZGFwdGVyPiBXZWJHUFVBZGFwdGVyOjpjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpCitSZWZQdHI8V2ViR1BVQWRhcHRlcj4gV2ViR1BVQWRhcHRlcjo6Y3Jl
YXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYkdQVUFkYXB0ZXIoZGVzY3JpcHRvcikpOworICAgIC8vIEZJ
WE1FOiBWYWxpZGF0aW9uIG9uIGRlc2NyaXB0b3IuCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKIH0KIAogV2ViR1BVQWRhcHRlcjo6V2ViR1BVQWRh
cHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKQEAgLTQ1LDcg
KzQ2LDcgQEAgV2ViR1BVQWRhcHRlcjo6V2ViR1BVQWRhcHRlcihjb25zdCBXZWJHUFVBZGFwdGVy
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKICAgICBVTlVTRURfUEFSQU0obV9kZXNjcmlwdG9yKTsK
IH0KIAotUmVmPFdlYkdQVURldmljZT4gV2ViR1BVQWRhcHRlcjo6Y3JlYXRlRGV2aWNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCitSZWZQdHI8V2ViR1BVRGV2aWNlPiBXZWJHUFVB
ZGFwdGVyOjpjcmVhdGVEZXZpY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsK
ICAgICByZXR1cm4gV2ViR1BVRGV2aWNlOjpjcmVhdGUoY29udGV4dCwgKnRoaXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5oCmluZGV4IGRhYTg1
MTFjYzg4YjI1MWM1OWJlYzllZGFlZGFmYjQyMmMwOTk3ZDEuLmNjN2U1MDk0NDk3ODUwNzRlYjE0
MzRlOWM2YjQ3YTE0YzRlYjI3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVBZGFwdGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQog
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsOSArMzksOSBAQCBzdHJ1Y3QgV2ViR1BVQWRh
cHRlckRlc2NyaXB0b3I7CiAKIGNsYXNzIFdlYkdQVUFkYXB0ZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJHUFVBZGFwdGVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVBZGFwdGVy
PiBjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgUmVm
UHRyPFdlYkdQVUFkYXB0ZXI+IGNyZWF0ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYp
OwogCi0gICAgUmVmPFdlYkdQVURldmljZT4gY3JlYXRlRGV2aWNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKTsKKyAgICBSZWZQdHI8V2ViR1BVRGV2aWNlPiBjcmVhdGVEZXZpY2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpOwogCiBwcml2YXRlOgogICAgIFdlYkdQVUFkYXB0ZXIoY29uc3QgV2Vi
R1BVQWRhcHRlckRlc2NyaXB0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVEZXZpY2UuY3BwCmluZGV4IGNjZDQ4ZDg1YTdjMjA4NTg4Njk2OTA4ZWFmOTEwZDE2
ZjZhM2EyYTEuLjE3ZDZlMDZiYjliZWMyMWVmNTZhNTQ5ZTlhNzUzOWIzMjNmZWY1ZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApAQCAtMjgs
MTkgKzI4LDM0IEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisjaW5jbHVkZSAiR1BVU2hhZGVy
TW9kdWxlRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZS5oIgorI2lu
Y2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCIKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZWY8V2ViR1BVRGV2aWNlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgUmVmPFdlYkdQVUFkYXB0ZXI+JiYgYWRhcHRlcikKK1JlZlB0cjxXZWJH
UFVEZXZpY2U+IFdlYkdQVURldmljZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBS
ZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkdQVURldmljZShXVEZNb3ZlKGFkYXB0ZXIpKSk7CisgICAgYXV0byBkZXZpY2UgPSBHUFVE
ZXZpY2U6OmNyZWF0ZSgpOyAvLyBGSVhNRTogVGFrZSBhZGFwdGVyIGludG8gYWNjb3VudCB3aGVu
IGNyZWF0aW5nIG1fZGV2aWNlLgorICAgIGlmICghZGV2aWNlKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVRGV2aWNlKFdURk1vdmUoYWRh
cHRlciksIFdURk1vdmUoZGV2aWNlKSkpOwogfQogCi1XZWJHUFVEZXZpY2U6OldlYkdQVURldmlj
ZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyKQorV2ViR1BVRGV2aWNlOjpXZWJHUFVEZXZp
Y2UoUmVmPFdlYkdQVUFkYXB0ZXI+JiYgYWRhcHRlciwgUmVmUHRyPEdQVURldmljZT4mJiBkZXZp
Y2UpCiAgICAgOiBtX2FkYXB0ZXIoV1RGTW92ZShhZGFwdGVyKSkKKyAgICAsIG1fZGV2aWNlKGRl
dmljZSkKIHsKICAgICBVTlVTRURfUEFSQU0obV9hZGFwdGVyKTsKIH0KIAorUmVmUHRyPFdlYkdQ
VVNoYWRlck1vZHVsZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdl
YkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKG1fZGV2aWNlLT5jcmVhdGVTaGFkZXJNb2R1bGUoR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7IGRlc2NyaXB0b3IuY29kZSB9KSk7Cit9CisKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmgKaW5kZXggNjhjZWMxYTE3YThl
NmRkY2VhNGVlYWRiYTZhNWU5YmNlMmFiNTg4Zi4uZTY2YWFlNDI1YTI5YzU4ZTU4M2IyYzY0ZWY1
ZWQ3ZGJkMWY3NzAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
RGV2aWNlLmgKQEAgLTI3LDIzICsyNywzNCBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorI2lu
Y2x1ZGUgIkdQVURldmljZS5oIgorCisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBXZWJHUFVBZGFw
dGVyOworY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxlOworCitzdHJ1Y3QgV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVRGV2aWNlIDogcHVibGljIFJlZkNvdW50ZWQ8
V2ViR1BVRGV2aWNlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHUFVEZXZpY2U+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPFdlYkdQVUFkYXB0ZXI+JiYpOworICAg
IHN0YXRpYyBSZWZQdHI8V2ViR1BVRGV2aWNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIFJlZjxXZWJHUFVBZGFwdGVyPiYmKTsKIAogICAgIFdlYkdQVUFkYXB0ZXImIGFkYXB0ZXIo
KSBjb25zdCB7IHJldHVybiBtX2FkYXB0ZXIuZ2V0KCk7IH0KIAorICAgIFJlZlB0cjxXZWJHUFVT
aGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yJiYpIGNvbnN0OworCiBwcml2YXRlOgotICAgIFdlYkdQVURldmljZShSZWY8V2ViR1BVQWRh
cHRlcj4mJik7CisgICAgV2ViR1BVRGV2aWNlKFJlZjxXZWJHUFVBZGFwdGVyPiYmLCBSZWZQdHI8
R1BVRGV2aWNlPiYmKTsKIAogICAgIFJlZjxXZWJHUFVBZGFwdGVyPiBtX2FkYXB0ZXI7CisKKyAg
ICBSZWZQdHI8R1BVRGV2aWNlPiBtX2RldmljZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmlj
ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCmlu
ZGV4IDA3NWU4MDgzYTg3ODA2YTljOTBlY2QyMjZiNDYxZmMzZmVlZTE2YjAuLmQxYTlmMWEyYzlj
MzNkNTczMDJhZDI5NzQ4NjE4NWNiNmJlMjdjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbApAQCAtMzMsNyArMzMsOSBAQAogICAgIC8vIHJl
YWRvbmx5IGF0dHJpYnV0ZSBXZWJHUFVMaW1pdHMgbGltaXRzOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBXZWJHUFVBZGFwdGVyIGFkYXB0ZXI7CiAKLS8qCisgICAgV2ViR1BVU2hhZGVyTW9kdWxl
IGNyZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIGRlc2NyaXB0
b3IpOworCisvKiBUbyBCZSBJbXBsZW1lbnRlZDoKICAgICBXZWJHUFVCdWZmZXIgY3JlYXRlQnVm
ZmVyKFdlYkdQVUJ1ZmZlckRlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BVVGV4dHVy
ZSBjcmVhdGVUZXh0dXJlKFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogICAg
IFdlYkdQVVNhbXBsZXIgY3JlYXRlU2FtcGxlcihXZWJHUFVTYW1wbGVyRGVzY3JpcHRvciBkZXNj
cmlwdG9yKTsKQEAgLTQ1LDcgKzQ3LDYgQEAKICAgICBXZWJHUFVCbGVuZFN0YXRlIGNyZWF0ZUJs
ZW5kU3RhdGUoV2ViR1BVQmxlbmRTdGF0ZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2Vi
R1BVRGVwdGhTdGVuY2lsU3RhdGUgY3JlYXRlRGVwdGhTdGVuY2lsU3RhdGUoV2ViR1BVRGVwdGhT
dGVuY2lsU3RhdGVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogICAgIFdlYkdQVUlucHV0U3RhdGUg
Y3JlYXRlSW5wdXRTdGF0ZShXZWJHUFVJbnB1dFN0YXRlRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsK
LSAgICBXZWJHUFVTaGFkZXJNb2R1bGUgY3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1v
ZHVsZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BVQXR0YWNobWVudFN0YXRlIGNy
ZWF0ZUF0dGFjaG1lbnRTdGF0ZShXZWJHUFVBdHRhY2htZW50U3RhdGVEZXNjcmlwdG9yIGRlc2Ny
aXB0b3IpOwogICAgIFdlYkdQVUNvbXB1dGVQaXBlbGluZSBjcmVhdGVDb21wdXRlUGlwZWxpbmUo
V2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKICAgICBXZWJHUFVS
ZW5kZXJQaXBlbGluZSBjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IgZGVzY3JpcHRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MWZiNjk0NjM0ZThjN2Y1
Yzg0Yzg4OTFiZjBlYjliNDk2NzVhZTNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcApAQCAtMCwwICsxLDQ5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkdQVVNoYWRl
ck1vZHVsZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBXZWJHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShS
ZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiYmIG1vZHVsZSkKK3sKKyAgICBpZiAoIW1vZHVsZSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVNo
YWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSkpKTsKK30KKworV2ViR1BVU2hhZGVyTW9kdWxlOjpX
ZWJHUFVTaGFkZXJNb2R1bGUoUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUpCisgICAg
OiBtX21vZHVsZShXVEZNb3ZlKG1vZHVsZSkpCit7CisgICAgVU5VU0VEX1BBUkFNKG1fbW9kdWxl
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
ck1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9k
dWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTc5ODI5MDk1ZTQ5ZmRjYmE1ZjA5MDU5YmNiMjEzYTFiZDIwMTIy
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNoYWRlck1vZHVsZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGUuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFdlYkdQVVNoYWRlck1vZHVsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVNo
YWRlck1vZHVsZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVU2hhZGVyTW9k
dWxlPiBjcmVhdGUoUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4mJik7CisKK3ByaXZhdGU6CisgICAg
V2ViR1BVU2hhZGVyTW9kdWxlKFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+JiYpOworCisgICAgUmVm
UHRyPEdQVVNoYWRlck1vZHVsZT4gbV9tb2R1bGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgzZTk3
OWU0ODdiNGI4ZDJhYzY5N2UwMDlhZDY2M2Y3YjBkZmQxZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwKQEAgLTAs
MCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdl
Yi9ibG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAorCitbCisgICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVLAorICAgIEltcGxlbWVudGF0aW9u
TGFja3NWVGFibGUKK10gaW50ZXJmYWNlIFdlYkdQVVNoYWRlck1vZHVsZSB7Cit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMzJhOTg5ZWQ1YzUwNmRmM2E3ZGNiMDkzNTVj
ZTUyNjg0YzMwOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw0MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBX
ZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsKKyAgICBTdHJpbmcgY29kZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1v
ZHVsZURlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyZDcwN2VkOTJiNTUyNDI2Y2I1NDFhZWY0
OGM4YjVlYTRkYTYzNWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbApAQCAtMCwwICsxLDMyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL2Jsb2IvbWFz
dGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisg
ICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZGljdGlvbmFyeSBXZWJHUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yIHsKKyAgICAvKkFycmF5QnVmZmVyKi8gRE9NU3RyaW5nIGNvZGU7IC8vIEZJ
WE1FOiBET01TdHJpbmcgZm9yIE1UTCBwcm90b3R5cGluZyBvbmx5LgorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwCmluZGV4IDgzMThi
NGZiN2ZmZjI0ZGQzZmZmMDgwMDEyOWQ5MTE5NGJiZDczYWEuLjAzODJhZTdiZGZjNzViNWE1MjA4
ZTNiNWU3MDVhZmVlYWI5ZjhlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcApAQCAtMjgsMTMgKzI4LDExIEBACiAKICNpZiBFTkFC
TEUoV0VCR1BVKQogCi0jaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oIgotCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdlYkdQVVN3YXBDaGFpbjo6fldlYkdQVVN3YXBDaGFpbigp
ID0gZGVmYXVsdDsKIAotdm9pZCBXZWJHUFVTd2FwQ2hhaW46OmNvbmZpZ3VyZShjb25zdCBXZWJH
UFVTd2FwQ2hhaW5EZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQordm9pZCBXZWJHUFVTd2FwQ2hhaW46
OmNvbmZpZ3VyZShjb25zdCBEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewogICAgIHJlc2hhcGUo
ZGVzY3JpcHRvci53aWR0aCwgZGVzY3JpcHRvci5oZWlnaHQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaAppbmRleCBkMmNmMjYwNmMyODAx
MzY2ZGI5YTIxZmM3YTY5NTJmYzAyN2MwZGJkLi5mNTZkMzYxZjg1ZDRiYmIwNGI3MDYwOTMwMDRj
ODk0ZjJmMDMzODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTd2FwQ2hhaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVTd2FwQ2hhaW4uaApAQCAtMzEsMTIgKzMxLDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RydWN0IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3I7Ci0KIGNsYXNzIFdlYkdQVVN3YXBD
aGFpbiA6IHB1YmxpYyBHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQgewogcHVibGljOgor
ICAgIHN0cnVjdCBEZXNjcmlwdG9yIHsKKyAgICAgICAgLy8gRklYTUU6IE1vcmUgdGV4dHVyZSBw
cm9wZXJ0aWVzLgorICAgICAgICB1bnNpZ25lZCBsb25nIHdpZHRoOworICAgICAgICB1bnNpZ25l
ZCBsb25nIGhlaWdodDsKKyAgICB9OworCiAgICAgdmlydHVhbCB+V2ViR1BVU3dhcENoYWluKCkg
PSAwOwotICAgIHZvaWQgY29uZmlndXJlKGNvbnN0IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3Im
KTsKKyAgICB2b2lkIGNvbmZpZ3VyZShjb25zdCBEZXNjcmlwdG9yJik7CiAgICAgLy8gRklYTUU6
IFdlYkdQVVRleHR1cmUgZ2V0TmV4dFRleHR1cmUoKTsKICAgICB2b2lkIHByZXNlbnQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWlu
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwK
aW5kZXggYTBiZGY3OTJkY2FhYTE2OWQ0ZGZmMTYzNWI3NzFiOTA1ZjI3YWRmZC4uOTljYTkwZTQz
Y2E2MjM2OGUxZjlhYWViYTEzNDNmZjQzZTJhY2YyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsCkBAIC0zMywzICszMywxMyBAQAog
ICAgIC8vIFdlYkdQVVRleHR1cmUgZ2V0TmV4dFRleHR1cmUoKTsKICAgICB2b2lkIHByZXNlbnQo
KTsKIH07CisKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7CisKK2RpY3Rpb25hcnkgV2ViR1BV
U3dhcENoYWluRGVzY3JpcHRvciB7CisgICAgLy8gV2ViR1BVVGV4dHVyZVVzYWdlRmxhZ3MgdXNh
Z2U7CisgICAgLy8gV2ViR1BVVGV4dHVyZUZvcm1hdEVudW0gZm9ybWF0OworICAgIHUzMiB3aWR0
aDsKKyAgICB1MzIgaGVpZ2h0OworfTsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzMTY1OWNhOTc3ZWQ1NjJmMWE1ODBkODk0ZGM2OTI2NTc5NjVmMzQ5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaAorKysgL2Rl
di9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IFdlYkdQVVN3
YXBDaGFpbkRlc2NyaXB0b3IgewotICAgIC8vIEZJWE1FOiBNb3JlIHRleHR1cmUgcHJvcGVydGll
cy4KLSAgICB1bnNpZ25lZCBsb25nIHdpZHRoOwotICAgIHVuc2lnbmVkIGxvbmcgaGVpZ2h0Owot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFp
bkRlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dh
cENoYWluRGVzY3JpcHRvci5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNjc1
MGE5YjZiNWIzMTdkNGUyMjBkNjllMDA4Y2NmMjQ5OTU3MzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLS8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL2Jsb2Iv
bWFzdGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7
Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJHUFUsCi0gICAgRW5hYmxlZEF0UnVudGltZT1XZWJH
UFUKLV0gZGljdGlvbmFyeSBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIHsKLSAgICAvLyBXZWJH
UFVUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZTsKLSAgICAvLyBXZWJHUFVUZXh0dXJlRm9ybWF0RW51
bSBmb3JtYXQ7Ci0gICAgdTMyIHdpZHRoOwotICAgIHUzMiBoZWlnaHQ7Ci19OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xM2VjOTkyNWQyOGE3OTE1Y2FmM2VmOWJkODRiODlkOTFlYzRhODQ4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVRGV2
aWNlTWV0YWwubW0KQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiR1BVRGV2aWNlLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW1w
b3J0ICJHUFVTaGFkZXJNb2R1bGUuaCIKKyNpbXBvcnQgIkdQVVNoYWRlck1vZHVsZURlc2NyaXB0
b3IuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKworI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNp
bXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUmVmUHRyPEdQVURldmljZT4gR1BVRGV2aWNlOjpjcmVhdGUoKQoreworICAgIFBsYXRmb3Jt
RGV2aWNlU21hcnRQdHIgZGV2aWNlOworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
OworCisgICAgZGV2aWNlID0gYWRvcHROUyhNVExDcmVhdGVTeXN0ZW1EZWZhdWx0RGV2aWNlKCkp
OyAvLyBGSVhNRTogVGFrZSBXZWJHUFVQb3dlclByZWZlcmVuY2UgaW50byBhY2NvdW50LgorCisg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIGlmICghZGV2aWNlKSB7CisgICAg
ICAgIExPRyhXZWJHUFUsICJHUFVEZXZpY2U6OkdQVURldmljZSgpOiBVbmFibGUgdG8gY3JlYXRl
IEdQVURldmljZSEiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgTE9H
KFdlYkdQVSwgIkdQVURldmljZTo6R1BVRGV2aWNlKCk6IE1UTERldmljZSBpcyAlcCIsIGRldmlj
ZS5nZXQoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVEZXZpY2UoV1RGTW92ZShkZXZp
Y2UpKSk7Cit9CisKK0dQVURldmljZTo6R1BVRGV2aWNlKFBsYXRmb3JtRGV2aWNlU21hcnRQdHIm
JiBkZXZpY2UpCisgICAgOiBtX3BsYXRmb3JtRGV2aWNlKFdURk1vdmUoZGV2aWNlKSkKK3sKKyAg
ICBVTlVTRURfUEFSQU0obV9wbGF0Zm9ybURldmljZSk7Cit9CisKK1JlZlB0cjxHUFVTaGFkZXJN
b2R1bGU+IEdQVURldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2Ny
aXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAoreworICAgIHJldHVybiBHUFVTaGFkZXJNb2R1bGU6
OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShkZXNjcmlwdG9yKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJjNzg1NGJlM2JlMmViZTEyMzYxNDIwMzI1Y2Y2NDE2YWNjNmU5MDgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVT
aGFkZXJNb2R1bGVNZXRhbC5tbQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVTaGFkZXJNb2R1bGUuaCIKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbXBvcnQgIkdQVURldmljZS5oIgorI2ltcG9ydCAiR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvci5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorCisjaW1wb3J0IDxNZXRhbC9NZXRh
bC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBHUFVTaGFkZXJNb2R1bGU6OmNyZWF0
ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYmIGRl
c2NyaXB0b3IpCit7CisgICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyIG1vZHVs
ZTsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUworCisgICAgTlNFcnJvciAqZXJy
b3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJjb20uYXBwbGUuV2ViS2l0LkdQVSIgY29k
ZToxIHVzZXJJbmZvOm5pbF07CisgICAgbW9kdWxlID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3Jt
RGV2aWNlKCkgbmV3TGlicmFyeVdpdGhTb3VyY2U6ZGVzY3JpcHRvci5jb2RlIG9wdGlvbnM6bmls
IGVycm9yOiZlcnJvcl0pOworICAgIGlmICghbW9kdWxlKQorICAgICAgICBMT0coV2ViR1BVLCAi
U2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yOiAlcyIsIFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRp
b25dIFVURjhTdHJpbmddKTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAg
ICBpZiAoIW1vZHVsZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEdQVVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSkpKTsKK30KKworR1BVU2hh
ZGVyTW9kdWxlOjpHUFVTaGFkZXJNb2R1bGUoUGxhdGZvcm1TaGFkZXJNb2R1bGVTbWFydFB0ciYm
IG1vZHVsZSkKKyAgICA6IG1fcGxhdGZvcm1TaGFkZXJNb2R1bGUoV1RGTW92ZShtb2R1bGUpKQor
eworICAgIFVOVVNFRF9QQVJBTShtX3BsYXRmb3JtU2hhZGVyTW9kdWxlKTsKK30KKworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYWViNjYyZWIyZjAwZTBj
MmJkY2ViNWM3YWExZmU1NDBiMGMxYmI3Yy4uMWY0ZjBlOGRlZjY4ZWIzMjMyMjk1MDEzYzUyZGZh
NzZjMWI2ODVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTMwMCw2ICszMDAsNyBAQCBNb2R1bGVzL3dl
YmdwdS9XZWJHUFUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAogTW9kdWxl
cy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5n
Q29udGV4dC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAKIAogTW9kdWxlcy93ZWJ2ci9OYXZpZ2F0b3JX
ZWJWUi5jcHAKQEAgLTMxODIsOCArMzE4Myw5IEBAIEpTV2ViR1BVQWRhcHRlci5jcHAKIEpTV2Vi
R1BVQWRhcHRlckRlc2NyaXB0b3IuY3BwCiBKU1dlYkdQVURldmljZS5jcHAKIEpTV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dC5jcHAKK0pTV2ViR1BVU2hhZGVyTW9kdWxlLmNwcAorSlNXZWJHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9yLmNwcAogSlNXZWJHUFVTd2FwQ2hhaW4uY3BwCi1KU1dlYkdQVVN3
YXBDaGFpbkRlc2NyaXB0b3IuY3BwCiBKU1dlYk1ldGFsQnVmZmVyLmNwcAogSlNXZWJNZXRhbENv
bW1hbmRCdWZmZXIuY3BwCiBKU1dlYk1ldGFsQ29tbWFuZFF1ZXVlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKaW5kZXggOTRmZjE1NjI1YjM0OGM0NTJiMWJhNzAzNWI3ZWQ4MDIwNTI3OTQzNy4u
MDQzMWFiNDI5OTY0NTRlMjMxMWYzYmQxNWVhZWNjODdlZjExZWMzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC0yNyw2ICsyNyw5IEBAIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5tbQogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVu
dC5jcHAKIE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0K
IAorTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0KK01vZHVsZXMvd2ViZ3B1
L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tCisKIGFjY2Vzc2liaWxpdHkvaW9zL0FjY2Vz
c2liaWxpdHlPYmplY3RJT1MubW0KIGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1Mu
bW0KIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNmMyZDcxZWZjNzcxNTdkZGUzZDM0NGYyYWZlNDc5NjczNjE0NmE4My4uMzQzYjA4ZDc4
ZTIxZjI2ZThiNTQ4NjFjM2MyMjRlNWU3NmJhOWEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM2NzUsOCArMTM2NzUsNiBA
QAogCQlEMDBGNTk0NjIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkdQVS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDBGNTk0NzIxNkVGRTU0
MDAwRDcxREIgLyogV2ViR1BVLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMEY1OTQ4MjE2RUZFNTQwMDBENzFEQiAvKiBX
ZWJHUFUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkdQVS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUQwMEY1OTRDMjE2RkRGOEUwMDBENzFEQiAvKiBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlEMDBGNTk0RTIxNkZGNkYwMDAwRDcxREIgLyogV2ViR1BVQWRhcHRlckRlc2NyaXB0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAwRjU5NEYyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFk
YXB0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVQWRhcHRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMDBGNTk1MDIxNkZGQUMyMDAwRDcxREIgLyogV2ViR1BVQWRhcHRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVBZGFwdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDAwRjU5NTEyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXIu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYkdQVUFkYXB0ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTM2ODUsNiArMTM2ODMsOCBAQAogCQlEMDBGNTk1NDIxNzAxRDhDMDAwRDcxREIgLyogV2Vi
R1BVRGV2aWNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVEZXZpY2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMDFBMjdBQjEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGFjZVNwbGl0U3RyaW5n
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAxQTI3QUMxMEM5QkZEODAwMDI2
QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3BhY2VTcGxpdFN0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDJD
MjY5MTIxODE0MTZEMDBEODE4RTQgLyogV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRDAyQzI2OTIyMTgxNDE2RDAwRDgxOEU0IC8qIFdlYkdQVUFkYXB0ZXJEZXNjcmlw
dG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUQwMkY4NTRFMjE2ODJBNEEwMDg4RUU3NCAvKiBXZWJNZXRhbENvbW1h
bmRRdWV1ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViTWV0YWxDb21tYW5kUXVldWUuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlEMDJGODU1MDIxNjgyQTU2MDA4OEVFNzQgLyogV2ViTWV0YWxDb21w
dXRlQ29tbWFuZEVuY29kZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYk1ldGFsQ29t
cHV0ZUNvbW1hbmRFbmNvZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAy
Rjg1NTEyMTY4MkE1NjAwODhFRTc0IC8qIFdlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTWV0YWxDb21wdXRlUGlwZWxpbmVT
dGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM3NTQsNiArMTM3NTQsMTUg
QEAKIAkJRDA1NzNENDIyMTdFQjgxRTAwRDFCRTkxIC8qIEdQVUxlZ2FjeVRleHR1cmVNZXRhbC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVRleHR1
cmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA1Q0VEMjcwQTQwQkIy
QzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0QmxvY2tDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDA1Q0VEMjgwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29t
bWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybWF0QmxvY2tDb21t
YW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwNjBEODg0MjE4MjVENUYwMDMz
OTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA2
MEQ4ODcyMTgyNjk3MDAwMzM5MzE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlEMDYwRDg4ODIxODI4MEMxMDAzMzkzMTggLyogR1BVU2hhZGVy
TW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVNoYWRlck1vZHVsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlEMDYwRDg4OTIxODI4MEMxMDAzMzkzMTggLyogR1BVU2hhZGVyTW9k
dWxlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVTaGFkZXJNb2R1bGVNZXRhbC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA2MTVGQ0MyMTdGRTVDNjAwOEE0OEE4
IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTaGFkZXJNb2R1
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA2MTVGQ0QyMTdGRTVDNjAwOEE0
OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVT
aGFkZXJNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDYxNUZDRTIx
N0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVTaGFk
ZXJNb2R1bGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDYxNUZDRjIxN0ZG
MTg1MDA4QTQ4QTggLyogR1BVRGV2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVURldmljZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDYxNUZEMTIxN0ZGMUUxMDA4QTQ4QTggLyog
R1BVRGV2aWNlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVEZXZpY2VNZXRhbC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2QzBEOEQwQ0ZEMTE0NjAwNjVGNDNG
IC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3ZlRm9ybWF0Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
MDZDMEQ4RTBDRkQxMTQ2MDA2NUY0M0YgLyogUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdmVGb3JtYXRDb21tYW5kLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA3REVBQjcwQTM2NTU0QTAwQ0EzMEY4IC8q
IEluc2VydExpc3RDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbnNlcnRMaXN0Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMzc2NSw2ICsxMzc3NCw3IEBACiAJCUQwOTNEMjI1MjE3OTUxRDQwMDMyOTIxNyAvKiBXZWJH
UFVSZW5kZXJpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA5M0QyMjcyMTc5NTFENDAwMzI5
MjE3IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDkzRDIyOTIxNzk1NDE2
MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRDA5NzI3QzIyMThBNDcyOTAwOTQyRjNBIC8qIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEMEEyMEQ1NDIwOTJBMEE2MDBFMEMyNTkgLyogV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFTVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RDBBMjBENTYyMDkyQTBBNjAwRTBDMjU5IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBU1RDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBBM0E3MzAxNDA1
QTM5ODAwRkI4RUQzIC8qIFJlc291cmNlTG9hZGVyT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRlck9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTEzNzgyLDggKzEzNzkyLDYgQEAKIAkJRDBEQTBCRTQyMTc5MzBFMjAw
N0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTd2FwQ2hh
aW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBEQTBCRTUyMTc5MzBFMjAwN0ZF
MkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVTd2Fw
Q2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMERBMEJFNjIxNzkzMEUy
MDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVTd2FwQ2hhaW4uaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMERBMEJFODIxNzkzQjU2MDA3RkUyQUMg
LyogV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwREEwQkU5
MjE3OTNCNTYwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRDBFREE3NzIxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFJhd1Jlc291cmNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBFREE3NzMxNDNFMzAzQzAwMjhFMzgzIC8q
IENhY2hlZFJhd1Jlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
Y2hlZFJhd1Jlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRkYyQTVC
MTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBpbmdMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjUzNjUsMzIgKzI1MzczLDQ4IEBACiAJCUQwMEY1OTNFMjE2RUNDNDMwMDBENzFEQiAv
KiB3ZWJncHUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CUQwNjE1RkQyMjE3RkZFRTMwMDhBNDhBOCAvKiBjb2NvYSAqLywKIAkJCQlEMDBGNTk0MTIxNkVD
QzdBMDAwRDcxREIgLyogRE9NV2luZG93V2ViR1BVLmNwcCAqLywKIAkJCQlEMDBGNTk0MDIxNkVD
QzdBMDAwRDcxREIgLyogRE9NV2luZG93V2ViR1BVLmggKi8sCiAJCQkJRDAwRjU5NDIyMTZFQ0M3
QTAwMEQ3MURCIC8qIERPTVdpbmRvd1dlYkdQVS5pZGwgKi8sCisJCQkJRDA2MTVGQ0YyMTdGRjE4
NTAwOEE0OEE4IC8qIEdQVURldmljZS5oICovLAorCQkJCUQwNjBEODg4MjE4MjgwQzEwMDMzOTMx
OCAvKiBHUFVTaGFkZXJNb2R1bGUuaCAqLywKKwkJCQlEMDk3MjdDMjIxOEE0NzI5MDA5NDJGM0Eg
LyogR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovLAogCQkJCUQwMEY1OTQ3MjE2RUZFNTQw
MDBENzFEQiAvKiBXZWJHUFUuY3BwICovLAogCQkJCUQwMEY1OTQ2MjE2RUZFNTQwMDBENzFEQiAv
KiBXZWJHUFUuaCAqLywKIAkJCQlEMDBGNTk0ODIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmlk
bCAqLywKIAkJCQlEMDBGNTk1MDIxNkZGQUMyMDAwRDcxREIgLyogV2ViR1BVQWRhcHRlci5jcHAg
Ki8sCiAJCQkJRDAwRjU5NEYyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXIuaCAqLywK
IAkJCQlEMDBGNTk1MTIxNkZGQUMyMDAwRDcxREIgLyogV2ViR1BVQWRhcHRlci5pZGwgKi8sCi0J
CQkJRDAwRjU5NEUyMTZGRjZGMDAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmgg
Ki8sCi0JCQkJRDAwRjU5NEMyMTZGREY4RTAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXJEZXNjcmlw
dG9yLmlkbCAqLywKKwkJCQlEMDJDMjY5MTIxODE0MTZEMDBEODE4RTQgLyogV2ViR1BVQWRhcHRl
ckRlc2NyaXB0b3IuaCAqLywKKwkJCQlEMDJDMjY5MjIxODE0MTZEMDBEODE4RTQgLyogV2ViR1BV
QWRhcHRlckRlc2NyaXB0b3IuaWRsICovLAogCQkJCUQwMEY1OTUzMjE3MDFEOEMwMDBENzFEQiAv
KiBXZWJHUFVEZXZpY2UuY3BwICovLAogCQkJCUQwMEY1OTUyMjE3MDFEOEMwMDBENzFEQiAvKiBX
ZWJHUFVEZXZpY2UuaCAqLywKIAkJCQlEMDBGNTk1NDIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BV
RGV2aWNlLmlkbCAqLywKIAkJCQlEMDkzRDIyOTIxNzk1NDE2MDAzMjkyMTcgLyogV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dC5jcHAgKi8sCiAJCQkJRDA5M0QyMjUyMTc5NTFENDAwMzI5MjE3IC8qIFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQuaCAqLywKIAkJCQlEMDkzRDIyNzIxNzk1MUQ0MDAzMjkyMTcg
LyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwgKi8sCisJCQkJRDA2MTVGQ0QyMTdGRTVDNjAw
OEE0OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5jcHAgKi8sCisJCQkJRDA2MTVGQ0MyMTdGRTVD
NjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5oICovLAorCQkJCUQwNjE1RkNFMjE3RkU1
QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuaWRsICovLAorCQkJCUQwNjBEODg3MjE4
MjY5NzAwMDMzOTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8sCisJCQkJ
RDA2MEQ4ODQyMTgyNUQ1RjAwMzM5MzE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3Iu
aWRsICovLAogCQkJCUQwREEwQkU1MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4u
Y3BwICovLAogCQkJCUQwREEwQkU0MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4u
aCAqLywKIAkJCQlEMERBMEJFNjIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmlk
bCAqLywKLQkJCQlEMERBMEJFODIxNzkzQjU2MDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluRGVz
Y3JpcHRvci5oICovLAotCQkJCUQwREEwQkU5MjE3OTNCNTYwMDdGRTJBQyAvKiBXZWJHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yLmlkbCAqLywKIAkJCSk7CiAJCQlwYXRoID0gd2ViZ3B1OwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRDA2MTVGRDIyMTdGRkVFMzAwOEE0OEE4IC8q
IGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlE
MDYxNUZEMTIxN0ZGMUUxMDA4QTQ4QTggLyogR1BVRGV2aWNlTWV0YWwubW0gKi8sCisJCQkJRDA2
MEQ4ODkyMTgyODBDMTAwMzM5MzE4IC8qIEdQVVNoYWRlck1vZHVsZU1ldGFsLm1tICovLAorCQkJ
KTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJ
CURGOUFGRDZGMTNGQzMxQjAwMDE1RkVCNyAvKiBvYmpjICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCAxYzkzODU5ZWNjMTY4NzRjMGMwN2UzNzNiMjk3M2M0
MjUwNWRlYTgwLi4yOGIwZTg1MGQwMTQxNmUxMDhhMTlhMTcyMDgwYjNkMjk4NTIyZWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBA
IC0xNzYsMTEgKzE3NiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdCkgXAogICAgIG1hY3JvKFdlYkdQVSkgXAogICAgIG1hY3JvKFdlYkdQ
VUFkYXB0ZXIpIFwKLSAgICBtYWNybyhXZWJHUFVBZGFwdGVyRGVzY3JpcHRvcikgXAogICAgIG1h
Y3JvKFdlYkdQVURldmljZSkgXAogICAgIG1hY3JvKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQpIFwK
KyAgICBtYWNybyhXZWJHUFVTaGFkZXJNb2R1bGUpIFwKICAgICBtYWNybyhXZWJHUFVTd2FwQ2hh
aW4pIFwKLSAgICBtYWNybyhXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yKSBcCiAgICAgbWFjcm8o
V2ViTWV0YWxCdWZmZXIpIFwKICAgICBtYWNybyhXZWJNZXRhbENvbW1hbmRCdWZmZXIpIFwKICAg
ICBtYWNybyhXZWJNZXRhbENvbW1hbmRRdWV1ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5o
CmluZGV4IGYxMDU2N2Q2YzI0MmUwZDA5NDJhMjg1ODBjMGIzOTAwMmI0MDIwMGQuLjE4NzkyNDYw
NWE4YTViNTkxMWNkMjk0MDY2ZDZjYWJjMDRmNmRiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dn
aW5nLmgKQEAgLTk5LDYgKzk5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oVmlld3Bv
cnRzKSBcCiAgICAgTShXZWJBdWRpbykgXAogICAgIE0oV2ViR0wpIFwKKyAgICBNKFdlYkdQVSkg
XAogICAgIE0oV2ViTWV0YWwpIFwKICAgICBNKFdlYlJUQykgXAogICAgIE0oV2hlZWxFdmVudFRl
c3RUcmlnZ2VycykgXApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDliNTUyNjkwYWUyMWMyZjM0ODQzM2NhZWVlZjEzNjZjZWZl
ZmJiOTQuLmY2YjBlNzMyZmJjNmI4NjM5MjY0YWY0YmY4MTE4YTQ3MDk3YjhmYzUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAxOC0xMC0zMSAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFtXZWJHUFVdIEV4cGVyaW1lbnRhbCBwcm90b3R5cGUgZm9yIE1TTCBz
aGFkZXJzIGFuZCByZW5kZXIgcGlwZWxpbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEwODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHdlYmdwdS93ZWJncHUtYmFzaWNzLmh0bWw6IEFkZGVkLgor
CiAyMDE4LTEwLTIzICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMzcyNjEuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdw
dS1iYXNpY3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2M3NjcyZmQ1YzExOWFhMjg1YTUzNDYxMGNlMGU0
MTNjNGI3YzViCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1i
YXNpY3MuaHRtbApAQCAtMCwwICsxLDg2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IGlkPSJsaWJyYXJ5IiB0eXBlPSJ4LXNoYWRlci94LW1ldGFsIj4KKyAgICAjaW5jbHVkZSA8bWV0
YWxfc3RkbGliPgorICAgIAorICAgIHVzaW5nIG5hbWVzcGFjZSBtZXRhbDsKKyAgICAKKyAgICBz
dHJ1Y3QgVmVydGV4CisgICAgeworICAgICAgICBmbG9hdDQgcG9zaXRpb24gW1twb3NpdGlvbl1d
OworICAgIH07CisgICAgCisgICAgdmVydGV4IFZlcnRleCB2ZXJ0ZXhfbWFpbih1aW50IHZpZCBb
W3ZlcnRleF9pZF1dKQorICAgIHsKKyAgICAgICAgVmVydGV4IHY7CisgICAgICAgIHN3aXRjaCAo
dmlkKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIHYucG9zaXRpb24gPSBmbG9hdDQo
LS43NSwgLS43NSwgMCwgMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOgor
ICAgICAgICAgICAgdi5wb3NpdGlvbiA9IGZsb2F0NCguNzUsIC0uNzUsIDAsIDEpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHYucG9zaXRpb24gPSBm
bG9hdDQoMCwgLjc1LCAwLCAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgdi5wb3NpdGlvbiA9IGZsb2F0NCgwLCAwLCAwLCAxKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gdjsKKyAgICB9CisgICAgCisgICAgZnJhZ21lbnQgZmxvYXQ0IGZy
YWdtZW50X21haW4oVmVydGV4IHZlcnRleEluIFtbc3RhZ2VfaW5dXSkKKyAgICB7CisgICAgICAg
IHJldHVybiBmbG9hdDQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQ+CisndXNlIHN0cmljdCc7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB3aW5k
b3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKK2xldCBjYW52YXM7CitsZXQgY29udGV4dDsK
K2xldCBhZGFwdGVyOworbGV0IGRlZmF1bHREZXZpY2U7CisKK2FzeW5jIGZ1bmN0aW9uIHNldFVw
Q29udGV4dHMoKSB7CisgICAgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFz
Iik7CisgICAgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJ3ZWJncHUiKTsKKyAgICBpZiAo
IWNvbnRleHQpCisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVIGNv
bnRleHQhIik7CisKKyAgICBzaG91bGRCZURlZmluZWQod2luZG93LndlYmdwdSk7CisgICAgCisg
ICAgYWRhcHRlciA9IGF3YWl0IHdpbmRvdy53ZWJncHUucmVxdWVzdEFkYXB0ZXIoe30pOworICAg
IGlmICghYWRhcHRlcikgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIGRl
ZmF1bHQgV2ViR1BVQWRhcHRlciEiKQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZGVm
YXVsdERldmljZSA9IGFkYXB0ZXIuY3JlYXRlRGV2aWNlKCk7CisgICAgaWYgKCFkZWZhdWx0RGV2
aWNlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVRGV2aWNl
ISIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2V0VXBTaGFkZXJzKCk7Cit9CisK
K2Z1bmN0aW9uIHNldFVwU2hhZGVycygpIHsKKyAgICBsZXQgc2hhZGVyRGVzY3JpcHRvciA9IHsK
KyAgICAgICAgY29kZTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpYnJhcnkiKS50ZXh0Cisg
ICAgfTsKKyAgICBsZXQgc2hhZGVyTW9kdWxlID0gZGVmYXVsdERldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoc2hhZGVyRGVzY3JpcHRvcik7CisgICAgaWYgKCFzaGFkZXJNb2R1bGUpCisgICAgICAg
IHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVU2hhZGVyTW9kdWxlISIpOworfQor
CitzZXRVcENvbnRleHRzKCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353674</attachid>
            <date>2018-11-01 18:41:03 -0700</date>
            <delta_ts>2018-11-02 00:09:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191084-20181101184102.patch</filename>
            <type>text/plain</type>
            <size>65583</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGExODA5Y2YwODI0ZWI2M2U0NDllNmQ2
ZDRlNjI4ODg3YTNlNTIxMjguLmVkN2ZkYzk4ODY0MzQ0Mzc1MzNlMTk1OTk3MWJlZjY1MzE3NTU4
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTEtMDEgIEp1c3RpbiBGYW4gIDxqdXN0aW5f
ZmFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBFeHBlcmltZW50YWwgcHJvdG90eXBl
IGZvciBNU0wgc2hhZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkxMDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisg
ICAgICAgIERpc2FibGluZyBXZWJHUFUgb24gbm9uLUNvY29hIHBsYXRmb3JtcyBhbmQgaU9TIFNp
bXVsYXRvci4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDE4LTEwLTIyICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJlYWxseSBwcmV2ZW50
IFBMQVRGT1JNKElPUykgZnJvbSBiZWluZyB1c2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ0ZmE2ODE5MmVh
OTYxZGFmYTE4ZDgzNWI0MWVkMTI2YThlOTU4NS4uYzliZjllNDkzOWYyMTNhMGU4NGUyZGU0ZmY0
MDMyOTIxMWZhMDNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE4LTExLTAxICBK
dXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRXhw
ZXJpbWVudGFsIHByb3RvdHlwZSBmb3IgTVNMIHNoYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTA4NAorCisgICAgICAgIFJldmlld2VkIGJ5
IERlYW4gSmFja3Nvbi4KKworICAgICAgICBCZWdpbiBpbXBsZW1lbnRhdGlvbiBmb3IgV2ViR1BV
RGV2aWNlIGFuZCBXZWJHUFVTaGFkZXJNb2R1bGUgYW5kIGFzc29jaWF0ZWQgZGVzY3JpcHRvciBv
YmplY3RzLgorCisgICAgICAgIFRlc3Q6IHdlYmdwdS93ZWJncHUtYmFzaWNzLmh0bWwKKyAgICAg
ICAgVGVzdDogd2ViZ3B1L3NoYWRlci1tb2R1bGVzLmh0bWwKKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvR1BVRGV2aWNlLmNwcDogCisgICAgICAgIChXZWJDb3JlOjpHUFVEZXZpY2U6OmNy
ZWF0ZVNoYWRlck1vZHVsZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVRGV2
aWNlLmg6IAorICAgICAgICAoV2ViQ29yZTo6R1BVRGV2aWNlOjpwbGF0Zm9ybURldmljZSBjb25z
dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVU2hhZGVyTW9kdWxlLmg6CisgICAgICAg
IChXZWJDb3JlOjpHUFVTaGFkZXJNb2R1bGU6OnBsYXRmb3JtU2hhZGVyTW9kdWxlIGNvbnN0KToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdQVTo6cmVxdWVzdEFkYXB0ZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVUFkYXB0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVQWRhcHRlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVUFkYXB0ZXI6OmNyZWF0ZURldmljZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OldlYkdQVURldmljZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZSBjb25zdCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxlOjpXZWJHUFVTaGFkZXJN
b2R1bGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGw6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHUFVTd2FwQ2hhaW46OmNvbmZpZ3VyZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVU3dhcENoYWluLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dh
cENoYWluLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVEZXZpY2VNZXRh
bC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdQVURldmljZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdQVURldmljZTo6R1BVRGV2aWNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9j
b2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVNoYWRl
ck1vZHVsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVNoYWRlck1vZHVsZTo6R1BV
U2hhZGVyTW9kdWxlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2Vz
Q29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICog
cGxhdGZvcm0vTG9nZ2luZy5oOgorCiAyMDE4LTEwLTIzICBKdXN0aW4gRmFuICA8anVzdGluX2Zh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gUmVuYW1lIG9sZCBHUFUqIGltcGxlbWVu
dGF0aW9uIGZpbGVzIHRvIEdQVUxlZ2FjeSogZm9yIFdlYk1ldGFsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA0
NjdiOGY4ZWJjNzk5NWEyNzRjODdhNTBmOTdlMjRmYzczZmIxMjFiLi5hOTdmZmU2NDFjNjdiYWQx
ZGI4ZGZmMjc0YjIwMmMwMGVlNjcxMTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTEzODIsMyArMTM4Miw3
IEBACiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIFVTRShDQSkgJiYgIVBMQVRGT1JNKElPU19GQU1J
TFlfU0lNVUxBVE9SKQogI2RlZmluZSBVU0VfSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JF
IDEKICNlbmRpZgorCisjaWYgUExBVEZPUk0oQ09DT0EpICYmICFQTEFURk9STShJT1NfRkFNSUxZ
X1NJTVVMQVRPUikKKyNkZWZpbmUgRU5BQkxFX1dFQkdQVSAxCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggMTI5YjZjNTQ5MzJmOWU0ZTg4NDY2ZGNmOTE4Y2JkNmUxNzQ2NDJkNS4uNGU5
MDFkZTM4MTVhNmU0MmUyOTEzMjFjODAxMTRiMmEwNmYwNzdiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTQ1Miw4ICs0NTIsOSBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAg
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmlkbAogICAgIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVURldmljZS5pZGwKICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJp
bmdDb250ZXh0LmlkbAorICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwK
KyAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbAogICAg
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwKLSAgICBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmlkbAogCiAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL0Ns
b3NlRXZlbnQuaWRsCiAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY2MzkwZDQ5ZmIzOWQ2YzRiMmM0NzYyNjA1ZDI2
MDVmYjJiNWIxMGQuLjUyMGI0MTM3NzJmZjEwZDdlM2ViZmY0NjEyZDNjN2I4NTBkNDYzZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzczLDggKzM3Myw5IEBAIEpTX0JJTkRJ
TkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXJE
ZXNjcmlwdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0Nv
bnRleHQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1v
ZHVsZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U3dhcENoYWluLmlkbCBcCi0gICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnNvY2tldHMv
Q2xvc2VFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJ2ci9ET01XaW5kb3dXZWJWUi5p
ZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTg1MTE0NDA1OGRiMzcyZjBjNGQxMzY1YzAyZjU4NmJhOTcxNWU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5jcHAKQEAg
LTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJHUFVEZXZpY2UuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVTaGFk
ZXJNb2R1bGUuaCIKKyNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4gR1BVRGV2aWNlOjpj
cmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYmIGRlc2NyaXB0b3Ip
IGNvbnN0Cit7CisgICAgcmV0dXJuIEdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKCp0aGlzLCBXVEZN
b3ZlKGRlc2NyaXB0b3IpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzE5ZTFlY2ZmNWI3ZjhkMDNkNzVmM2M4NzE5MWNkODc5MTg3YjFhYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmlj
ZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBVU0UoTUVUQUwp
CitPQkpDX1BST1RPQ09MKE1UTERldmljZSk7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisjaWYgVVNFKE1FVEFMKQordXNpbmcgUGxhdGZvcm1EZXZpY2UgPSBNVExEZXZpY2U7Cit1
c2luZyBQbGF0Zm9ybURldmljZVNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTERldmljZT47CisjZWxz
ZQordXNpbmcgUGxhdGZvcm1EZXZpY2UgPSB2b2lkOwordXNpbmcgUGxhdGZvcm1EZXZpY2VTbWFy
dFB0ciA9IFJlZlB0cjx2b2lkPjsKKyNlbmRpZgorCitjbGFzcyBHUFVTaGFkZXJNb2R1bGU7CisK
K3N0cnVjdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yOworCitjbGFzcyBHUFVEZXZpY2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxHUFVEZXZpY2U+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRy
PEdQVURldmljZT4gY3JlYXRlKCk7CisKKyAgICBSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBjcmVh
dGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYmKSBjb25zdDsKKworICAg
IFBsYXRmb3JtRGV2aWNlICpwbGF0Zm9ybURldmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZv
cm1EZXZpY2UuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBHUFVEZXZpY2UoUGxhdGZvcm1EZXZp
Y2VTbWFydFB0ciYmKTsKKworICAgIFBsYXRmb3JtRGV2aWNlU21hcnRQdHIgbV9wbGF0Zm9ybURl
dmljZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFk
ZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlck1vZHVs
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZkZjMwMjM3ZmJkZDI5YzI2OThhMzEyYmQ5NmE5NmJhNjFmYjRmZWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVTaGFk
ZXJNb2R1bGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNF
KE1FVEFMKQorT0JKQ19QUk9UT0NPTChNVExMaWJyYXJ5KTsKKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEdQVURldmljZTsKKworc3RydWN0IEdQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3I7CisKKyNpZiBVU0UoTUVUQUwpCit1c2luZyBQbGF0Zm9ybVNoYWRlck1vZHVsZSA9
IE1UTExpYnJhcnk7Cit1c2luZyBQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyID0gUmV0YWlu
UHRyPE1UTExpYnJhcnk+OworI2Vsc2UKK3VzaW5nIFBsYXRmb3JtU2hhZGVyTW9kdWxlID0gdm9p
ZDsKK3VzaW5nIFBsYXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQdHIgPSBSZWZQdHI8dm9pZD47Cisj
ZW5kaWYKKworY2xhc3MgR1BVU2hhZGVyTW9kdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVU2hh
ZGVyTW9kdWxlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+
IGNyZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYpOwor
CisgICAgUGxhdGZvcm1TaGFkZXJNb2R1bGUgKnBsYXRmb3JtU2hhZGVyTW9kdWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9wbGF0Zm9ybVNoYWRlck1vZHVsZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAg
IEdQVVNoYWRlck1vZHVsZShQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyJiYpOworCisgICAg
UGxhdGZvcm1TaGFkZXJNb2R1bGVTbWFydFB0ciBtX3BsYXRmb3JtU2hhZGVyTW9kdWxlOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2ZlMGFkNWE4N2IzMmM0OGFlMzRiZDc2ZDJmMWM1
OTgxYmU3ZDVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvciB7CisgICAgU3RyaW5nIGNvZGU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKaW5kZXggYjc0NTE4ODJhZDIzMDlkNzg4OWE0YTY3MTc3
ZTM0ZDRjNWYyNmJhNS4uM2QxNTRhYzVhMjFhZTYxYzY1N2EzMDBmYWQ5NjM2YmEwZDgzZDkwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCkBAIC0zOSw3ICszOSwx
MSBAQCBSZWY8V2ViR1BVPiBXZWJHUFU6OmNyZWF0ZSgpCiAKIHZvaWQgV2ViR1BVOjpyZXF1ZXN0
QWRhcHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV2ViR1BV
QWRhcHRlclByb21pc2UmJiBkZWZlcnJlZCkgY29uc3QKIHsKLSAgICBkZWZlcnJlZC5yZXNvbHZl
KFdlYkdQVUFkYXB0ZXI6OmNyZWF0ZShkZXNjcmlwdG9yKSk7CisgICAgYXV0byBhZGFwdGVyID0g
V2ViR1BVQWRhcHRlcjo6Y3JlYXRlKGRlc2NyaXB0b3IpOworICAgIGlmICghYWRhcHRlcikKKyAg
ICAgICAgZGVmZXJyZWQucmVqZWN0KCk7CisKKyAgICBkZWZlcnJlZC5yZXNvbHZlKCphZGFwdGVy
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAppbmRleCA2ZGY0NWUxYmVkNjI0Y2I1OThiMjk4
YWRhOTI2NTIyMDUyYjFmZmY3Li5lZWVjNGRmNjhjNjJlNDE3ZDRkYjNiNzExMjIzNGRmM2NlMmZl
OWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFw
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVy
LmNwcApAQCAtMzQsOSArMzQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8V2Vi
R1BVQWRhcHRlcj4gV2ViR1BVQWRhcHRlcjo6Y3JlYXRlKGNvbnN0IFdlYkdQVUFkYXB0ZXJEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQorUmVmUHRyPFdlYkdQVUFkYXB0ZXI+IFdlYkdQVUFkYXB0ZXI6
OmNyZWF0ZShjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHUFVBZGFwdGVyKGRlc2NyaXB0b3IpKTsKKyAgICAv
LyBGSVhNRTogVmFsaWRhdGlvbiBvbiBkZXNjcmlwdG9yLgorICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViR1BVQWRhcHRlcihkZXNjcmlwdG9yKSk7CiB9CiAKIFdlYkdQVUFkYXB0ZXI6OldlYkdQ
VUFkYXB0ZXIoY29uc3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCkBAIC00
NSw5ICs0Niw5IEBAIFdlYkdQVUFkYXB0ZXI6OldlYkdQVUFkYXB0ZXIoY29uc3QgV2ViR1BVQWRh
cHRlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiAgICAgVU5VU0VEX1BBUkFNKG1fZGVzY3JpcHRv
cik7CiB9CiAKLVJlZjxXZWJHUFVEZXZpY2U+IFdlYkdQVUFkYXB0ZXI6OmNyZWF0ZURldmljZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorUmVmUHRyPFdlYkdQVURldmljZT4gV2Vi
R1BVQWRhcHRlcjo6Y3JlYXRlRGV2aWNlKCkKIHsKLSAgICByZXR1cm4gV2ViR1BVRGV2aWNlOjpj
cmVhdGUoY29udGV4dCwgKnRoaXMpOworICAgIHJldHVybiBXZWJHUFVEZXZpY2U6OmNyZWF0ZSgq
dGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaAppbmRleCBkYWE4NTExY2M4OGIyNTFjNTliZWM5
ZWRhZWRhZmI0MjJjMDk5N2QxLi40YjhlZmY1MjEzYjZiZjJjOTUwMmU2MTYzZTZhNDhkNmQ0NWIz
ZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFw
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdFQkdQVSkKIAogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTM4LDkgKzM5LDkgQEAgc3RydWN0IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yOwog
CiBjbGFzcyBXZWJHUFVBZGFwdGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVQWRhcHRlcj4g
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR1BVQWRhcHRlcj4gY3JlYXRlKGNvbnN0IFdl
YkdQVUFkYXB0ZXJEZXNjcmlwdG9yJik7CisgICAgc3RhdGljIFJlZlB0cjxXZWJHUFVBZGFwdGVy
PiBjcmVhdGUoY29uc3QgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3ImKTsKIAotICAgIFJlZjxXZWJH
UFVEZXZpY2U+IGNyZWF0ZURldmljZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgUmVm
UHRyPFdlYkdQVURldmljZT4gY3JlYXRlRGV2aWNlKCk7CiAKIHByaXZhdGU6CiAgICAgV2ViR1BV
QWRhcHRlcihjb25zdCBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvciYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlkbAppbmRleCBlOWNlNTA1YWZiMzU3
ZDg0YzI4YjIxOTkyZTQyMDA0YmY0MmY4MmE5Li5iYmNkOTIyMmEyMjZiZmFjNzE5MjI4NjcxMWQ4
YTI5Y2FmNGJhY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVBZGFwdGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVBZGFwdGVyLmlkbApAQCAtMzMsNSArMzMsNSBAQAogICAgIC8vIHJlYWRvbmx5IGF0dHJpYnV0
ZSBXZWJHUFVFeHRlbnNpb25zIGV4dGVuc2lvbnM7CiAgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRl
IFdlYkdQVUxpbWl0cyBsaW1pdHM7IERvbid0IGV4cG9zZSBoaWdoZXIgbGltaXRzIGZvciBub3cu
CiAKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gV2ViR1BVRGV2aWNlIGNy
ZWF0ZURldmljZSgvKldlYkdQVURldmljZURlc2NyaXB0b3IgZGVzY3JpcHRvciovKTsKKyAgICBX
ZWJHUFVEZXZpY2UgY3JlYXRlRGV2aWNlKC8qV2ViR1BVRGV2aWNlRGVzY3JpcHRvciBkZXNjcmlw
dG9yKi8pOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuY3BwCmluZGV4IGNjZDQ4ZDg1YTdjMjA4NTg4Njk2OTA4ZWFmOTEwZDE2ZjZhM2EyYTEuLmEx
YzUwNDAxM2I2NDFjMDlmZjgzZjQ2MTZlMTAyNjdmYWExNTA0NTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApAQCAtMjgsMTkgKzI4LDM0IEBA
CiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisjaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvci5oIgorI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZS5oIgorI2luY2x1ZGUgIldlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8
V2ViR1BVRGV2aWNlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgUmVmPFdlYkdQVUFkYXB0ZXI+JiYgYWRhcHRlcikKK1JlZlB0cjxXZWJHUFVEZXZpY2U+IFdl
YkdQVURldmljZTo6Y3JlYXRlKFJlZjxXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVRGV2aWNlKFdURk1vdmUoYWRhcHRlcikpKTsKKyAg
ICBhdXRvIGRldmljZSA9IEdQVURldmljZTo6Y3JlYXRlKCk7IC8vIEZJWE1FOiBUYWtlIGFkYXB0
ZXIgaW50byBhY2NvdW50IHdoZW4gY3JlYXRpbmcgbV9kZXZpY2UuCisgICAgaWYgKCFkZXZpY2Up
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJH
UFVEZXZpY2UoV1RGTW92ZShhZGFwdGVyKSwgV1RGTW92ZShkZXZpY2UpKSk7CiB9CiAKLVdlYkdQ
VURldmljZTo6V2ViR1BVRGV2aWNlKFJlZjxXZWJHUFVBZGFwdGVyPiYmIGFkYXB0ZXIpCitXZWJH
UFVEZXZpY2U6OldlYkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiBhZGFwdGVyLCBSZWZQ
dHI8R1BVRGV2aWNlPiYmIGRldmljZSkKICAgICA6IG1fYWRhcHRlcihXVEZNb3ZlKGFkYXB0ZXIp
KQorICAgICwgbV9kZXZpY2UoZGV2aWNlKQogewogICAgIFVOVVNFRF9QQVJBTShtX2FkYXB0ZXIp
OwogfQogCitSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVNo
YWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29u
c3QKK3sKKyAgICByZXR1cm4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUobV9kZXZpY2UtPmNy
ZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5j
b2RlIH0pKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
aAppbmRleCA2OGNlYzFhMTdhOGU2ZGRjZWE0ZWVhZGJhNmE1ZTliY2UyYWI1ODhmLi40ZDViMGJh
YzE3NTk2MWE4ZGVlN2U5MjE4NjZiZmJhNzBmYTEzNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaApAQCAtMjcsMjMgKzI3LDM0IEBACiAKICNpZiBF
TkFCTEUoV0VCR1BVKQogCisjaW5jbHVkZSAiR1BVRGV2aWNlLmgiCisKKyNpbmNsdWRlIDx3dGYv
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIGNsYXNzIFdlYkdQVUFkYXB0ZXI7CitjbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGU7CisKK3N0
cnVjdCBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yOwogCiBjbGFzcyBXZWJHUFVEZXZpY2Ug
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVEZXZpY2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFdlYkdQVURldmljZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8V2Vi
R1BVQWRhcHRlcj4mJik7CisgICAgc3RhdGljIFJlZlB0cjxXZWJHUFVEZXZpY2U+IGNyZWF0ZShS
ZWY8V2ViR1BVQWRhcHRlcj4mJik7CiAKICAgICBXZWJHUFVBZGFwdGVyJiBhZGFwdGVyKCkgY29u
c3QgeyByZXR1cm4gbV9hZGFwdGVyLmdldCgpOyB9CiAKKyAgICBSZWZQdHI8V2ViR1BVU2hhZGVy
TW9kdWxlPiBjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYm
KSBjb25zdDsKKwogcHJpdmF0ZToKLSAgICBXZWJHUFVEZXZpY2UoUmVmPFdlYkdQVUFkYXB0ZXI+
JiYpOworICAgIFdlYkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiwgUmVmUHRyPEdQVURl
dmljZT4mJik7CiAKICAgICBSZWY8V2ViR1BVQWRhcHRlcj4gbV9hZGFwdGVyOworCisgICAgUmVm
UHRyPEdQVURldmljZT4gbV9kZXZpY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAppbmRleCAw
NzVlODA4M2E4NzgwNmE5YzkwZWNkMjI2YjQ2MWZjM2ZlZWUxNmIwLi5kMWE5ZjFhMmM5YzMzZDU3
MzAyYWQyOTc0ODYxODVjYjZiZTI3Y2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVURldmljZS5pZGwKQEAgLTMzLDcgKzMzLDkgQEAKICAgICAvLyByZWFkb25s
eSBhdHRyaWJ1dGUgV2ViR1BVTGltaXRzIGxpbWl0czsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
V2ViR1BVQWRhcHRlciBhZGFwdGVyOwogCi0vKgorICAgIFdlYkdQVVNoYWRlck1vZHVsZSBjcmVh
dGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsK
KworLyogVG8gQmUgSW1wbGVtZW50ZWQ6CiAgICAgV2ViR1BVQnVmZmVyIGNyZWF0ZUJ1ZmZlcihX
ZWJHUFVCdWZmZXJEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogICAgIFdlYkdQVVRleHR1cmUgY3Jl
YXRlVGV4dHVyZShXZWJHUFVUZXh0dXJlRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKICAgICBXZWJH
UFVTYW1wbGVyIGNyZWF0ZVNhbXBsZXIoV2ViR1BVU2FtcGxlckRlc2NyaXB0b3IgZGVzY3JpcHRv
cik7CkBAIC00NSw3ICs0Nyw2IEBACiAgICAgV2ViR1BVQmxlbmRTdGF0ZSBjcmVhdGVCbGVuZFN0
YXRlKFdlYkdQVUJsZW5kU3RhdGVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogICAgIFdlYkdQVURl
cHRoU3RlbmNpbFN0YXRlIGNyZWF0ZURlcHRoU3RlbmNpbFN0YXRlKFdlYkdQVURlcHRoU3RlbmNp
bFN0YXRlRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKICAgICBXZWJHUFVJbnB1dFN0YXRlIGNyZWF0
ZUlucHV0U3RhdGUoV2ViR1BVSW5wdXRTdGF0ZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0gICAg
V2ViR1BVU2hhZGVyTW9kdWxlIGNyZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogICAgIFdlYkdQVUF0dGFjaG1lbnRTdGF0ZSBjcmVhdGVB
dHRhY2htZW50U3RhdGUoV2ViR1BVQXR0YWNobWVudFN0YXRlRGVzY3JpcHRvciBkZXNjcmlwdG9y
KTsKICAgICBXZWJHUFVDb21wdXRlUGlwZWxpbmUgY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKFdlYkdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BVUmVuZGVy
UGlwZWxpbmUgY3JlYXRlUmVuZGVyUGlwZWxpbmUoV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yIGRlc2NyaXB0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFmYjY5NDYzNGU4YzdmNWM4NGM4
ODkxYmYwZWI5YjQ5Njc1YWUzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1
bGUuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVm
UHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gV2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoUmVmUHRy
PEdQVVNoYWRlck1vZHVsZT4mJiBtb2R1bGUpCit7CisgICAgaWYgKCFtb2R1bGUpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHUFVTaGFkZXJN
b2R1bGUoV1RGTW92ZShtb2R1bGUpKSk7Cit9CisKK1dlYkdQVVNoYWRlck1vZHVsZTo6V2ViR1BV
U2hhZGVyTW9kdWxlKFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+JiYgbW9kdWxlKQorICAgIDogbV9t
b2R1bGUoV1RGTW92ZShtb2R1bGUpKQoreworICAgIFVOVVNFRF9QQVJBTShtX21vZHVsZSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk3OTgyOTA5NWU0OWZkY2JhNWYwOTA1OWJjYjIxM2ExYmQyMDEyMjIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFk
ZXJNb2R1bGUuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlLmgiCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBXZWJHUFVTaGFkZXJNb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVTaGFkZXJN
b2R1bGU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4g
Y3JlYXRlKFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+JiYpOworCitwcml2YXRlOgorICAgIFdlYkdQ
VVNoYWRlck1vZHVsZShSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiYmKTsKKworICAgIFJlZlB0cjxH
UFVTaGFkZXJNb2R1bGU+IG1fbW9kdWxlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4M2U5NzllNDg3
YjRiOGQyYWM2OTdlMDA5YWQ2NjNmN2IwZGZkMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsCkBAIC0wLDAgKzEs
MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworLy8gaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxv
Yi9tYXN0ZXIvZGVzaWduL3NrZXRjaC53ZWJpZGwKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQ
VSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVSwKKyAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlCitdIGludGVyZmFjZSBXZWJHUFVTaGFkZXJNb2R1bGUgeworfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjMyYTk4OWVkNWM1MDZkZjNhN2RjYjA5MzU1Y2U1MjY4
NGMzMDhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgV2ViR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7CisgICAgU3RyaW5nIGNvZGU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVE
ZXNjcmlwdG9yLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmQ3MDdlZDkyYjU1MjQyNmNiNTQxYWVmNDhjOGI1
ZWE0ZGE2MzVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwKQEAgLTAsMCArMSwzMiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9ibG9iL21hc3Rlci9k
ZXNpZ24vc2tldGNoLndlYmlkbAorCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVu
YWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGRpY3Rpb25hcnkgV2ViR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvciB7CisgICAgLypBcnJheUJ1ZmZlciovIERPTVN0cmluZyBjb2RlOyAvLyBGSVhNRTog
RE9NU3RyaW5nIGZvciBNVEwgcHJvdG90eXBpbmcgb25seS4KK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcAppbmRleCA4MzE4YjRmYjdm
ZmYyNGRkM2ZmZjA4MDAxMjlkOTExOTRiYmQ3M2FhLi4wMzgyYWU3YmRmYzc1YjVhNTIwOGUzYjVl
NzA1YWZlZWFiOWY4ZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVTd2FwQ2hhaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVN3YXBDaGFpbi5jcHAKQEAgLTI4LDEzICsyOCwxMSBAQAogCiAjaWYgRU5BQkxFKFdF
QkdQVSkKIAotI2luY2x1ZGUgIldlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCIKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBXZWJHUFVTd2FwQ2hhaW46On5XZWJHUFVTd2FwQ2hhaW4oKSA9IGRl
ZmF1bHQ7CiAKLXZvaWQgV2ViR1BVU3dhcENoYWluOjpjb25maWd1cmUoY29uc3QgV2ViR1BVU3dh
cENoYWluRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3ZvaWQgV2ViR1BVU3dhcENoYWluOjpjb25m
aWd1cmUoY29uc3QgRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICByZXNoYXBlKGRlc2Ny
aXB0b3Iud2lkdGgsIGRlc2NyaXB0b3IuaGVpZ2h0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmgKaW5kZXggZDJjZjI2MDZjMjgwMTM2NmRi
OWEyMWZjN2E2OTUyZmMwMjdjMGRiZC4uZjU2ZDM2MWY4NWQ0YmJiMDRiNzA2MDkzMDA0Yzg5NGYy
ZjAzMzg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U3dhcENoYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dh
cENoYWluLmgKQEAgLTMxLDEyICszMSwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
cnVjdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yOwotCiBjbGFzcyBXZWJHUFVTd2FwQ2hhaW4g
OiBwdWJsaWMgR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKIHB1YmxpYzoKKyAgICBz
dHJ1Y3QgRGVzY3JpcHRvciB7CisgICAgICAgIC8vIEZJWE1FOiBNb3JlIHRleHR1cmUgcHJvcGVy
dGllcy4KKyAgICAgICAgdW5zaWduZWQgbG9uZyB3aWR0aDsKKyAgICAgICAgdW5zaWduZWQgbG9u
ZyBoZWlnaHQ7CisgICAgfTsKKwogICAgIHZpcnR1YWwgfldlYkdQVVN3YXBDaGFpbigpID0gMDsK
LSAgICB2b2lkIGNvbmZpZ3VyZShjb25zdCBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yJik7Cisg
ICAgdm9pZCBjb25maWd1cmUoY29uc3QgRGVzY3JpcHRvciYpOwogICAgIC8vIEZJWE1FOiBXZWJH
UFVUZXh0dXJlIGdldE5leHRUZXh0dXJlKCk7CiAgICAgdm9pZCBwcmVzZW50KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsCmluZGV4
IGEwYmRmNzkyZGNhYWExNjlkNGRmZjE2MzViNzcxYjkwNWYyN2FkZmQuLjk5Y2E5MGU0M2NhNjIz
NjhlMWY5YWFlYmExMzQzZmY0M2UyYWNmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbApAQCAtMzMsMyArMzMsMTMgQEAKICAgICAv
LyBXZWJHUFVUZXh0dXJlIGdldE5leHRUZXh0dXJlKCk7CiAgICAgdm9pZCBwcmVzZW50KCk7CiB9
OworCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOworCitkaWN0aW9uYXJ5IFdlYkdQVVN3YXBD
aGFpbkRlc2NyaXB0b3IgeworICAgIC8vIFdlYkdQVVRleHR1cmVVc2FnZUZsYWdzIHVzYWdlOwor
ICAgIC8vIFdlYkdQVVRleHR1cmVGb3JtYXRFbnVtIGZvcm1hdDsKKyAgICB1MzIgd2lkdGg7Cisg
ICAgdTMyIGhlaWdodDsKK307CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzE2NTljYTk3N2VkNTYyZjFhNTgwZDg5NGRjNjkyNjU3OTY1ZjM0OS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoV0VCR1BVKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBXZWJHUFVTd2FwQ2hh
aW5EZXNjcmlwdG9yIHsKLSAgICAvLyBGSVhNRTogTW9yZSB0ZXh0dXJlIHByb3BlcnRpZXMuCi0g
ICAgdW5zaWduZWQgbG9uZyB3aWR0aDsKLSAgICB1bnNpZ25lZCBsb25nIGhlaWdodDsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW5EZXNj
cmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFp
bkRlc2NyaXB0b3IuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzY3NTBhOWI2
YjViMzE3ZDRlMjIwZDY5ZTAwOGNjZjI0OTk1NzM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVN3YXBDaGFpbkRlc2NyaXB0b3IuaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0vLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9ibG9iL21hc3Rl
ci9kZXNpZ24vc2tldGNoLndlYmlkbAotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwotCi1b
Ci0gICAgQ29uZGl0aW9uYWw9V0VCR1BVLAotICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCi1d
IGRpY3Rpb25hcnkgV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvciB7Ci0gICAgLy8gV2ViR1BVVGV4
dHVyZVVzYWdlRmxhZ3MgdXNhZ2U7Ci0gICAgLy8gV2ViR1BVVGV4dHVyZUZvcm1hdEVudW0gZm9y
bWF0OwotICAgIHUzMiB3aWR0aDsKLSAgICB1MzIgaGVpZ2h0OwotfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjI4Y2M0MzgzMTljYzYyMjVkYTUxYzFmYzBkNDdhYjAzMTViMGNjOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVURldmljZU1l
dGFsLm1tCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIkdQVURldmljZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2ltcG9ydCAi
TG9nZ2luZy5oIgorCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8R1BVRGV2
aWNlPiBHUFVEZXZpY2U6OmNyZWF0ZSgpCit7CisgICAgUGxhdGZvcm1EZXZpY2VTbWFydFB0ciBk
ZXZpY2U7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBkZXZpY2Ug
PSBhZG9wdE5TKE1UTENyZWF0ZVN5c3RlbURlZmF1bHREZXZpY2UoKSk7IC8vIEZJWE1FOiBUYWtl
IFdlYkdQVVBvd2VyUHJlZmVyZW5jZSBpbnRvIGFjY291bnQuCisKKyAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TOworCisgICAgaWYgKCFkZXZpY2UpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwg
IkdQVURldmljZTo6R1BVRGV2aWNlKCk6IFVuYWJsZSB0byBjcmVhdGUgR1BVRGV2aWNlISIpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBMT0coV2ViR1BVLCAiR1BVRGV2
aWNlOjpHUFVEZXZpY2UoKTogTVRMRGV2aWNlIGlzICVwIiwgZGV2aWNlLmdldCgpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEdQVURldmljZShXVEZNb3ZlKGRldmljZSkpKTsKK30KKworR1BV
RGV2aWNlOjpHUFVEZXZpY2UoUGxhdGZvcm1EZXZpY2VTbWFydFB0ciYmIGRldmljZSkKKyAgICA6
IG1fcGxhdGZvcm1EZXZpY2UoV1RGTW92ZShkZXZpY2UpKQoreworICAgIFVOVVNFRF9QQVJBTSht
X3BsYXRmb3JtRGV2aWNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmM3ODU0
YmUzYmUyZWJlMTIzNjE0MjAzMjVjZjY0MTZhY2M2ZTkwOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1t
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIkdQVVNoYWRlck1vZHVsZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2ltcG9ydCAi
R1BVRGV2aWNlLmgiCisjaW1wb3J0ICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCisjaW1w
b3J0ICJMb2dnaW5nLmgiCisKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDx3dGYv
QmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxH
UFVTaGFkZXJNb2R1bGU+IEdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKGNvbnN0IEdQVURldmljZSYg
ZGV2aWNlLCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKK3sKKyAgICBp
ZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIFBsYXRmb3JtU2hhZGVyTW9kdWxlU21hcnRQdHIgbW9kdWxlOworCisgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCisKKyAgICBOU0Vycm9yICplcnJvciA9IFtOU0Vycm9yIGVycm9y
V2l0aERvbWFpbjpAImNvbS5hcHBsZS5XZWJLaXQuR1BVIiBjb2RlOjEgdXNlckluZm86bmlsXTsK
KyAgICBtb2R1bGUgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdMaWJyYXJ5
V2l0aFNvdXJjZTpkZXNjcmlwdG9yLmNvZGUgb3B0aW9uczpuaWwgZXJyb3I6JmVycm9yXSk7Cisg
ICAgaWYgKCFtb2R1bGUpCisgICAgICAgIExPRyhXZWJHUFUsICJTaGFkZXIgY29tcGlsYXRpb24g
ZXJyb3I6ICVzIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmluZ10pOwor
CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIGlmICghbW9kdWxlKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVU2hhZGVy
TW9kdWxlKFdURk1vdmUobW9kdWxlKSkpOworfQorCitHUFVTaGFkZXJNb2R1bGU6OkdQVVNoYWRl
ck1vZHVsZShQbGF0Zm9ybVNoYWRlck1vZHVsZVNtYXJ0UHRyJiYgbW9kdWxlKQorICAgIDogbV9w
bGF0Zm9ybVNoYWRlck1vZHVsZShXVEZNb3ZlKG1vZHVsZSkpCit7CisgICAgVU5VU0VEX1BBUkFN
KG1fcGxhdGZvcm1TaGFkZXJNb2R1bGUpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZWI2NjJlYjJmMDBlMGMyYmRjZWI1YzdhYTFmZTU0MGIw
YzFiYjdjLi41ZDYxNzlhMTBmMzhiYWNkMmRhZWE3ZmNkNTBiZGJjODkwNDhiMjkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMjk2LDEwICsyOTYsMTIgQEAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5jcHAKIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAKIAogTW9kdWxlcy93ZWJncHUvRE9NV2luZG93V2ViR1BVLmNwcAorTW9k
dWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAogTW9k
dWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmlj
ZS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwCitNb2R1bGVz
L3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2Fw
Q2hhaW4uY3BwCiAKIE1vZHVsZXMvd2VidnIvTmF2aWdhdG9yV2ViVlIuY3BwCkBAIC0zMTgyLDgg
KzMxODQsOSBAQCBKU1dlYkdQVUFkYXB0ZXIuY3BwCiBKU1dlYkdQVUFkYXB0ZXJEZXNjcmlwdG9y
LmNwcAogSlNXZWJHUFVEZXZpY2UuY3BwCiBKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwCitK
U1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKK0pTV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5j
cHAKIEpTV2ViR1BVU3dhcENoYWluLmNwcAotSlNXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmNw
cAogSlNXZWJNZXRhbEJ1ZmZlci5jcHAKIEpTV2ViTWV0YWxDb21tYW5kQnVmZmVyLmNwcAogSlNX
ZWJNZXRhbENvbW1hbmRRdWV1ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDk0ZmYx
NTYyNWIzNDhjNDUyYjFiYTcwMzViN2VkODAyMDUyNzk0MzcuLjA0MzFhYjQyOTk2NDU0ZTIzMTFm
M2JkMTVlYWVjYzg3ZWYxMWVjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMjcsNiAr
MjcsOSBAQCBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KIE1v
ZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCiBNb2R1bGVzL3dlYmRh
dGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCiAKK01vZHVsZXMvd2ViZ3B1L2Nv
Y29hL0dQVURldmljZU1ldGFsLm1tCitNb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTaGFkZXJNb2R1
bGVNZXRhbC5tbQorCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1t
CiBhY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lv
cy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZjMmQ3MWVmYzc3MTU3
ZGRlM2QzNDRmMmFmZTQ3OTY3MzYxNDZhODMuLjMxYWNlZjQ3MDIxODhmMTYyN2RmMTU5OWFmZDUx
YzM1MWRlZjNjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEzNjc1LDggKzEzNjc1LDYgQEAKIAkJRDAwRjU5NDYyMTZFRkU1
NDAwMEQ3MURCIC8qIFdlYkdQVS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAwRjU5NDcyMTZFRkU1NDAwMEQ3MURCIC8qIFdlYkdQVS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMDBGNTk0ODIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJH
UFUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlEMDBGNTk0QzIxNkZERjhFMDAw
RDcxREIgLyogV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVUFkYXB0ZXJE
ZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRDAwRjU5NEUyMTZG
RjZGMDAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUQwMEY1OTRGMjE2RkZBQzIwMDBENzFEQiAvKiBXZWJHUFVBZGFwdGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdQVUFkYXB0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAwRjU5
NTAyMTZGRkFDMjAwMEQ3MURCIC8qIFdlYkdQVUFkYXB0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViR1BVQWRhcHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMEY1
OTUxMjE2RkZBQzIwMDBENzFEQiAvKiBXZWJHUFVBZGFwdGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVBZGFw
dGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNjg1LDYgKzEzNjgzLDgg
QEAKIAkJRDAwRjU5NTQyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViR1BVRGV2aWNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAxQTI3QUIx
MEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU3BhY2VTcGxpdFN0cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUQwMUEyN0FDMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3Ry
aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwYWNlU3BsaXRTdHJpbmcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDAyQzI2OTEyMTgxNDE2RDAwRDgxOEU0
IC8qIFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVUFkYXB0
ZXJEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwMkMyNjkyMjE4
MTQxNkQwMEQ4MThFNCAvKiBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BV
QWRhcHRlckRlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDJG
ODU0RTIxNjgyQTRBMDA4OEVFNzQgLyogV2ViTWV0YWxDb21tYW5kUXVldWUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
Yk1ldGFsQ29tbWFuZFF1ZXVlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAy
Rjg1NTAyMTY4MkE1NjAwODhFRTc0IC8qIFdlYk1ldGFsQ29tcHV0ZUNvbW1hbmRFbmNvZGVyLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJNZXRhbENvbXB1dGVDb21tYW5kRW5jb2Rlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMkY4NTUxMjE2ODJBNTYwMDg4RUU3
NCAvKiBXZWJNZXRhbENvbXB1dGVQaXBlbGluZVN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYk1ldGFsQ29tcHV0ZVBpcGVsaW5lU3RhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNzU0LDYgKzEzNzU0LDE1IEBACiAJCUQwNTczRDQyMjE3RUI4
MUUwMEQxQkU5MSAvKiBHUFVMZWdhY3lUZXh0dXJlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVMZWdhY3lUZXh0dXJlTWV0YWwubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNUNFRDI3MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRC
bG9ja0NvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZv
cm1hdEJsb2NrQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNUNF
RDI4MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1hdEJsb2NrQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlEMDYwRDg4NDIxODI1RDVGMDAzMzkzMTggLyogV2ViR1BVU2hhZGVy
TW9kdWxlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwNjBEODg3MjE4MjY5NzAwMDMzOTMx
OCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RDA2MEQ4ODgyMTgyODBDMTAwMzM5MzE4IC8qIEdQVVNoYWRlck1vZHVsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHUFVTaGFkZXJNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA2
MEQ4ODkyMTgyODBDMTAwMzM5MzE4IC8qIEdQVVNoYWRlck1vZHVsZU1ldGFsLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUQwNjE1RkNDMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVU2hhZGVyTW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUQwNjE1RkNEMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJN
b2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVU2hhZGVyTW9kdWxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA2MTVGQ0UyMTdGRTVDNjAwOEE0OEE4IC8qIFdl
YkdQVVNoYWRlck1vZHVsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU2hhZGVyTW9kdWxlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA2MTVGQ0YyMTdGRjE4NTAwOEE0OEE4IC8qIEdQVURl
dmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVEZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRDA2MTVGRDEyMTdGRjFFMTAwOEE0OEE4IC8qIEdQVURldmljZU1ldGFsLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVRGV2aWNlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQwNkMwRDhEMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21t
YW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW92ZUZvcm1hdENvbW1h
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2QzBEOEUwQ0ZEMTE0NjAwNjVG
NDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUQwN0RFQUI3MEEzNjU1NEEwMENBMzBGOCAvKiBJbnNlcnRMaXN0Q29tbWFuZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zZXJ0TGlzdENvbW1h
bmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM3NjUsNiArMTM3NzQsOCBA
QAogCQlEMDkzRDIyNTIxNzk1MUQ0MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUQwOTNEMjI3MjE3OTUxRDQwMDMyOTIxNyAvKiBXZWJHUFVSZW5kZXJp
bmdDb250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA5M0QyMjkyMTc5NTQxNjAwMzI5MjE3IC8qIFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwOTcyN0MyMjE4QTQ3Mjkw
MDk0MkYzQSAvKiBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RDA5NzI3Q0EyMThCRDdBNTAwOTQyRjNBIC8qIEdQVURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHUFVEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEEyMEQ1
NDIwOTJBMEE2MDBFMEMyNTkgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBBMjBENTYyMDkyQTBBNjAwRTBDMjU5IC8q
IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDBBM0E3MzAxNDA1QTM5ODAwRkI4RUQzIC8qIFJlc291cmNlTG9h
ZGVyT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxv
YWRlck9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNzgyLDggKzEz
NzkzLDYgQEAKIAkJRDBEQTBCRTQyMTc5MzBFMjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJHUFVTd2FwQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRDBEQTBCRTUyMTc5MzBFMjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVTd2FwQ2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMERBMEJFNjIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWlu
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJHUFVTd2FwQ2hhaW4uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlEMERBMEJFODIxNzkzQjU2MDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluRGVzY3JpcHRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUQwREEwQkU5MjE3OTNCNTYwMDdGRTJBQyAvKiBXZWJHUFVT
d2FwQ2hhaW5EZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBFREE3NzIxNDNFMzAzQzAwMjhFMzgz
IC8qIENhY2hlZFJhd1Jlc291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENhY2hlZFJhd1Jlc291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRDBFREE3NzMxNDNFMzAzQzAwMjhFMzgzIC8qIENhY2hlZFJhd1Jlc291cmNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJhd1Jlc291cmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwRkYyQTVCMTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9h
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBpbmdMb2FkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjUzNjUsMzIgKzI1Mzc0LDQ5IEBA
CiAJCUQwMEY1OTNFMjE2RUNDNDMwMDBENzFEQiAvKiB3ZWJncHUgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUQwNjE1RkQyMjE3RkZFRTMwMDhBNDhBOCAv
KiBjb2NvYSAqLywKIAkJCQlEMDBGNTk0MTIxNkVDQzdBMDAwRDcxREIgLyogRE9NV2luZG93V2Vi
R1BVLmNwcCAqLywKIAkJCQlEMDBGNTk0MDIxNkVDQzdBMDAwRDcxREIgLyogRE9NV2luZG93V2Vi
R1BVLmggKi8sCiAJCQkJRDAwRjU5NDIyMTZFQ0M3QTAwMEQ3MURCIC8qIERPTVdpbmRvd1dlYkdQ
VS5pZGwgKi8sCisJCQkJRDA5NzI3Q0EyMThCRDdBNTAwOTQyRjNBIC8qIEdQVURldmljZS5jcHAg
Ki8sCisJCQkJRDA2MTVGQ0YyMTdGRjE4NTAwOEE0OEE4IC8qIEdQVURldmljZS5oICovLAorCQkJ
CUQwNjBEODg4MjE4MjgwQzEwMDMzOTMxOCAvKiBHUFVTaGFkZXJNb2R1bGUuaCAqLywKKwkJCQlE
MDk3MjdDMjIxOEE0NzI5MDA5NDJGM0EgLyogR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICov
LAogCQkJCUQwMEY1OTQ3MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUuY3BwICovLAogCQkJCUQw
MEY1OTQ2MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUuaCAqLywKIAkJCQlEMDBGNTk0ODIxNkVG
RTU0MDAwRDcxREIgLyogV2ViR1BVLmlkbCAqLywKIAkJCQlEMDBGNTk1MDIxNkZGQUMyMDAwRDcx
REIgLyogV2ViR1BVQWRhcHRlci5jcHAgKi8sCiAJCQkJRDAwRjU5NEYyMTZGRkFDMjAwMEQ3MURC
IC8qIFdlYkdQVUFkYXB0ZXIuaCAqLywKIAkJCQlEMDBGNTk1MTIxNkZGQUMyMDAwRDcxREIgLyog
V2ViR1BVQWRhcHRlci5pZGwgKi8sCi0JCQkJRDAwRjU5NEUyMTZGRjZGMDAwMEQ3MURCIC8qIFdl
YkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmggKi8sCi0JCQkJRDAwRjU5NEMyMTZGREY4RTAwMEQ3MURC
IC8qIFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmlkbCAqLywKKwkJCQlEMDJDMjY5MTIxODE0MTZE
MDBEODE4RTQgLyogV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuaCAqLywKKwkJCQlEMDJDMjY5MjIx
ODE0MTZEMDBEODE4RTQgLyogV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuaWRsICovLAogCQkJCUQw
MEY1OTUzMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuY3BwICovLAogCQkJCUQwMEY1
OTUyMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuaCAqLywKIAkJCQlEMDBGNTk1NDIx
NzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmlkbCAqLywKIAkJCQlEMDkzRDIyOTIxNzk1
NDE2MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgKi8sCiAJCQkJRDA5M0Qy
MjUyMTc5NTFENDAwMzI5MjE3IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCAqLywKIAkJCQlE
MDkzRDIyNzIxNzk1MUQ0MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwgKi8s
CisJCQkJRDA2MTVGQ0QyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5jcHAg
Ki8sCisJCQkJRDA2MTVGQ0MyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5o
ICovLAorCQkJCUQwNjE1RkNFMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUu
aWRsICovLAorCQkJCUQwNjBEODg3MjE4MjY5NzAwMDMzOTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yLmggKi8sCisJCQkJRDA2MEQ4ODQyMTgyNUQ1RjAwMzM5MzE4IC8qIFdlYkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsICovLAogCQkJCUQwREEwQkU1MjE3OTMwRTIwMDdG
RTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uY3BwICovLAogCQkJCUQwREEwQkU0MjE3OTMwRTIwMDdG
RTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uaCAqLywKIAkJCQlEMERBMEJFNjIxNzkzMEUyMDA3RkUy
QUMgLyogV2ViR1BVU3dhcENoYWluLmlkbCAqLywKLQkJCQlEMERBMEJFODIxNzkzQjU2MDA3RkUy
QUMgLyogV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvci5oICovLAotCQkJCUQwREEwQkU5MjE3OTNC
NTYwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yLmlkbCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gd2ViZ3B1OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRDA2
MTVGRDIyMTdGRkVFMzAwOEE0OEE4IC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQlEMDYxNUZEMTIxN0ZGMUUxMDA4QTQ4QTggLyogR1BVRGV2
aWNlTWV0YWwubW0gKi8sCisJCQkJRDA2MEQ4ODkyMTgyODBDMTAwMzM5MzE4IC8qIEdQVVNoYWRl
ck1vZHVsZU1ldGFsLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCURGOUFGRDZGMTNGQzMxQjAwMDE1RkVCNyAvKiBvYmpj
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCAxYzkzODU5
ZWNjMTY4NzRjMGMwN2UzNzNiMjk3M2M0MjUwNWRlYTgwLi4yOGIwZTg1MGQwMTQxNmUxMDhhMTlh
MTcyMDgwYjNkMjk4NTIyZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0xNzYsMTEgKzE3NiwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgbWFjcm8oV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCkgXAogICAgIG1hY3JvKFdl
YkdQVSkgXAogICAgIG1hY3JvKFdlYkdQVUFkYXB0ZXIpIFwKLSAgICBtYWNybyhXZWJHUFVBZGFw
dGVyRGVzY3JpcHRvcikgXAogICAgIG1hY3JvKFdlYkdQVURldmljZSkgXAogICAgIG1hY3JvKFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQpIFwKKyAgICBtYWNybyhXZWJHUFVTaGFkZXJNb2R1bGUpIFwK
ICAgICBtYWNybyhXZWJHUFVTd2FwQ2hhaW4pIFwKLSAgICBtYWNybyhXZWJHUFVTd2FwQ2hhaW5E
ZXNjcmlwdG9yKSBcCiAgICAgbWFjcm8oV2ViTWV0YWxCdWZmZXIpIFwKICAgICBtYWNybyhXZWJN
ZXRhbENvbW1hbmRCdWZmZXIpIFwKICAgICBtYWNybyhXZWJNZXRhbENvbW1hbmRRdWV1ZSkgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IGYxMDU2N2Q2YzI0MmUwZDA5NDJhMjg1ODBj
MGIzOTAwMmI0MDIwMGQuLjE4NzkyNDYwNWE4YTViNTkxMWNkMjk0MDY2ZDZjYWJjMDRmNmRiNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTk5LDYgKzk5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIE0oVmlld3BvcnRzKSBcCiAgICAgTShXZWJBdWRpbykgXAogICAgIE0o
V2ViR0wpIFwKKyAgICBNKFdlYkdQVSkgXAogICAgIE0oV2ViTWV0YWwpIFwKICAgICBNKFdlYlJU
QykgXAogICAgIE0oV2hlZWxFdmVudFRlc3RUcmlnZ2VycykgXApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDliNTUyNjkwYWUy
MWMyZjM0ODQzM2NhZWVlZjEzNjZjZWZlZmJiOTQuLmViN2NhZmY0NGY1NTk3YWYxMDYwNGIwNmZm
NmQxYTAwZmQzOWIwMGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0xMS0wMSAgSnVzdGlu
IEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEV4cGVyaW1l
bnRhbCBwcm90b3R5cGUgZm9yIE1TTCBzaGFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEwODQKKworICAgICAgICBSZXZpZXdlZCBieSBEZWFu
IEphY2tzb24uCisKKyAgICAgICAgKiB3ZWJncHUvc2hhZGVyLW1vZHVsZXMuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHdlYmdwdS93ZWJncHUtYmFzaWNzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
YmdwdS93ZWJncHUtYmFzaWNzLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorCiAyMDE4LTEwLTIzICBS
eWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIyMzcyNjEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvc2hh
ZGVyLW1vZHVsZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1
bGVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYTk0YjMzMDc1ZThkOWMwNjBlZWViMWYxNzMw
MTMzN2ExMTBjZjA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRl
ci1tb2R1bGVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1BBU1MgQmFkIHNoYWRlciBj
b2RlIHNob3VsZCBub3QgY3JlYXRlIGEgbW9kdWxlLgorUEFTUyBJbmNvbXBsZXRlIHNoYWRlciBj
b2RlIHNob3VsZCBub3QgY3JlYXRlIGEgbW9kdWxlLgorUEFTUyBTaGFkZXIgbW9kdWxlIGNyZWF0
ZWQgc3VjY2Vzc2Z1bGx5LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxl
cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODIzYmU5MmQ5ZTQ5YTlkYjQ5YzUzMzAxYjNiYWVkODU2Mjc2MDQ4OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy5odG1sCkBAIC0wLDAgKzEs
MTIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJsaWJyYXJ5X2Z1bGwiIHR5
cGU9Ingtc2hhZGVyL3gtbWV0YWwiPgorICAgICNpbmNsdWRlIDxtZXRhbF9zdGRsaWI+CisgICAg
CisgICAgdXNpbmcgbmFtZXNwYWNlIG1ldGFsOworICAgIAorICAgIHN0cnVjdCBWZXJ0ZXgKKyAg
ICB7CisgICAgICAgIGZsb2F0NCBwb3NpdGlvbiBbW3Bvc2l0aW9uXV07CisgICAgfTsKKyAgICAK
KyAgICB2ZXJ0ZXggVmVydGV4IHZlcnRleF9tYWluKHVpbnQgdmlkIFtbdmVydGV4X2lkXV0pCisg
ICAgeworICAgICAgICBWZXJ0ZXggdjsKKyAgICAgICAgc3dpdGNoICh2aWQpIHsKKyAgICAgICAg
Y2FzZSAwOgorICAgICAgICAgICAgdi5wb3NpdGlvbiA9IGZsb2F0NCgtLjc1LCAtLjc1LCAwLCAx
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICB2LnBv
c2l0aW9uID0gZmxvYXQ0KC43NSwgLS43NSwgMCwgMSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSAyOgorICAgICAgICAgICAgdi5wb3NpdGlvbiA9IGZsb2F0NCgwLCAuNzUsIDAs
IDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB2
LnBvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDEpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB2OworICAgIH0KKyAgICAKKyAgICBmcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbihWZXJ0
ZXggdmVydGV4SW4gW1tzdGFnZV9pbl1dKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZsb2F0NCgx
LjAsIDAuMCwgMC4wLCAxLjApOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0ibGlicmFy
eV9pbmNvbXBsZXRlIiB0eXBlPSJ4LXNoYWRlci94LW1ldGFsIj4KKyAgICAjaW5jbHVkZSA8bWV0
YWxfc3RkbGliPgorICAgIAorICAgIHVzaW5nIG5hbWVzcGFjZSBtZXRhbDsKKyAgICAKKyAgICB2
ZXJ0ZXggVmVydGV4IHZlcnRleF9tYWluKHVpbnQgdmlkIFtbdmVydGV4X2lkXV0pCisgICAgewor
ICAgICAgICBWZXJ0ZXggdjsKKyAgICAgICAgc3dpdGNoICh2aWQpIHsKKyAgICAgICAgY2FzZSAw
OgorICAgICAgICAgICAgdi5wb3NpdGlvbiA9IGZsb2F0NCgtLjc1LCAtLjc1LCAwLCAxKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICB2LnBvc2l0aW9u
ID0gZmxvYXQ0KC43NSwgLS43NSwgMCwgMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAyOgorICAgICAgICAgICAgdi5wb3NpdGlvbiA9IGZsb2F0NCgwLCAuNzUsIDAsIDEpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB2LnBvc2l0
aW9uID0gZmxvYXQ0KDAsIDAsIDAsIDEpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2Owor
ICAgIH0KKyAgICAKKyAgICBmcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbihWZXJ0ZXggdmVy
dGV4SW4gW1tzdGFnZV9pbl1dKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZsb2F0NCgxLjAsIDAu
MCwgMC4wLCAxLjApOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsK
KworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKworbGV0IGNhbnZhczsKK2xldCBjb250ZXh0OworbGV0IGFkYXB0ZXI7CitsZXQgZGVm
YXVsdERldmljZTsKKworYXN5bmMgZnVuY3Rpb24gc2V0VXBDb250ZXh0cygpIHsKKyAgICBjYW52
YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKKyAgICBjb250ZXh0ID0gY2Fu
dmFzLmdldENvbnRleHQoIndlYmdwdSIpOworICAgIGFkYXB0ZXIgPSBhd2FpdCB3aW5kb3cud2Vi
Z3B1LnJlcXVlc3RBZGFwdGVyKHt9KTsKKyAgICBkZWZhdWx0RGV2aWNlID0gYWRhcHRlci5jcmVh
dGVEZXZpY2UoKTsKKworICAgIHNldFVwU2hhZGVycygpOworfQorCitmdW5jdGlvbiBzZXRVcFNo
YWRlcnMoKSB7CisgICAgbGV0IHNoYWRlckRlc2NyaXB0b3IwID0geworICAgICAgICBjb2RlIDog
IkhlbGxvIFdvcmxkIgorICAgIH07CisgICAgbGV0IHNoYWRlck1vZHVsZSA9IGRlZmF1bHREZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHNoYWRlckRlc2NyaXB0b3IwKTsKKyAgICBpZiAoIXNoYWRl
ck1vZHVsZSkKKyAgICAgICAgdGVzdFBhc3NlZCgiQmFkIHNoYWRlciBjb2RlIHNob3VsZCBub3Qg
Y3JlYXRlIGEgbW9kdWxlLiIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgiQmFkIHNo
YWRlciBjb2RlIGNyZWF0ZWQgYSB2YWxpZCBtb2R1bGUhIik7CisKKyAgICBsZXQgc2hhZGVyRGVz
Y3JpcHRvcjEgPSB7CisgICAgICAgIGNvZGUgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGli
cmFyeV9pbmNvbXBsZXRlIikudGV4dAorICAgIH07CisKKyAgICBzaGFkZXJNb2R1bGUgPSBkZWZh
dWx0RGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZShzaGFkZXJEZXNjcmlwdG9yMSk7CisgICAgaWYg
KCFzaGFkZXJNb2R1bGUpCisgICAgICAgIHRlc3RQYXNzZWQoIkluY29tcGxldGUgc2hhZGVyIGNv
ZGUgc2hvdWxkIG5vdCBjcmVhdGUgYSBtb2R1bGUuIik7CisgICAgZWxzZQorICAgICAgICB0ZXN0
RmFpbGVkKCJJbmNvbXBsZXRlIHNoYWRlciBjb2RlIGNyZWF0ZWQgYSB2YWxpZCBtb2R1bGUhIik7
CisgICAgCisgICAgbGV0IHNoYWRlckRlc2NyaXB0b3IyID0geworICAgICAgICBjb2RlIDogZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpYnJhcnlfZnVsbCIpLnRleHQKKyAgICB9OworCisgICAg
c2hhZGVyTW9kdWxlID0gZGVmYXVsdERldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoc2hhZGVyRGVz
Y3JpcHRvcjIpOworICAgIGlmIChzaGFkZXJNb2R1bGUpCisgICAgICAgIHRlc3RQYXNzZWQoIlNo
YWRlciBtb2R1bGUgY3JlYXRlZCBzdWNjZXNzZnVsbHkuIik7CisgICAgZWxzZSAKKyAgICAgICAg
dGVzdEZhaWxlZCgiU2hhZGVyIG1vZHVsZSBub3QgY3JlYXRlZCBzdWNjZXNzZnVsbHkhIik7Cit9
CisKK3NldFVwQ29udGV4dHMoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWIxZTUyNDEy
MDFjODQxYzcxOGMwM2VjZWY2NGU2OWEwMThiOGM4MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3dlYmdwdS93ZWJncHUtYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAK
K1BBU1MgW29iamVjdCBXZWJHUFVdIGlzIGRlZmluZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dlYmdwdS1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS93ZWJncHUtYmFzaWNz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjdjNzY3MmZkNWMxMTlhYTI4NWE1MzQ2MTBjZTBlNDEzYzRiN2M1
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS93ZWJncHUtYmFzaWNzLmh0
bWwKQEAgLTAsMCArMSw4NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0ibGli
cmFyeSIgdHlwZT0ieC1zaGFkZXIveC1tZXRhbCI+CisgICAgI2luY2x1ZGUgPG1ldGFsX3N0ZGxp
Yj4KKyAgICAKKyAgICB1c2luZyBuYW1lc3BhY2UgbWV0YWw7CisgICAgCisgICAgc3RydWN0IFZl
cnRleAorICAgIHsKKyAgICAgICAgZmxvYXQ0IHBvc2l0aW9uIFtbcG9zaXRpb25dXTsKKyAgICB9
OworICAgIAorICAgIHZlcnRleCBWZXJ0ZXggdmVydGV4X21haW4odWludCB2aWQgW1t2ZXJ0ZXhf
aWRdXSkKKyAgICB7CisgICAgICAgIFZlcnRleCB2OworICAgICAgICBzd2l0Y2ggKHZpZCkgewor
ICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICB2LnBvc2l0aW9uID0gZmxvYXQ0KC0uNzUsIC0u
NzUsIDAsIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAg
ICAgIHYucG9zaXRpb24gPSBmbG9hdDQoLjc1LCAtLjc1LCAwLCAxKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICB2LnBvc2l0aW9uID0gZmxvYXQ0KDAs
IC43NSwgMCwgMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHYucG9zaXRpb24gPSBmbG9hdDQoMCwgMCwgMCwgMSk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHY7CisgICAgfQorICAgIAorICAgIGZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9t
YWluKFZlcnRleCB2ZXJ0ZXhJbiBbW3N0YWdlX2luXV0pCisgICAgeworICAgICAgICByZXR1cm4g
ZmxvYXQ0KDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0Pgor
J3VzZSBzdHJpY3QnOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgd2luZG93LnRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworCitsZXQgY2FudmFzOworbGV0IGNvbnRleHQ7CitsZXQgYWRh
cHRlcjsKK2xldCBkZWZhdWx0RGV2aWNlOworCithc3luYyBmdW5jdGlvbiBzZXRVcENvbnRleHRz
KCkgeworICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAg
IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ3B1Iik7CisgICAgaWYgKCFjb250ZXh0
KQorICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVSBjb250ZXh0ISIp
OworCisgICAgc2hvdWxkQmVEZWZpbmVkKHdpbmRvdy53ZWJncHUpOworICAgIAorICAgIGFkYXB0
ZXIgPSBhd2FpdCB3aW5kb3cud2ViZ3B1LnJlcXVlc3RBZGFwdGVyKHt9KTsKKyAgICBpZiAoIWFk
YXB0ZXIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBkZWZhdWx0IFdl
YkdQVUFkYXB0ZXIhIikKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRlZmF1bHREZXZp
Y2UgPSBhZGFwdGVyLmNyZWF0ZURldmljZSgpOworICAgIGlmICghZGVmYXVsdERldmljZSkgewor
ICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVURldmljZSEiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNldFVwU2hhZGVycygpOworfQorCitmdW5jdGlv
biBzZXRVcFNoYWRlcnMoKSB7CisgICAgbGV0IHNoYWRlckRlc2NyaXB0b3IgPSB7CisgICAgICAg
IGNvZGU6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaWJyYXJ5IikudGV4dAorICAgIH07Cisg
ICAgbGV0IHNoYWRlck1vZHVsZSA9IGRlZmF1bHREZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHNo
YWRlckRlc2NyaXB0b3IpOworICAgIGlmICghc2hhZGVyTW9kdWxlKQorICAgICAgICB0ZXN0RmFp
bGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVVNoYWRlck1vZHVsZSEiKTsKK30KKworc2V0VXBD
b250ZXh0cygpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>