<?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>191291</bug_id>
          
          <creation_ts>2018-11-05 18:32:38 -0800</creation_ts>
          <short_desc>[WebGPU] Experimental prototype for WebGPURenderPipeline and WebGPUSwapChain</short_desc>
          <delta_ts>2018-11-06 20:37:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Fan">justin_fan</reporter>
          <assigned_to name="Justin Fan">justin_fan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1475364</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-05 18:32:38 -0800</bug_when>
    <thetext>[WebGPU] Experimental prototype for WebGPURenderPipeline and WebGPUSwapChain</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475372</commentid>
    <comment_count>1</comment_count>
      <attachid>353940</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-05 18:49:42 -0800</bug_when>
    <thetext>Created attachment 353940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475374</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-05 18:51:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/45829392&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475375</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-05 18:52:28 -0800</bug_when>
    <thetext>Attachment 353940 did not pass style-queue:


ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:38:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 3 in 41 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>1475376</commentid>
    <comment_count>4</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-05 18:54:28 -0800</bug_when>
    <thetext>For the style failure: IDL and binding code are expecting all-caps enums, at least in the current version of WebGPU.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475645</commentid>
    <comment_count>5</comment_count>
      <attachid>353993</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-06 12:59:38 -0800</bug_when>
    <thetext>Created attachment 353993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475648</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-06 13:04:41 -0800</bug_when>
    <thetext>Attachment 353993 did not pass style-queue:


ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:38:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 3 in 44 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>1475701</commentid>
    <comment_count>7</comment_count>
      <attachid>354005</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-06 14:26:18 -0800</bug_when>
    <thetext>Created attachment 354005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475704</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-06 14:29:43 -0800</bug_when>
    <thetext>Attachment 354005 did not pass style-queue:


ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:38:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 3 in 45 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>1475737</commentid>
    <comment_count>9</comment_count>
      <attachid>354018</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-06 15:32:33 -0800</bug_when>
    <thetext>Created attachment 354018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475738</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-06 15:35:38 -0800</bug_when>
    <thetext>Attachment 354018 did not pass style-queue:


ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:38:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 3 in 45 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>1475740</commentid>
    <comment_count>11</comment_count>
      <attachid>354019</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-06 15:40:26 -0800</bug_when>
    <thetext>Created attachment 354019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475741</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-06 15:42:06 -0800</bug_when>
    <thetext>Attachment 354019 did not pass style-queue:


ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:38:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 3 in 45 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>1475776</commentid>
    <comment_count>13</comment_count>
      <attachid>354034</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-06 17:05:18 -0800</bug_when>
    <thetext>Created attachment 354034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475778</commentid>
    <comment_count>14</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-06 17:07:41 -0800</bug_when>
    <thetext>Attachment 354034 did not pass style-queue:


ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:38:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 3 in 44 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>1475818</commentid>
    <comment_count>15</comment_count>
      <attachid>354034</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-11-06 18:32:36 -0800</bug_when>
    <thetext>Comment on attachment 354034
Patch

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

&gt; Source/WebCore/Modules/webgpu/GPUPipelineDescriptorBase.h:37
&gt; +    Vector&lt;GPUPipelineStageDescriptor&gt; stages;

Are you sure this is the right internal design? We need to differentiate between the vertex shader and the fragment shader when we compile the state. That shouldn&apos;t have to iterate through a list of things just to find which item is for the fragment shader.

&gt; Source/WebCore/Modules/webgpu/GPUPipelineStageDescriptor.h:37
&gt; +    const GPUShaderModule&amp; module;

What happens when the module gets garbage collected? Will this be dangling?

&gt; Source/WebCore/Modules/webgpu/GPURenderPipelineDescriptor.h:37
&gt; +struct GPURenderPipelineDescriptor : GPUPipelineDescriptorBase {

Why struct?

&gt; Source/WebCore/Modules/webgpu/GPURenderPipelineDescriptor.h:52
&gt; +    int primitiveTopology;

This shouldn&apos;t be an int.

&gt; Source/WebCore/Modules/webgpu/WebGPUPipelineStageDescriptor.h:39
&gt; +    const WebGPUShaderModule* module = nullptr;

Ditto about the garbage collector

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

enum class

&gt; Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:39
&gt; +        VERTEX = 0,
&gt; +        FRAGMENT = 1,
&gt; +        COMPUTE = 2

Can we use different internal names for these? Our style is not to use ALL CAPS.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPURenderPipeline.h:50
&gt; +#else
&gt; +using PlatformRenderPipeline = void;
&gt; +using PlatformRenderPipelineSmartPtr = RefPtr&lt;void&gt;;
&gt; +#endif

I think it&apos;s fine to assume we&apos;re not using metal for now. We can break that assumption one day when the linux ports want WebGPU.

&gt; Source/WebCore/Modules/webgpu/cocoa/GPURenderPipelineMetal.mm:88
&gt; +    BEGIN_BLOCK_OBJC_EXCEPTIONS;

We should be deliberate about where we use these.

&gt; Source/WebCore/bindings/js/WebCoreBuiltinNames.h:182
&gt; +    macro(WebGPURenderPipeline) \
&gt; +    macro(WebGPUShaderStage) \

Why aren&apos;t the other objects in here?

&gt; LayoutTests/webgpu/render-pipelines.html:5
&gt; +&lt;script id=&quot;library&quot; type=&quot;x-shader/x-metal&quot;&gt;

😐

&gt; LayoutTests/webgpu/webgpu-basics.html:129
&gt; +    // let commandBuffer = defaultDevice.createCommandBuffer();
&gt; +    // if (!commandBuffer) {
&gt; +    //     testFailed(&quot;Could not create WebGPUCommandBuffer!&quot;);
&gt; +    //     return;
&gt; +    // }
&gt; +
&gt; +    // let texture = context.getNextTexture();
&gt; +    // if (!texture) {
&gt; +    //     testFailed(&quot;Could not get next WebGPUTexture!&quot;);
&gt; +    //     return;
&gt; +    // }
&gt; +
&gt; +    // let textureView = context.createTextureView();
&gt; +    // if (!textureView) {
&gt; +    //     testFailed(&quot;Could not create WebGPUTextureView!&quot;);
&gt; +    //     return;
&gt; +    // }
&gt; +
&gt; +    // // FIXME: Flesh out the rest of WebGPURenderPassDescriptor. Default loadOp, storeOp, clearColor for now.
&gt; +    // let renderPassDescriptor = {
&gt; +    //     attachment : textureView
&gt; +    // };
&gt; +
&gt; +    // let renderPassEncoder = commandBuffer.beginRenderPass(renderPassDescriptor);
&gt; +    // renderPassEncoder.setPipeline(renderPipeline);
&gt; +
&gt; +    // // Note that we didn&apos;t attach any buffers - the shader is generating the vertices for us.
&gt; +    // renderPassEncoder.draw(3, 1, 0, 0);
&gt; +    // renderPassEncoder.endPass();
&gt; +
&gt; +    // let queue = device.getQueue();
&gt; +    // if (!queue) {
&gt; +    //     testFailed(&quot;Unable to create default WebGPUQueue!&quot;);
&gt; +    //     return;
&gt; +    // }
&gt; +    // queue.submit([commandBuffer]);
&gt; +
&gt; +    // context.present();

We don&apos;t leave code commented in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475826</commentid>
    <comment_count>16</comment_count>
      <attachid>354047</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-06 18:58:05 -0800</bug_when>
    <thetext>Created attachment 354047
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475827</commentid>
    <comment_count>17</comment_count>
      <attachid>354048</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-06 19:01:01 -0800</bug_when>
    <thetext>Created attachment 354048
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475830</commentid>
    <comment_count>18</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2018-11-06 19:02:02 -0800</bug_when>
    <thetext>I&apos;m removing the commented code from my test for now, but I will submit another patch to clean up the implementation after I get a demo working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475834</commentid>
    <comment_count>19</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-06 19:07:39 -0800</bug_when>
    <thetext>Attachment 354048 did not pass style-queue:


ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:38:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/Modules/webgpu/WebGPUShaderStage.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 3 in 56 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>1475856</commentid>
    <comment_count>20</comment_count>
      <attachid>354048</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-06 20:37:12 -0800</bug_when>
    <thetext>Comment on attachment 354048
Patch for landing

Clearing flags on attachment: 354048

Committed r237912: &lt;https://trac.webkit.org/changeset/237912&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475857</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-06 20:37:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353940</attachid>
            <date>2018-11-05 18:49:42 -0800</date>
            <delta_ts>2018-11-06 12:59:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191291-20181105184941.patch</filename>
            <type>text/plain</type>
            <size>84197</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3ODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM0NWVjODFlOTM1MDQx
ZGZkMmM5MTU2OThlMWM0NjIwNzNlOWZmMy4uYjg4YTNlYmZhNzA1MmU0YmViYWRlNWYwODhmZmM3
MzFmOTUxN2M0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE4LTExLTA1ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRXhwZXJp
bWVudGFsIHByb3RvdHlwZSBmb3IgV2ViR1BVUmVuZGVyUGlwZWxpbmUgYW5kIFdlYkdQVVN3YXBD
aGFpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkx
MjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dDogd2ViZ3B1L3JlbmRlci1waXBlbGluZXMuaHRtbAorICAgICAgICBBbHNvIHVwZGF0ZSB0ZXN0
IHdlYmdwdS93ZWJncHUtYmFzaWNzLmh0bWwgdG8gY3JlYXRlIGEgV2ViR1BVUmVuZGVyUGlwZWxp
bmUuCisKKyAgICAgICAgQmVnaW4gaW1wbGVtZW50YXRpb24gb2YgV2ViR1BVUmVuZGVyUGlwZWxp
bmUgYW5kIFdlYkdQVVN3YXBDaGFpbi4gQSBXZWJHUFVSZW5kZXJQaXBlbGluZSBpcyBiYWNrZWQg
YnkgYQorICAgICAgICBHUFVSZW5kZXJQaXBlbGluZSwgY3JlYXRlZCBsYXppbHkgdXNpbmcgdGhl
IHByb3BlcnRpZXMgb2YgdGhlIHBhc3NlZC1pbiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuCisgICAgICAgIE9uIE1ldGFsLXN1cHBvcnRlZCBzeXN0ZW1zLCBHUFVSZW5kZXJQaXBlbGlu
ZSBpcyBhbiBpbnRlcmZhY2UgdG8gYSBNVExSZW5kZXJQaXBlbGluZVN0YXRlLgorICAgICAgICBU
aGUgTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSBpcyBjcmVhdGVkIHdpdGggdGhlIFdlYkdQVURldmlj
ZSBjdXJyZW50bHkgY29uZmlndXJlZCBvbiB0aGUgV2ViR1BVUmVuZGVyaW5nQ29udGV4dC4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdQVURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUgY29uc3QpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L0dQVURldmljZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVBp
cGVsaW5lRGVzY3JpcHRvckJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVQaXBl
bGluZVN0YWdlRGVzY3JpcHRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5oOgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yOjpHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpwcmltaXRpdmVUb3BvbG9neSk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdQVURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUgY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BV
RGV2aWNlOjphZGFwdGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6
ZGV2aWNlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2Uu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3Jp
cHRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNj
cmlwdG9yLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVJlbmRlclBpcGVsaW5lOjpXZWJHUFVSZW5kZXJQaXBl
bGluZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGw6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlk
bDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpXZWJHUFVSZW5kZXJpbmdDb250
ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmg6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHUFVTaGFkZXJNb2R1bGU6Om1vZHVsZSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU3dhcENoYWluLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVN3YXBDaGFpbjo6Y29u
ZmlndXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVN3YXBDaGFpbjo6cmVzaGFwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHUFVTd2FwQ2hhaW46Om1hcmtMYXllckNvbXBvc2l0ZWQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR1BVU3dhcENoYWluOjpXZWJHUFVTd2FwQ2hhaW4pOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
Y29jb2EvR1BVUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdQVVJlbmRlclBp
cGVsaW5lOjpwbGF0Zm9ybVJlbmRlclBpcGVsaW5lIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnNldEZ1bmN0aW9uc0ZvclBpcGVsaW5lRGVzY3JpcHRvcik6CisgICAgICAgIChX
ZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQ
VVJlbmRlclBpcGVsaW5lOjpHUFVSZW5kZXJQaXBlbGluZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvY29jb2EvR1BVU3dhcENoYWluLmg6CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hh
aW46OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29h
L0dQVVN3YXBDaGFpbk1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpHUFVTd2FwQ2hhaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpzZXREZXZpY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R1BVU3dhcENoYWluOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVN3YXBD
aGFpbjo6cHJlc2VudCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorCiAyMDE4LTEx
LTAxICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQ
VV0gRXhwZXJpbWVudGFsIHByb3RvdHlwZSBmb3IgTVNMIHNoYWRlcnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggOWFlYjJkZGNjZDliMGE4NjIyNjc1MzM1NzY2NjY3YzViN2FmZDY2Yy4uMjExNDEw
OTU4NzdjOTU4ZTllOTVhMzkxMDUwMjQ2OTA1MDYxMGU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTQ1Myw5ICs0NTMsMTQgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUFkYXB0ZXJEZXNjcmlwdG9yLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5p
ZGwKKyAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbAor
ICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmlkbAorICAg
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbAorICAgIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwKICAgICBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNo
YWRlck1vZHVsZS5pZGwKICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmlkbAorICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0YWdlLmlkbAogICAg
IE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwKIAogICAgIE1vZHVsZXMvd2Vic29j
a2V0cy9DbG9zZUV2ZW50LmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZGNj
NzcyYzY2NmI3ZjlhMDBkOGU3MGRkYWI4Yzg4ZGFjNmM0NDAzMS4uZjk1OTA5MDMwOGMyNTUxMjFj
NGZmZTk1MzQ3NDYwMTAyNDY2MjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC0zNzMsOSArMzczLDE0IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmlkbCBcCisgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgXAorICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3IuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
clN0YWdlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hh
aW4uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50Lmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcAppbmRleCBlODUxMTQ0
MDU4ZGIzNzJmMGM0ZDEzNjVjMDJmNTg2YmE5NzE1ZTYwLi4wNGM5NjdmMmJkZTQ4ZmFhZjU1OGNm
Nzk0NzQ1ZDdlNTg5NDg5ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQ
VURldmljZS5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNp
bmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZS5oIgorI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgogI2luY2x1ZGUgIkdQ
VVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCIKIApAQCAtMzgsNiArNDAsMTEgQEAgUmVmUHRyPEdQ
VVNoYWRlck1vZHVsZT4gR1BVRGV2aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvciYKICAgICByZXR1cm4gR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUoKnRoaXMs
IFdURk1vdmUoZGVzY3JpcHRvcikpOwogfQogCitSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IEdQ
VURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
JiYgZGVzY3JpcHRvcikgY29uc3QKK3sKKyAgICByZXR1cm4gR1BVUmVuZGVyUGlwZWxpbmU6OmNy
ZWF0ZSgqdGhpcywgV1RGTW92ZShkZXNjcmlwdG9yKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L0dQVURldmljZS5oCmluZGV4IGMxOWUxZWNmZjViN2Y4ZDAzZDc1ZjNjODcxOTFjZDg3
OTE4N2IxYWIuLmY2N2I1MzE0OWMxYTU1YmIyNTdiMzIzNjY0YWQ1ZDRiNWZmN2VmOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5oCkBAIC00NiwxNCArNDYsMTgg
QEAgdXNpbmcgUGxhdGZvcm1EZXZpY2VTbWFydFB0ciA9IFJlZlB0cjx2b2lkPjsKICNlbmRpZgog
CiBjbGFzcyBHUFVTaGFkZXJNb2R1bGU7CitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZTsKIAogc3Ry
dWN0IEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3I7CitzdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yOwogCiBjbGFzcyBHUFVEZXZpY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVEZXZp
Y2U+IHsKKwogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R1BVRGV2aWNlPiBjcmVhdGUoKTsK
IAogICAgIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9yJiYpIGNvbnN0OworICAgIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGlu
ZT4gY3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYpIGNv
bnN0OwogCiAgICAgUGxhdGZvcm1EZXZpY2UgKnBsYXRmb3JtRGV2aWNlKCkgY29uc3QgeyByZXR1
cm4gbV9wbGF0Zm9ybURldmljZS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmUyNzU1YjllMjY2YTJlOGIzOGZhNWQ0YjA4ZmQ3ZTE0ZTI4MTI2OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5lRGVzY3JpcHRv
ckJhc2UuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3Iu
aCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dHJ1Y3QgR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7CisgICAgVmVjdG9yPEdQVVBpcGVsaW5l
U3RhZ2VEZXNjcmlwdG9yPiBzdGFnZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTBjZGQ0OGQwYmIxNGM5M2RmZDI5Y2EyMjA5Y2QwZTc0Y2FlOWE3NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5lU3RhZ2VEZXNjcmlw
dG9yLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgorCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yIHsKKyAgICBjb25zdCBHUFVTaGFkZXJNb2R1bGUm
IG1vZHVsZTsKKyAgICB1bnNpZ25lZCBsb25nIHN0YWdlOworICAgIFN0cmluZyBlbnRyeVBvaW50
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAzNWVhNjIyMTU4ZDM0NjhlMzdm
ZDFkNTZkODMyMzVjZDNhNTRjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgiCisjaW5jbHVkZSAiR1BVUGlwZWxp
bmVTdGFnZURlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDogR1BV
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7CisgICAgZW51bSB7CisgICAgICAgIFBvaW50TGlzdCwK
KyAgICAgICAgTGluZUxpc3QsCisgICAgICAgIExpbmVTdHJpcCwKKyAgICAgICAgVHJpYW5nbGVM
aXN0LAorICAgICAgICBUcmlhbmdsZVN0cmlwCisgICAgfTsKKworICAgIEdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcihWZWN0b3I8R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I+JiYgc3RhZ2Vz
LCBpbnQgdG9wb2xvZ3kpCisgICAgICAgIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7IFdU
Rk1vdmUoc3RhZ2VzKSB9CisgICAgICAgICwgcHJpbWl0aXZlVG9wb2xvZ3kodG9wb2xvZ3kpCisg
ICAgeworICAgIH0KKworICAgIGludCBwcmltaXRpdmVUb3BvbG9neTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAppbmRleCAxMGI5YmYzZGY1ODFh
OTVhZTM3NmI2MmQ4YWRkMWEyYWVjYTlhNzc0Li5jYzA0ZGZjZmJjNWIyYjZlZTMxMzc1OGIxMGVk
YTQwOTU5ZTZkZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5jcHAKQEAgLTI4LDkgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCi0j
aW5jbHVkZSAiV2ViR1BVQWRhcHRlci5oIgotCisjaW5jbHVkZSAiR1BVUGlwZWxpbmVTdGFnZURl
c2NyaXB0b3IuaCIKKyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKICNp
bmNsdWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAi
V2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKICNpbmNsdWRlICJX
ZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCiAKQEAgLTU3LDYgKzYxLDIwIEBAIFJlZlB0
cjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVURldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKFdl
YkdQVVNoYWRlck1vZHVsZURlCiAgICAgcmV0dXJuIFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRl
KG1fZGV2aWNlLT5jcmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7
IGRlc2NyaXB0b3IuY29kZSB9KSk7CiB9CiAKK1JlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4g
V2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAoreworICAgIFZlY3RvcjxHUFVQaXBlbGluZVN0
YWdlRGVzY3JpcHRvcj4gc3RhZ2VzOworICAgIGZvciAoY29uc3QgYXV0byYgc3RhZ2VEZXNjcmlw
dG9yIDogZGVzY3JpcHRvci5zdGFnZXMpIHsKKyAgICAgICAgaWYgKCFzdGFnZURlc2NyaXB0b3Iu
bW9kdWxlKSB7CisgICAgICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVRGV2aWNlOjpjcmVhdGVS
ZW5kZXJQaXBlbGluZSgpOiBXZWJHUFVTaGFkZXJNb2R1bGUgbm90IGZvdW5kISIpOworICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgc3RhZ2VzLmFwcGVuZCh7
IHN0YWdlRGVzY3JpcHRvci5tb2R1bGUtPm1vZHVsZSgpLCBzdGFnZURlc2NyaXB0b3Iuc3RhZ2Us
IHN0YWdlRGVzY3JpcHRvci5lbnRyeVBvaW50IH0pOworICAgIH0KKworICAgIHJldHVybiBXZWJH
UFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZShH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKHN0YWdlcyksIHN0YXRpY19jYXN0
PGludD4oZGVzY3JpcHRvci5wcmltaXRpdmVUb3BvbG9neSkgfSkpOworfQorCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVE
ZXZpY2UuaAppbmRleCA0ZDViMGJhYzE3NTk2MWE4ZGVlN2U5MjE4NjZiZmJhNzBmYTEzNzMxLi43
YzI3ZTBiOTcyMzJkMjhhNjA1YTA0ZWJlMzFiNjY4OTQ4ZjBiZGEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaApAQCAtMjgsNiArMjgsNyBAQAogI2lm
IEVOQUJMRShXRUJHUFUpCiAKICNpbmNsdWRlICJHUFVEZXZpY2UuaCIKKyNpbmNsdWRlICJXZWJH
UFVBZGFwdGVyLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KQEAgLTM3LDE3ICszOCwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBXZWJHUFVBZGFwdGVyOworY2xhc3MgV2Vi
R1BVUmVuZGVyUGlwZWxpbmU7CiBjbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGU7CiAKK3N0cnVjdCBX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7CiBzdHJ1Y3QgV2ViR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVRGV2aWNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
R1BVRGV2aWNlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxXZWJHUFVEZXZpY2U+IGNy
ZWF0ZShSZWY8V2ViR1BVQWRhcHRlcj4mJik7CiAKLSAgICBXZWJHUFVBZGFwdGVyJiBhZGFwdGVy
KCkgY29uc3QgeyByZXR1cm4gbV9hZGFwdGVyLmdldCgpOyB9CisgICAgY29uc3QgV2ViR1BVQWRh
cHRlciYgYWRhcHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWRhcHRlci5nZXQoKTsgfQorICAgIGNv
bnN0IEdQVURldmljZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gKm1fZGV2aWNlOyB9CiAKICAg
ICBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvciYmKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViR1BVUmVuZGVyUGlw
ZWxpbmU+IGNyZWF0ZVJlbmRlclBpcGVsaW5lKFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciYmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBXZWJHUFVEZXZpY2UoUmVmPFdlYkdQVUFkYXB0
ZXI+JiYsIFJlZlB0cjxHUFVEZXZpY2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVURldmljZS5pZGwKaW5kZXggZDFhOWYxYTJjOWMzM2Q1NzMwMmFkMjk3NDg2
MTg1Y2I2YmUyN2NlYy4uNjAzZTM3NmNiMzhlMTA0NWVkODkxYzAyZDMxZjY5NTkxYzgzYzcyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCkBA
IC0zNCw2ICszNCw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVUFkYXB0ZXIgYWRh
cHRlcjsKIAogICAgIFdlYkdQVVNoYWRlck1vZHVsZSBjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKKyAgICBXZWJHUFVSZW5kZXJQaXBl
bGluZSBjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Ig
ZGVzY3JpcHRvcik7CiAKIC8qIFRvIEJlIEltcGxlbWVudGVkOgogICAgIFdlYkdQVUJ1ZmZlciBj
cmVhdGVCdWZmZXIoV2ViR1BVQnVmZmVyRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKQEAgLTQ5LDgg
KzUwLDYgQEAKICAgICBXZWJHUFVJbnB1dFN0YXRlIGNyZWF0ZUlucHV0U3RhdGUoV2ViR1BVSW5w
dXRTdGF0ZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BVQXR0YWNobWVudFN0YXRl
IGNyZWF0ZUF0dGFjaG1lbnRTdGF0ZShXZWJHUFVBdHRhY2htZW50U3RhdGVEZXNjcmlwdG9yIGRl
c2NyaXB0b3IpOwogICAgIFdlYkdQVUNvbXB1dGVQaXBlbGluZSBjcmVhdGVDb21wdXRlUGlwZWxp
bmUoV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJH
UFVSZW5kZXJQaXBlbGluZSBjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0KICAgICBXZWJHUFVDb21tYW5kQnVmZmVyIGNyZWF0
ZUNvbW1hbmRCdWZmZXIoV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IgZGVzY3JpcHRvcik7
CiAgICAgV2ViR1BVRmVuY2UgY3JlYXRlRmVuY2UoV2ViR1BVRmVuY2VEZXNjcmlwdG9yIGRlc2Ny
aXB0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzEyMWE5YmE1Njgz
NzQwMTQzY2VjMzA1OTA4MmJjODJjYTU0MTU5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaApAQCAt
MCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisjaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFdlYkdQ
VVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgeworICAgIFZlY3RvcjxXZWJHUFVQaXBlbGluZVN0YWdl
RGVzY3JpcHRvcj4gc3RhZ2VzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkZGQw
M2RhN2RjOTJiNDQwNzM3NDg1OGQ5ODk4NTBlZmM4M2ExYjEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
LmlkbApAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9n
cHV3ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCisKK2RpY3Rpb25h
cnkgV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7CisgICAgLy8gV2ViR1BVUGlwZWxpbmVM
YXlvdXQgbGF5b3V0OworICAgIHNlcXVlbmNlPFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9y
PiBzdGFnZXM7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNmM2Fl
MDk1NjUwMGQ0ZjdiMzdjNWU1MDdkMDg3YWRmMGFkYTE2NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9y
LmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZS5oIgorCisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcg
V2ViR1BVU2hhZGVyU3RhZ2VFbnVtID0gdW5zaWduZWQgbG9uZzsKKworc3RydWN0IFdlYkdQVVBp
cGVsaW5lU3RhZ2VEZXNjcmlwdG9yIHsKKyAgICBjb25zdCBXZWJHUFVTaGFkZXJNb2R1bGUqIG1v
ZHVsZSA9IG51bGxwdHI7CisgICAgV2ViR1BVU2hhZGVyU3RhZ2VFbnVtIHN0YWdlOworICAgIFN0
cmluZyBlbnRyeVBvaW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmlkbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMmNiYjkwNTY3OTk4OGNjMWMzNTMyNmI5MzhkY2RkOWJiNjUzNGVhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURl
c2NyaXB0b3IuaWRsCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8gaHR0cHM6Ly9naXRo
dWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWduL3NrZXRjaC53ZWJpZGwKKwor
dHlwZWRlZiB1bnNpZ25lZCBsb25nIFdlYkdQVVNoYWRlclN0YWdlRW51bTsKKworZGljdGlvbmFy
eSBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvciB7CisgICAgV2ViR1BVU2hhZGVyTW9kdWxl
IG1vZHVsZTsKKyAgICBXZWJHUFVTaGFkZXJTdGFnZUVudW0gc3RhZ2U7CisgICAgRE9NU3RyaW5n
IGVudHJ5UG9pbnQ7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiM2MwMjAwNDI4MmQ3YmVh
MjMyZmFlZmRkNzU2ODU3ZDU0ZmRhNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKQEAgLTAsMCArMSw1MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5k
ZXJQaXBlbGluZS5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVJlbmRl
clBpcGVsaW5lLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPFdlYkdQVVJlbmRl
clBpcGVsaW5lPiBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKFJlZlB0cjxHUFVSZW5kZXJQ
aXBlbGluZT4mJiBwaXBlbGluZSkKK3sKKyAgICBpZiAoIXBpcGVsaW5lKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR1BVUmVuZGVyUGlwZWxp
bmUoV1RGTW92ZShwaXBlbGluZSkpKTsKK30KKworV2ViR1BVUmVuZGVyUGlwZWxpbmU6OldlYkdQ
VVJlbmRlclBpcGVsaW5lKFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKKyAg
ICA6IG1fcmVuZGVyUGlwZWxpbmUocGlwZWxpbmUpCit7CisgICAgVU5VU0VEX1BBUkFNKG1fcmVu
ZGVyUGlwZWxpbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBpcGVsaW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI1MTA2MmNkZDI2MTk4YzBmYTBlOTdm
ODY5MmJmNzZjNmZhYTExYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQ
VVJlbmRlclBpcGVsaW5lLmgiCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHUFVS
ZW5kZXJQaXBlbGluZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVJlbmRlclBpcGVsaW5lPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRl
KFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4mJik7CisKK3ByaXZhdGU6CisgICAgV2ViR1BVUmVu
ZGVyUGlwZWxpbmUoUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiYmKTsKKworICAgIFJlZlB0cjxH
UFVSZW5kZXJQaXBlbGluZT4gbV9yZW5kZXJQaXBlbGluZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTQ2ZDAxYTI5NWUxYWFkZGExNzZkOTU1YWQyOWVlNDkwYjQxMDNkNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5l
LmlkbApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9n
cHV3ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCisKK1sKKyAgICBD
b25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUsCisgICAgSW1w
bGVtZW50YXRpb25MYWNrc1ZUYWJsZQorXSBpbnRlcmZhY2UgV2ViR1BVUmVuZGVyUGlwZWxpbmUg
eworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZlZWM1ZDhiNmZl
ZTI5NWU1ZjQwMTEwOWRhMWJhZDgxZTJlOGQ1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCkBA
IC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciA6IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgeworICAgIGVudW0gY2xhc3MgUHJpbWl0
aXZlVG9wb2xvZ3kgeworICAgICAgICBQb2ludExpc3QsCisgICAgICAgIExpbmVMaXN0LAorICAg
ICAgICBMaW5lU3RyaXAsCisgICAgICAgIFRyaWFuZ2xlTGlzdCwKKyAgICAgICAgVHJpYW5nbGVT
dHJpcAorICAgIH07CisKKyAgICBQcmltaXRpdmVUb3BvbG9neSBwcmltaXRpdmVUb3BvbG9neTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTc4YTc2NmQzYmE5
MDBlMjA4ODJhMmE3ZWZkYjJmN2Y1YzIzNzk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbApA
QCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIv
Z3B1d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCisKK2VudW0gV2ViR1BVUHJp
bWl0aXZlVG9wb2xvZ3kgeworICAgICJwb2ludExpc3QiLAorICAgICJsaW5lTGlzdCIsCisgICAg
ImxpbmVTdHJpcCIsCisgICAgInRyaWFuZ2xlTGlzdCIsCisgICAgInRyaWFuZ2xlU3RyaXAiCit9
OworCitkaWN0aW9uYXJ5IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IFdlYkdQVVBp
cGVsaW5lRGVzY3JpcHRvckJhc2UgeworICAgIFdlYkdQVVByaW1pdGl2ZVRvcG9sb2d5IHByaW1p
dGl2ZVRvcG9sb2d5OworICAgIC8qIFRvIEJlIEltcGxlbWVudGVkOgorICAgIHNlcXVlbmNlPFdl
YkdQVUJsZW5kU3RhdGU+IGJsZW5kU3RhdGVzOworICAgIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRl
IGRlcHRoU3RlbmNpbFN0YXRlOworICAgIFdlYkdQVUlucHV0U3RhdGUgaW5wdXRTdGF0ZTsKKyAg
ICBXZWJHUFVBdHRhY2htZW50c1N0YXRlIGF0dGFjaG1lbnRzU3RhdGU7ICovCisgICAgLy8gVE9E
TyBvdGhlciBwcm9wZXJ0aWVzCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAwYmQyNzY0M2FlYjFl
NWVlZDE2MjQ2NDkwNjE5ZmQ2MTFjZGU0YzdjLi5lYzNlMDc2ZDViMmQwMzQxOWMxODcxZDA2NjQx
ZTQzZmU5ZWViMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzIsMTMgKzMyLDE4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+
IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShDYW52YXNCYXNlJiBjYW52YXMpCiB7Ci0g
ICAgYXV0byBjb250ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+
KG5ldyBXZWJHUFVSZW5kZXJpbmdDb250ZXh0KGNhbnZhcykpOworICAgIGF1dG8gc3dhcENoYWlu
ID0gR1BVU3dhcENoYWluOjpjcmVhdGUoKTsKKworICAgIGlmICghc3dhcENoYWluKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29udGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0PihuZXcgV2ViR1BVUmVuZGVyaW5nQ29udGV4dChjYW52YXMs
IFdURk1vdmUoc3dhcENoYWluKSkpOwogICAgIGNvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwog
ICAgIHJldHVybiBjb250ZXh0OwogfQogCi1XZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcykKLSAgICA6IFdlYkdQVVN3YXBDaGFp
bihjYW52YXMpCitXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpXZWJHUFVSZW5kZXJpbmdDb250ZXh0
KENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmUHRyPEdQVVN3YXBDaGFpbj4mJiBzd2FwQ2hhaW4pCisg
ICAgOiBXZWJHUFVTd2FwQ2hhaW4oY2FudmFzLCBXVEZNb3ZlKHN3YXBDaGFpbikpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmlu
Z0NvbnRleHQuaAppbmRleCA0OWE3ZGFmMTM4NmEzMTg2NjlhYjkzMmNhYTNmYjIyYjVmOTFlZTY3
Li42ZjFhN2Q5N2Q4MzRmM2JmMzhlMGRiMDZiYjM5YzAxMTNhN2MyMmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5o
CkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShDYW52YXNCYXNlJik7CiAKIHByaXZhdGU6Ci0g
ICAgV2ViR1BVUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJik7CisgICAgV2ViR1BVUmVuZGVy
aW5nQ29udGV4dChDYW52YXNCYXNlJiwgUmVmUHRyPEdQVVN3YXBDaGFpbj4mJik7CiAgICAgLy8g
Q2FudmFzUmVuZGVyaW5nQ29udGV4dAogICAgIGJvb2wgaXNXZWJHUFUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCmluZGV4IDk3OTgyOTA5
NWU0OWZkY2JhNWYwOTA1OWJjYjIxM2ExYmQyMDEyMjIuLjUwNjBkNTZhOGM1OTcwOWJhMTA5YWZi
OGVkOTI3NzExODJhZDVlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdF
QkdQVSkKIAogI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0FycmF5QnVmZmVyLmg+CisKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtMzgsNiArMzgsOCBAQCBjbGFzcyBXZWJHUFVTaGFkZXJN
b2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVTaGFkZXJNb2R1bGU+IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlKFJlZlB0cjxHUFVT
aGFkZXJNb2R1bGU+JiYpOwogCisgICAgY29uc3QgR1BVU2hhZGVyTW9kdWxlJiBtb2R1bGUoKSBj
b25zdCB7IHJldHVybiAqbV9tb2R1bGU7IH0KKwogcHJpdmF0ZToKICAgICBXZWJHUFVTaGFkZXJN
b2R1bGUoUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4mJik7CiAKQEAgLTQ3LDMgKzQ5LDQgQEAgcHJp
dmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
clN0YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFn
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjgxN2Q0MmY1OTY4YTk4Nzg3YTlmOTY5OTg3N2UwNzVmNTA0MmJjMjYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVT
aGFkZXJTdGFnZS5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYkdQVVNoYWRlclN0YWdlIDogcHVibGljIFJl
ZkNvdW50ZWQ8V2ViR1BVU2hhZGVyU3RhZ2U+IHsKK3B1YmxpYzoKKyAgICBlbnVtIHsKKyAgICAg
ICAgVkVSVEVYID0gMCwKKyAgICAgICAgRlJBR01FTlQgPSAxLAorICAgICAgICBDT01QVVRFID0g
MgorICAgIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU2hhZGVyU3RhZ2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
U2hhZGVyU3RhZ2UuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhMzdhMzc0MTJkNDkzMDFiYmY1NzgxN2U4NTZj
OTZkMDYzNGNlNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisv
LyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tl
dGNoLndlYmlkbAorCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOworCitbCisgICAgQ29uZGl0
aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVLAorICAgIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUKK10gaW50ZXJmYWNlIFdlYkdQVVNoYWRlclN0YWdlIHsKKyAgICBj
b25zdCB1MzIgVkVSVEVYID0gMDsKKyAgICBjb25zdCB1MzIgRlJBR01FTlQgPSAxOworICAgIGNv
bnN0IHUzMiBDT01QVVRFID0gMjsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcAppbmRleCAwMzgyYWU3YmRmYzc1YjVhNTIwOGUzYjVl
NzA1YWZlZWFiOWY4ZTQ5Li44YWE2YTY4MmJlNDc5OTRlZGI4OGU2MWU4ZmIzMjRkYmYwNGMxMGQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hh
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFp
bi5jcHAKQEAgLTI4LDEyICsyOCwxNyBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorI2luY2x1
ZGUgIldlYkdQVURldmljZS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdlYkdQVVN3YXBD
aGFpbjo6fldlYkdQVVN3YXBDaGFpbigpID0gZGVmYXVsdDsKIAotdm9pZCBXZWJHUFVTd2FwQ2hh
aW46OmNvbmZpZ3VyZShjb25zdCBEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQordm9pZCBXZWJHUFVT
d2FwQ2hhaW46OmNvbmZpZ3VyZShEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKIHsKKyAgICBpZiAo
ZGVzY3JpcHRvci5kZXZpY2UpCisgICAgICAgIG1fc3dhcENoYWluLT5zZXREZXZpY2UoZGVzY3Jp
cHRvci5kZXZpY2UtPmRldmljZSgpKTsKKwogICAgIHJlc2hhcGUoZGVzY3JpcHRvci53aWR0aCwg
ZGVzY3JpcHRvci5oZWlnaHQpOwogfQogCkBAIC00NCwxMyArNDksMTIgQEAgdm9pZCBXZWJHUFVT
d2FwQ2hhaW46OnByZXNlbnQoKQogCiB2b2lkIFdlYkdQVVN3YXBDaGFpbjo6cmVzaGFwZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpCiB7Ci0gICAgbV93aWR0aCA9IHdpZHRoOwotICAgIG1faGVpZ2h0
ID0gaGVpZ2h0OworICAgIG1fc3dhcENoYWluLT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOwogfQog
CiB2b2lkIFdlYkdQVVN3YXBDaGFpbjo6bWFya0xheWVyQ29tcG9zaXRlZCgpCiB7Ci0gICAgLy8g
RklYTUU6IFVuaW1wbGVtZW50ZWQgc3R1Yi4KKyAgICBtX3N3YXBDaGFpbi0+cHJlc2VudCgpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oCmluZGV4IGY1NmQzNjFmODVkNGJiYjA0YjcwNjA5MzAw
NGM4OTRmMmYwMzM4NDcuLjA2Nzk1MDYyMTViYmYyZTgxOGI1MzFlZjE2ZGM0YmUyMjgyZjA0Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFp
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5o
CkBAIC0yOCwyNSArMjgsMjkgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQogCiAjaW5jbHVkZSAiR1BV
QmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiR1BVU3dhcENoYWluLmgi
CisjaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgV2ViR1BVU3dhcENoYWluIDogcHVibGljIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCB7CiBwdWJsaWM6CiAgICAgc3RydWN0IERlc2NyaXB0b3IgeworICAgICAgICBjb25zdCBXZWJH
UFVEZXZpY2UqIGRldmljZSA9IG51bGxwdHI7CiAgICAgICAgIC8vIEZJWE1FOiBNb3JlIHRleHR1
cmUgcHJvcGVydGllcy4KICAgICAgICAgdW5zaWduZWQgbG9uZyB3aWR0aDsKICAgICAgICAgdW5z
aWduZWQgbG9uZyBoZWlnaHQ7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfldlYkdQVVN3YXBDaGFp
bigpID0gMDsKLSAgICB2b2lkIGNvbmZpZ3VyZShjb25zdCBEZXNjcmlwdG9yJik7CisgICAgdm9p
ZCBjb25maWd1cmUoRGVzY3JpcHRvciYmKTsKICAgICAvLyBGSVhNRTogV2ViR1BVVGV4dHVyZSBn
ZXROZXh0VGV4dHVyZSgpOwogICAgIHZvaWQgcHJlc2VudCgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
V2ViR1BVU3dhcENoYWluKENhbnZhc0Jhc2UmIGNhbnZhcykKKyAgICBXZWJHUFVTd2FwQ2hhaW4o
Q2FudmFzQmFzZSYgY2FudmFzLCBSZWZQdHI8R1BVU3dhcENoYWluPiYmIHN3YXBDaGFpbikKICAg
ICAgICAgOiBHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQoY2FudmFzKQorICAgICAgICAs
IG1fc3dhcENoYWluKFdURk1vdmUoc3dhcENoYWluKSkKICAgICB7CiAgICAgfQogCkBAIC02Myw4
ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGUgeyB9CiAgICAgYm9v
bCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KIAotICAgIHVuc2lnbmVkIGxvbmcgbV93aWR0aDsKLSAgICB1bnNpZ25lZCBs
b25nIG1faGVpZ2h0OworICAgIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IG1fc3dhcENoYWluOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwKaW5kZXggOTljYTkwZTQzY2E2MjM2OGUxZjlhYWVi
YTEzNDNmZjQzZTJhY2YyMC4uNTAyZTNkZGQwMTFmODUyZjViYmRmM2ZkYWM1NDNhOWZmNjM1MGQz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENo
YWluLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hh
aW4uaWRsCkBAIC0zNyw2ICszNyw3IEBACiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwogCiBk
aWN0aW9uYXJ5IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IgeworICAgIFdlYkdQVURldmljZSBk
ZXZpY2U7IC8vIEZJWE1FOiBQcm9wb3NlIHRoaXMgYWRkaXRpb24gdG8gSURMLgogICAgIC8vIFdl
YkdQVVRleHR1cmVVc2FnZUZsYWdzIHVzYWdlOwogICAgIC8vIFdlYkdQVVRleHR1cmVGb3JtYXRF
bnVtIGZvcm1hdDsKICAgICB1MzIgd2lkdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzky
YTkzMTQwOGYyNjVjOWRiNGJiNGJhMGI0YTI1MDE5MmE5ZjdmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmUuaApA
QCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
V0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKE1FVEFMKQorT0JK
Q19QUk9UT0NPTChNVExSZW5kZXJQaXBlbGluZVN0YXRlKTsKKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEdQVURldmljZTsKKworc3RydWN0IEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvcjsKKworI2lmIFVTRShNRVRBTCkKK3VzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxp
bmUgPSBNVExSZW5kZXJQaXBlbGluZVN0YXRlOwordXNpbmcgUGxhdGZvcm1SZW5kZXJQaXBlbGlu
ZVNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+OworI2Vsc2UKK3Vz
aW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmUgPSB2b2lkOwordXNpbmcgUGxhdGZvcm1SZW5kZXJQ
aXBlbGluZVNtYXJ0UHRyID0gUmVmUHRyPHZvaWQ+OworI2VuZGlmCisKK2NsYXNzIEdQVVJlbmRl
clBpcGVsaW5lIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUmVuZGVyUGlwZWxpbmU+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoY29uc3QgR1BV
RGV2aWNlJiwgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYpOworCisgICAgUGxhdGZvcm1S
ZW5kZXJQaXBlbGluZSAqcGxhdGZvcm1SZW5kZXJQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGxhdGZvcm1SZW5kZXJQaXBlbGluZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIEdQVVJlbmRl
clBpcGVsaW5lKFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciYmKTsKKworICAgIFBsYXRm
b3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciBtX3BsYXRmb3JtUmVuZGVyUGlwZWxpbmU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlw
ZWxpbmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJl
bmRlclBpcGVsaW5lTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA2OGNiYTU4MGY5OGU4OWNhODdmNTBk
NWUwNDQ3ZTczM2IzOTM2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KQEAgLTAsMCArMSwxMjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVVJlbmRlclBp
cGVsaW5lLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW1wb3J0ICJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIldlYkdQVVNo
YWRlclN0YWdlLmgiCisKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDx3dGYvQmxv
Y2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBib29s
IHNldEZ1bmN0aW9uc0ZvclBpcGVsaW5lRGVzY3JpcHRvcihjb25zdCBjaGFyKiBjb25zdCBmdW5j
dGlvbk5hbWUsIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAqbXRsRGVzY3JpcHRvciwgR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKK3sKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIHN0YWdlRGVzY3JpcHRvciA6IGRlc2NyaXB0b3Iuc3RhZ2VzKSB7CisgICAgICAgIGF1
dG8gbXRsTGlicmFyeSA9IHJldGFpblB0cihzdGFnZURlc2NyaXB0b3IubW9kdWxlLnBsYXRmb3Jt
U2hhZGVyTW9kdWxlKCkpOworCisgICAgICAgIGlmICghbXRsTGlicmFyeSkgeworICAgICAgICAg
ICAgTE9HKFdlYkdQVSwgIiVzOiBNVExMaWJyYXJ5IGRvZXMgbm90IGV4aXN0ISIsIGZ1bmN0aW9u
TmFtZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBh
dXRvIGZ1bmN0aW9uID0gYWRvcHROUyhbbXRsTGlicmFyeSBuZXdGdW5jdGlvbldpdGhOYW1lOnN0
YWdlRGVzY3JpcHRvci5lbnRyeVBvaW50XSk7CisKKyAgICAgICAgaWYgKCFmdW5jdGlvbikgewor
ICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBNVExGdW5jdGlvbiAlcyBub3QgZm91bmQhIiwg
ZnVuY3Rpb25OYW1lLCBzdGFnZURlc2NyaXB0b3IuZW50cnlQb2ludC51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAo
c3RhZ2VEZXNjcmlwdG9yLnN0YWdlKSB7CisgICAgICAgIGNhc2UgV2ViR1BVU2hhZGVyU3RhZ2U6
OlZFUlRFWDoKKyAgICAgICAgICAgIFttdGxEZXNjcmlwdG9yIHNldFZlcnRleEZ1bmN0aW9uOmZ1
bmN0aW9uLmdldCgpXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkdQVVNo
YWRlclN0YWdlOjpGUkFHTUVOVDoKKyAgICAgICAgICAgIFttdGxEZXNjcmlwdG9yIHNldEZyYWdt
ZW50RnVuY3Rpb246ZnVuY3Rpb24uZ2V0KCldOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgc2hhZGVyIHN0
YWdlIHNwZWNpZmllZCEiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZlB0
cjxHUFVSZW5kZXJQaXBlbGluZT4gR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShjb25zdCBHUFVE
ZXZpY2UmIGRldmljZSwgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikK
K3sKKyAgICBjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVUmVuZGVyUGlwZWxp
bmU6OmNyZWF0ZSgpIjsKKworICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKKyAg
ICAgICAgTE9HKFdlYkdQVSwgIiVzOiBNVExEZXZpY2UgZG9lcyBub3QgZXhpc3QhIiwgZnVuY3Rp
b25OYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUmV0YWluUHRy
PE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKKworICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIG10bERlc2NyaXB0b3IgPSBhZG9wdE5TKFtN
VExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgbmV3XSk7CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TOworCisgICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7CisgICAgICAgIExPRyhXZWJH
UFUsICIlczogRXJyb3IgY3JlYXRpbmcgTVRMRGVzY3JpcHRvciEiLCBmdW5jdGlvbk5hbWUpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIXNldEZ1bmN0aW9uc0Zv
clBpcGVsaW5lRGVzY3JpcHRvcihmdW5jdGlvbk5hbWUsIG10bERlc2NyaXB0b3IuZ2V0KCksIFdU
Rk1vdmUoZGVzY3JpcHRvcikpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEZJ
WE1FOiBHZXQgdGhlIHBpeGVsRm9ybWF0IGFzIGNvbmZpZ3VyZWQgZm9yIHRoZSBjb250ZXh0L0NB
TWV0YWxMYXllci4KKyAgICBtdGxEZXNjcmlwdG9yLmdldCgpLmNvbG9yQXR0YWNobWVudHNbMF0u
cGl4ZWxGb3JtYXQgPSBNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm07CisKKyAgICBQbGF0Zm9ybVJl
bmRlclBpcGVsaW5lU21hcnRQdHIgcGlwZWxpbmU7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CisKKyAgICBpZiAoW210bERlc2NyaXB0b3IgdmVydGV4RnVuY3Rpb25dKQorICAg
ICAgICBwaXBlbGluZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld1JlbmRl
clBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpIGVycm9yOm5p
bF0pOworICAgIGVsc2UKKyAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBObyB2ZXJ0ZXggZnVuY3Rp
b24gYXNzaWduZWQgZm9yIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciEiLCBmdW5jdGlvbk5h
bWUpOworCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIGlmICghcGlwZWxp
bmUpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBFcnJvciBjcmVhdGluZyBNVExSZW5kZXJQ
aXBlbGluZVN0YXRlISIsIGZ1bmN0aW9uTmFtZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92
ZShwaXBlbGluZSkpKTsKK30KKworR1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRlclBpcGVsaW5l
KFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciYmIHBpcGVsaW5lKQorICAgIDogbV9wbGF0
Zm9ybVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKQoreworICAgIFVOVVNFRF9QQVJB
TShtX3BsYXRmb3JtUmVuZGVyUGlwZWxpbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYmU2MmUzOThlYTE2
MGY0YjRjNjc5OWIxODdkNGJlZmQyMTg4MzZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENoYWluLmgKQEAgLTAsMCArMSw2NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBV
U0UoTUVUQUwpCitPQkpDX0NMQVNTIENBTWV0YWxMYXllcjsKKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEdQVURldmljZTsKKworI2lmIFVTRShNRVRBTCkKK3VzaW5nIFBs
YXRmb3JtU3dhcExheWVyID0gQ0FNZXRhbExheWVyOwordXNpbmcgUGxhdGZvcm1Td2FwTGF5ZXJT
bWFydFB0ciA9IFJldGFpblB0cjxDQU1ldGFsTGF5ZXI+OworI2Vsc2UKK3VzaW5nIFBsYXRmb3Jt
U3dhcExheWVyID0gdm9pZDsKK3VzaW5nIFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHIgPSBSZWZQ
dHI8dm9pZD47CisjZW5kaWYKKworY2xhc3MgR1BVU3dhcENoYWluIDogcHVibGljIFJlZkNvdW50
ZWQ8R1BVU3dhcENoYWluPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxHUFVTd2FwQ2hh
aW4+IGNyZWF0ZSgpOworCisgICAgdm9pZCBzZXREZXZpY2UoY29uc3QgR1BVRGV2aWNlJik7Cisg
ICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgdm9pZCBwcmVzZW50
KCk7CisKKyAgICBQbGF0Zm9ybVN3YXBMYXllciAqcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcGxhdGZvcm1Td2FwTGF5ZXIuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBHUFVTd2Fw
Q2hhaW4oUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciYmKTsKKworICAgIFBsYXRmb3JtU3dhcExh
eWVyU21hcnRQdHIgbV9wbGF0Zm9ybVN3YXBMYXllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNkZmQxNjJlYmI4MjMxNzdlNDM1Y2I5NjdhMmM2M2NmN2I1NWRiOTUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW5N
ZXRhbC5tbQpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJHUFVTd2FwQ2hhaW4uaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbXBv
cnQgIkdQVURldmljZS5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgorCisjaW1wb3J0IDxNZXRhbC9N
ZXRhbC5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDx3dGYv
QmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxH
UFVTd2FwQ2hhaW4+IEdQVVN3YXBDaGFpbjo6Y3JlYXRlKCkKK3sKKyAgICBQbGF0Zm9ybVN3YXBM
YXllclNtYXJ0UHRyIHBsYXRmb3JtTGF5ZXI7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CisKKyAgICBwbGF0Zm9ybUxheWVyID0gYWRvcHROUyhbW0NBTWV0YWxMYXllciBhbGxv
Y10gaW5pdF0pOworCisgICAgW3BsYXRmb3JtTGF5ZXIgc2V0T3BhcXVlOjBdOworICAgIFtwbGF0
Zm9ybUxheWVyIHNldE5hbWU6QCJXZWJHUFUgTGF5ZXIiXTsKKworICAgIC8vIEZJWE1FOiBGb3Ig
bm93LCBkZWZhdWx0IHRvIHRoZXNlIHNldHRpbmdzLgorICAgIFtwbGF0Zm9ybUxheWVyIHNldFBp
eGVsRm9ybWF0Ok1UTFBpeGVsRm9ybWF0QkdSQThVbm9ybV07CisgICAgW3BsYXRmb3JtTGF5ZXIg
c2V0RnJhbWVidWZmZXJPbmx5OllFU107CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
OworCisgICAgaWYgKCFwbGF0Zm9ybUxheWVyKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVT
d2FwQ2hhaW46OmNyZWF0ZSgpOiBVbmFibGUgdG8gY3JlYXRlIENBTWV0YWxMYXllciEiKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBH
UFVTd2FwQ2hhaW4oV1RGTW92ZShwbGF0Zm9ybUxheWVyKSkpOworfQorCitHUFVTd2FwQ2hhaW46
OkdQVVN3YXBDaGFpbihQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRyJiYgcGxhdGZvcm1MYXllcikK
KyAgICA6IG1fcGxhdGZvcm1Td2FwTGF5ZXIoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSkKK3sKK30K
Kwordm9pZCBHUFVTd2FwQ2hhaW46OnNldERldmljZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSkK
K3sKKyAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7CisgICAgICAgIExPRyhXZWJH
UFUsICJHUFVTd2FwQ2hhaW46OnNldERldmljZSgpOiBNVExEZXZpY2UgZG9lcyBub3QgZXhpc3Qh
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbbV9wbGF0Zm9ybVN3YXBMYXllciBz
ZXREZXZpY2U6ZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCldOworfQorCit2b2lkIEdQVVN3YXBDaGFp
bjo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgW21fcGxhdGZvcm1Td2Fw
TGF5ZXIgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCldOworICAgIFtt
X3BsYXRmb3JtU3dhcExheWVyIHNldERyYXdhYmxlU2l6ZTpDR1NpemVNYWtlKHdpZHRoLCBoZWln
aHQpXTsKK30KKwordm9pZCBHUFVTd2FwQ2hhaW46OnByZXNlbnQoKQoreworICAgIC8vIEZJWE1F
OiBVbmltcGxlbWVudGVkIHN0dWIuCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGQ1MDI3NzcyYjFlNmZhYzZi
Zjk0OGZlMmY3MDJkOGE1ZDJmMThiOTAuLmVhM2U4ZmUxOWRiMGUxZjFkNmMxNDQ5MjhlYTJiNzQz
ZTI3OTM0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0zMDIsNiArMzAyLDcgQEAgTW9kdWxlcy93ZWJn
cHUvV2ViR1BVLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVURldmljZS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0Nv
bnRleHQuY3BwCitNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3
YXBDaGFpbi5jcHAKIApAQCAtMzE5NSw5ICszMTk2LDE0IEBAIEpTV2ViR1BVLmNwcAogSlNXZWJH
UFVBZGFwdGVyLmNwcAogSlNXZWJHUFVBZGFwdGVyRGVzY3JpcHRvci5jcHAKIEpTV2ViR1BVRGV2
aWNlLmNwcAorSlNXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmNwcAorSlNXZWJHUFVQaXBl
bGluZVN0YWdlRGVzY3JpcHRvci5jcHAKIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAKK0pT
V2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCitKU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5jcHAKIEpTV2ViR1BVU2hhZGVyTW9kdWxlLmNwcAogSlNXZWJHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmNwcAorSlNXZWJHUFVTaGFkZXJTdGFnZS5jcHAKIEpTV2ViR1BVU3dhcENoYWluLmNw
cAogSlNXZWJNZXRhbEJ1ZmZlci5jcHAKIEpTV2ViTWV0YWxDb21tYW5kQnVmZmVyLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMTQ3NGU1OTI1OTUwNDkzN2FiOGNjZTUyZjU2NDdiZDg3
ZjhlMGE3NC4uMzI5ZmE4NjA2MzgwMzYwZTRlZTliZWRhMDcwMDc2OTFlODU3YWRmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yOCw3ICsyOCw5IEBAIE1vZHVsZXMvcGx1Z2lucy9Zb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFi
YXNlTWFuYWdlckNvY29hLm1tCiAKIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVURldmljZU1ldGFs
Lm1tCitNb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCiBNb2R1
bGVzL3dlYmdwdS9jb2NvYS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbQorTW9kdWxlcy93ZWJncHUv
Y29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KIAogYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJp
bGl0eU9iamVjdElPUy5tbQogYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDY5MDU3MzkzMTU1ZTAyYTllZjUyZTZkYjJiOWJlNzAwNTE3Y2U2NWMuLjEzYTY4NTRlNzI4
N2IzZmEwOTNlZDAyYjU4MDYzZWUyOTgxODJlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNzc5LDYgKzEzNzc5LDkgQEAK
IAkJRDA0NUFEMjEyMTY4MjQ3NDAwMEE2RTlCIC8qIFdlYk1ldGFsQnVmZmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYk1ldGFsQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDA0NUFEMjIyMTY4MjQ3NDAwMEE2RTlCIC8qIFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJNZXRhbENvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDA0NUFEMjMyMTY4MjQ3NTAwMEE2RTlCIC8qIFdlYk1ldGFsQ29tbWFu
ZFF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZFF1ZXVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA0NkZCNjUyMThEMDczQzAwQ0I4RjYyIC8q
IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA0NkZC
NjcyMThEMTgwMzAwQ0I4RjYyIC8qIEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUQwNDZGQjY4MjE4RDE4Q0QwMENCOEY2MiAvKiBHUFVQaXBlbGluZURlc2Ny
aXB0b3JCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA1NzNENDIyMTdFQjgxRTAwRDFCRTkxIC8q
IEdQVUxlZ2FjeVRleHR1cmVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEdQVUxlZ2FjeVRleHR1cmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRDA1Q0VEMjcwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0QmxvY2tDb21t
YW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA1Q0VEMjgwQTQwQkIyQzAw
QzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRm9ybWF0QmxvY2tDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMzgwMiw2ICsxMzgwNSw4IEBACiAJCUQwOTNEMjI1MjE3OTUxRDQwMDMyOTIxNyAvKiBX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0Nv
bnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA5M0QyMjcyMTc5NTFENDAw
MzI5MjE3IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDkzRDIyOTIxNzk1
NDE2MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRDA5NzI3QjUyMTg3RjQ0MzAwOTQyRjNBIC8qIEdQVVN3YXBDaGFpbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBHUFVTd2FwQ2hhaW4uaDsgcGF0aCA9IGNvY29hL0dQVVN3YXBDaGFpbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDk3MjdCNjIxODdGNDQzMDA5NDJGM0EgLyogR1BV
U3dhcENoYWluTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVTd2FwQ2hhaW5NZXRh
bC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA5NzI3QzIyMThBNDcyOTAwOTQy
RjNBIC8qIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDk3
MjdDQTIxOEJEN0E1MDA5NDJGM0EgLyogR1BVRGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdQVURldmljZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQTIwRDU0MjA5
MkEwQTYwMEUwQzI1OSAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM4MTIsNiArMTM4MTcsMTkgQEAKIAkJRDBCQzU0
NDgxNDQzQUM0QTAwRTEwNURBIC8qIENhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlEMEJENEY1QTE0MDg4NTBGMDA2ODM5QjYgLyogRGljdGF0
aW9uQ29tbWFuZElPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
aWN0YXRpb25Db21tYW5kSU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBC
RDRGNUIxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGljdGF0aW9uQ29tbWFuZElPUy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlFQjIxODNDRkEyMDA5RUMxREUgLyogV2ViR1BVUGlw
ZWxpbmVTdGFnZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RUMyMTgz
Q0ZBMjAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUQwQzQxOUVFMjE4M0Q5QzgwMDlFQzFERSAvKiBXZWJHUFVTaGFkZXJTdGFnZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJHUFVTaGFkZXJTdGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlEMEM0MTlFRjIxODNEOUM4MDA5RUMxREUgLyogV2ViR1BVU2hhZGVyU3RhZ2UuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFdlYkdQVVNoYWRlclN0YWdlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRDBDNDE5RjAyMTgzRUIzMTAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlGMTIxODNFQjMxMDA5RUMxREUgLyogV2Vi
R1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUGlwZWxpbmVEZXNjcmlw
dG9yQmFzZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUYyMjE4M0VG
RUMwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUQwQzQxOUYzMjE4M0VGRUMwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUY3MjE4NDA0REEwMDlFQzFE
RSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQ
aXBlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlGODIxODQwNERB
MDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlE
MEM0MTlGOTIxODQwNERBMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYkdQVVJlbmRlclBpcGVsaW5lLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RDBDNDE5RkEyMTg0MEY2QzAwOUVDMURFIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEdQVVJlbmRlclBpcGVsaW5lLmg7IHBhdGggPSBjb2NvYS9HUFVSZW5kZXJQaXBlbGlu
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlGQjIxODQwRjZDMDA5RUMx
REUgLyogR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQ
VVJlbmRlclBpcGVsaW5lTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQw
Q0FBRTk4MjE2ODI0QTYwMDFDOTFDNyAvKiBXZWJNZXRhbEJ1ZmZlci5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViTWV0
YWxCdWZmZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMENBQUU5QTIxNjgy
NEE2MDAxQzkxQzcgLyogV2ViTWV0YWxDb21tYW5kQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJNZXRhbENv
bW1hbmRCdWZmZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMENBQUU5QjIx
NjgyNEE3MDAxQzkxQzcgLyogV2ViTWV0YWxDb21tYW5kUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViTWV0YWxDb21tYW5kUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1
NDQ4LDggKzI1NDY2LDEzIEBACiAJCQkJRDAwRjU5NDIyMTZFQ0M3QTAwMEQ3MURCIC8qIERPTVdp
bmRvd1dlYkdQVS5pZGwgKi8sCiAJCQkJRDA5NzI3Q0EyMThCRDdBNTAwOTQyRjNBIC8qIEdQVURl
dmljZS5jcHAgKi8sCiAJCQkJRDA2MTVGQ0YyMTdGRjE4NTAwOEE0OEE4IC8qIEdQVURldmljZS5o
ICovLAorCQkJCUQwNDZGQjY4MjE4RDE4Q0QwMENCOEY2MiAvKiBHUFVQaXBlbGluZURlc2NyaXB0
b3JCYXNlLmggKi8sCisJCQkJRDA0NkZCNjcyMThEMTgwMzAwQ0I4RjYyIC8qIEdQVVBpcGVsaW5l
U3RhZ2VEZXNjcmlwdG9yLmggKi8sCisJCQkJRDBDNDE5RkEyMTg0MEY2QzAwOUVDMURFIC8qIEdQ
VVJlbmRlclBpcGVsaW5lLmggKi8sCisJCQkJRDA0NkZCNjUyMThEMDczQzAwQ0I4RjYyIC8qIEdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovLAogCQkJCUQwNjBEODg4MjE4MjgwQzEwMDMz
OTMxOCAvKiBHUFVTaGFkZXJNb2R1bGUuaCAqLywKIAkJCQlEMDk3MjdDMjIxOEE0NzI5MDA5NDJG
M0EgLyogR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovLAorCQkJCUQwOTcyN0I1MjE4N0Y0
NDMwMDk0MkYzQSAvKiBHUFVTd2FwQ2hhaW4uaCAqLywKIAkJCQlEMDBGNTk0NzIxNkVGRTU0MDAw
RDcxREIgLyogV2ViR1BVLmNwcCAqLywKIAkJCQlEMDBGNTk0NjIxNkVGRTU0MDAwRDcxREIgLyog
V2ViR1BVLmggKi8sCiAJCQkJRDAwRjU5NDgyMTZFRkU1NDAwMEQ3MURCIC8qIFdlYkdQVS5pZGwg
Ki8sCkBAIC0yNTQ2MSwxNCArMjU0ODQsMjUgQEAKIAkJCQlEMDBGNTk1MzIxNzAxRDhDMDAwRDcx
REIgLyogV2ViR1BVRGV2aWNlLmNwcCAqLywKIAkJCQlEMDBGNTk1MjIxNzAxRDhDMDAwRDcxREIg
LyogV2ViR1BVRGV2aWNlLmggKi8sCiAJCQkJRDAwRjU5NTQyMTcwMUQ4QzAwMEQ3MURCIC8qIFdl
YkdQVURldmljZS5pZGwgKi8sCisJCQkJRDBDNDE5RjAyMTgzRUIzMTAwOUVDMURFIC8qIFdlYkdQ
VVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLywKKwkJCQlEMEM0MTlGMTIxODNFQjMxMDA5RUMx
REUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgKi8sCisJCQkJRDBDNDE5RUIy
MTgzQ0ZBMjAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmggKi8sCisJ
CQkJRDBDNDE5RUMyMTgzQ0ZBMjAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlw
dG9yLmlkbCAqLywKIAkJCQlEMDkzRDIyOTIxNzk1NDE2MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVy
aW5nQ29udGV4dC5jcHAgKi8sCiAJCQkJRDA5M0QyMjUyMTc5NTFENDAwMzI5MjE3IC8qIFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQuaCAqLywKIAkJCQlEMDkzRDIyNzIxNzk1MUQ0MDAzMjkyMTcgLyog
V2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwgKi8sCisJCQkJRDBDNDE5RjgyMTg0MDREQTAwOUVD
MURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lLmNwcCAqLywKKwkJCQlEMEM0MTlGNzIxODQwNERB
MDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCAqLywKKwkJCQlEMEM0MTlGOTIxODQw
NERBMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsICovLAorCQkJCUQwQzQxOUYy
MjE4M0VGRUMwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLywK
KwkJCQlEMEM0MTlGMzIxODNFRkVDMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmlkbCAqLywKIAkJCQlEMDYxNUZDRDIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hh
ZGVyTW9kdWxlLmNwcCAqLywKIAkJCQlEMDYxNUZDQzIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BV
U2hhZGVyTW9kdWxlLmggKi8sCiAJCQkJRDA2MTVGQ0UyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQ
VVNoYWRlck1vZHVsZS5pZGwgKi8sCiAJCQkJRDA2MEQ4ODcyMTgyNjk3MDAwMzM5MzE4IC8qIFdl
YkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLywKIAkJCQlEMDYwRDg4NDIxODI1RDVGMDAz
MzkzMTggLyogV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwgKi8sCisJCQkJRDBDNDE5
RUUyMTgzRDlDODAwOUVDMURFIC8qIFdlYkdQVVNoYWRlclN0YWdlLmggKi8sCisJCQkJRDBDNDE5
RUYyMTgzRDlDODAwOUVDMURFIC8qIFdlYkdQVVNoYWRlclN0YWdlLmlkbCAqLywKIAkJCQlEMERB
MEJFNTIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmNwcCAqLywKIAkJCQlEMERB
MEJFNDIxNzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmggKi8sCiAJCQkJRDBEQTBC
RTYyMTc5MzBFMjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5pZGwgKi8sCkBAIC0yNTQ4MCw3
ICsyNTUxNCw5IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUQw
NjE1RkQxMjE3RkYxRTEwMDhBNDhBOCAvKiBHUFVEZXZpY2VNZXRhbC5tbSAqLywKKwkJCQlEMEM0
MTlGQjIxODQwRjZDMDA5RUMxREUgLyogR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbSAqLywKIAkJ
CQlEMDYwRDg4OTIxODI4MEMxMDAzMzkzMTggLyogR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0gKi8s
CisJCQkJRDA5NzI3QjYyMTg3RjQ0MzAwOTQyRjNBIC8qIEdQVVN3YXBDaGFpbk1ldGFsLm1tICov
LAogCQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5k
ZXggZDI5ZGJiZDU3YzQ4MmRmYWEwMjMzODYwMWIxMGYwODZjNGE0NjM2ZS4uMGI4ODgzY2RlZmI2
NTI1YTc3Njk2MThiNzgzZTczNWU3YjYzM2I2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtMTc4LDYgKzE3OCw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhXZWJHUFVBZGFwdGVyKSBcCiAgICAgbWFjcm8oV2Vi
R1BVRGV2aWNlKSBcCiAgICAgbWFjcm8oV2ViR1BVUmVuZGVyaW5nQ29udGV4dCkgXAorICAgIG1h
Y3JvKFdlYkdQVVJlbmRlclBpcGVsaW5lKSBcCisgICAgbWFjcm8oV2ViR1BVU2hhZGVyU3RhZ2Up
IFwKICAgICBtYWNybyhXZWJHUFVTaGFkZXJNb2R1bGUpIFwKICAgICBtYWNybyhXZWJHUFVTd2Fw
Q2hhaW4pIFwKICAgICBtYWNybyhXZWJNZXRhbEJ1ZmZlcikgXApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE3MTg2MDUyMGMw
YjBkOTdhMzViZDUwNWYzNWQyOTNhNThlNjE1OWQuLjI3Mjc5YWVmODU5YjY4MWY5NDg1ZTYwNTk2
ODY2N2VlNzU1MjhjOWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0xMS0wNSAgSnVzdGlu
IEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEV4cGVyaW1l
bnRhbCBwcm90b3R5cGUgZm9yIFdlYkdQVVJlbmRlclBpcGVsaW5lIGFuZCBXZWJHUFVTd2FwQ2hh
aW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTI5
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Vi
Z3B1L2pzL3NldC11cC13ZWJncHUtY29udGV4dHMuanM6IEFkZGVkIGhlbHBlciBzY3JpcHQgZm9y
IHJ1bm5pbmcgZGlmZmVyZW50IHdlYmdwdSB0ZXN0cy4KKyAgICAgICAgKHJ1bldlYkdQVVRlc3Rz
KToKKyAgICAgICAgKGFzeW5jLnJ1bldlYkdQVVRlc3RzT25DYW52YXMpOgorICAgICAgICAoYXN5
bmMuc2V0VXBDb250ZXh0cyk6CisgICAgICAgICogd2ViZ3B1L3JlbmRlci1waXBlbGluZXMuaHRt
bDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3NoYWRlci1tb2R1bGVzLmh0bWw6IFVwZGF0ZWQg
dG8gdXNlIGZ1bmN0aW9ucyBpbiBzZXQtdXAtd2ViZ3B1LWNvbnRleHRzLmpzLgorICAgICAgICAq
IHdlYmdwdS93ZWJncHUtYmFzaWNzLmh0bWw6IFVwZGF0ZWQgdGhyb3VnaCBjcmVhdGluZyBhIFdl
YkdQVVJlbmRlclBpcGVsaW5lLgorCiAyMDE4LTExLTAxICBKdXN0aW4gRmFuICA8anVzdGluX2Zh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gRXhwZXJpbWVudGFsIHByb3RvdHlwZSBm
b3IgTVNMIHNoYWRlcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9qcy9zZXQtdXAt
d2ViZ3B1LWNvbnRleHRzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2pzL3NldC11cC13ZWJncHUt
Y29udGV4dHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E2NGM5ZDEyMjQ4M2I5ZGI4YzRkOGU2YmIyY2E1Y2Ux
NjhmMmFmZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9qcy9zZXQtdXAt
d2ViZ3B1LWNvbnRleHRzLmpzCkBAIC0wLDAgKzEsNDYgQEAKKyd1c2Ugc3RyaWN0JzsKKworbGV0
IGNvbnRleHQsIGFkYXB0ZXIsIGRlZmF1bHREZXZpY2U7CisKK2Z1bmN0aW9uIHJ1bldlYkdQVVRl
c3RzKHRlc3RzKSB7CisgICAgcnVuV2ViR1BVVGVzdHNPbkNhbnZhcyhkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJjYW52YXMiKSwgdGVzdHMpOworfQorCithc3luYyBmdW5jdGlvbiBydW5XZWJHUFVU
ZXN0c09uQ2FudmFzKGNhbnZhcywgdGVzdHMpIHsKKyAgICB0cnkgeworICAgICAgICBhd2FpdCBz
ZXRVcENvbnRleHRzKGNhbnZhcyk7CisKKyAgICAgICAgZm9yIChsZXQgdGVzdCBvZiB0ZXN0cykK
KyAgICAgICAgICAgIHRlc3QoKTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBjb25z
b2xlLmVycm9yKGVycm9yKTsKKyAgICAgICAgdGVzdEZhaWxlZChgWyR7ZXJyb3J9XTogU2VlIGNv
bnNvbGUhYCk7CisgICAgfQorCisgICAgZGVidWcoIkFsbCB0ZXN0cyBjb21wbGV0ZS4iKTsKK30K
KworYXN5bmMgZnVuY3Rpb24gc2V0VXBDb250ZXh0cyhjYW52YXMpIHsKKyAgICBjb250ZXh0ID0g
Y2FudmFzLmdldENvbnRleHQoIndlYmdwdSIpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAg
dGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFUgY29udGV4dCEiKTsKKworICAgIHNo
b3VsZEJlRGVmaW5lZCh3aW5kb3cud2ViZ3B1KTsKKyAgICAKKyAgICAvLyBGSVhNRTogcmVxdWVz
dEFkYXB0ZXIgc2hvdWxkIHRha2UgYSBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvci4KKyAgICBhZGFw
dGVyID0gYXdhaXQgd2luZG93LndlYmdwdS5yZXF1ZXN0QWRhcHRlcih7fSk7CisgICAgaWYgKCFh
ZGFwdGVyKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgZGVmYXVsdCBX
ZWJHUFVBZGFwdGVyISIpCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTog
cmVxdWVzdERldmljZSBzaG91bGQgdGFrZSBhIFdlYkdQVURldmljZURlc2NyaXB0b3IuCisgICAg
ZGVmYXVsdERldmljZSA9IGFkYXB0ZXIuY3JlYXRlRGV2aWNlKCk7CisgICAgaWYgKCFkZWZhdWx0
RGV2aWNlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVRGV2
aWNlISIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IERlZmF1bHQg
dG8gIkI4RzhSOEE4VW5vcm0iIGZvcm1hdCBmb3Igbm93LgorICAgIGNvbnRleHQuY29uZmlndXJl
KHsgZGV2aWNlOiBkZWZhdWx0RGV2aWNlLCB3aWR0aDogY2FudmFzLndpZHRoLCBoZWlnaHQ6IGNh
bnZhcy5oZWlnaHQgfSk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVkNGMwYTNjYzY0OWJj
NDAzNjQ4NmZhZmY0NWJhNjBhMzZiNDM4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0bWwKQEAgLTAsMCArMSwxMzkgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJqcy9zZXQtdXAtd2ViZ3B1LWNvbnRleHRzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImxpYnJhcnkiIHR5cGU9Ingtc2hhZGVyL3gtbWV0YWwiPgor
ICAgICNpbmNsdWRlIDxtZXRhbF9zdGRsaWI+CisgICAgCisgICAgdXNpbmcgbmFtZXNwYWNlIG1l
dGFsOworICAgIAorICAgIHN0cnVjdCBWZXJ0ZXgKKyAgICB7CisgICAgICAgIGZsb2F0NCBwb3Np
dGlvbiBbW3Bvc2l0aW9uXV07CisgICAgfTsKKyAgICAKKyAgICB2ZXJ0ZXggVmVydGV4IHZlcnRl
eF9tYWluKHVpbnQgdmlkIFtbdmVydGV4X2lkXV0pCisgICAgeworICAgICAgICBWZXJ0ZXggdjsK
KyAgICAgICAgc3dpdGNoICh2aWQpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgdi5w
b3NpdGlvbiA9IGZsb2F0NCgtLjc1LCAtLjc1LCAwLCAxKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICB2LnBvc2l0aW9uID0gZmxvYXQ0KC43NSwgLS43
NSwgMCwgMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAg
ICAgdi5wb3NpdGlvbiA9IGZsb2F0NCgwLCAuNzUsIDAsIDEpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB2LnBvc2l0aW9uID0gZmxvYXQ0KDAsIDAs
IDAsIDEpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2OworICAgIH0KKyAgICAKKyAgICBm
cmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbihWZXJ0ZXggdmVydGV4SW4gW1tzdGFnZV9pbl1d
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZsb2F0NCgxLjAsIDAuMCwgMC4wLCAxLjApOworICAg
IH0KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKKworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworbGV0IHNoYWRl
ckRlc2NyaXB0b3IsIHNoYWRlck1vZHVsZSwgdmVydGV4U3RhZ2VEZXNjcmlwdG9yLCBmcmFnbWVu
dFN0YWdlRGVzY3JpcHRvcjsKKworZnVuY3Rpb24gc2V0VXBQaXBlbGluZSgpIHsKKyAgICBzaGFk
ZXJEZXNjcmlwdG9yID0geworICAgICAgICBjb2RlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bGlicmFyeSIpLnRleHQKKyAgICB9OworCisgICAgc2hhZGVyTW9kdWxlID0gZGVmYXVsdERldmlj
ZS5jcmVhdGVTaGFkZXJNb2R1bGUoc2hhZGVyRGVzY3JpcHRvcik7CisgICAgaWYgKCFzaGFkZXJN
b2R1bGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFVTaGFk
ZXJNb2R1bGUhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2ZXJ0ZXhTdGFnZURl
c2NyaXB0b3IgPSB7IAorICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwgCisgICAgICAgIHN0
YWdlOiBXZWJHUFVTaGFkZXJTdGFnZS5WRVJURVgsIAorICAgICAgICBlbnRyeVBvaW50OiAidmVy
dGV4X21haW4iIAorICAgIH07CisKKyAgICBmcmFnbWVudFN0YWdlRGVzY3JpcHRvciA9IHsKKyAg
ICAgICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUsCisgICAgICAgIHN0YWdlOiBXZWJHUFVTaGFkZXJT
dGFnZS5GUkFHTUVOVCwKKyAgICAgICAgZW50cnlQb2ludDogImZyYWdtZW50X21haW4iCisgICAg
fTsKKworICAgIGxldCBwaXBlbGluZURlc2NyaXB0b3IgPSB7CisgICAgICAgIHN0YWdlczogW3Zl
cnRleFN0YWdlRGVzY3JpcHRvciwgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3JdLAorICAgICAgICBw
cmltaXRpdmVUb3BvbG9neTogInRyaWFuZ2xlTGlzdCIKKyAgICB9OworCisgICAgbGV0IHJlbmRl
clBpcGVsaW5lID0gZGVmYXVsdERldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShwaXBlbGluZURl
c2NyaXB0b3IpOworICAgIGlmIChyZW5kZXJQaXBlbGluZSkKKyAgICAgICAgdGVzdFBhc3NlZCgi
U3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgV2ViR1BVUmVuZGVyUGlwZWxpbmUuIikKKyAgICBlbHNlCisg
ICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVUmVuZGVyUGlwZWxpbmUh
Iik7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQmFkUmVuZGVyUGlwZWxpbmUoZGVzY3JpcHRvciwgdGVz
dFN1YmplY3ROYW1lKSB7CisgICAgbGV0IHBpcGVsaW5lID0gZGVmYXVsdERldmljZS5jcmVhdGVS
ZW5kZXJQaXBlbGluZShkZXNjcmlwdG9yKTsKKworICAgIGlmIChwaXBlbGluZSkKKyAgICAgICAg
dGVzdEZhaWxlZChgV2ViR1BVUmVuZGVyUGlwZWxpbmUgd2FzIGNyZWF0ZWQgd2l0aCBhbiBpbnZh
bGlkICR7dGVzdFN1YmplY3ROYW1lfSFgKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RQYXNzZWQo
YFdlYkdQVVJlbmRlclBpcGVsaW5lIHdpdGggaW52YWxpZCAke3Rlc3RTdWJqZWN0TmFtZX0gd2Fz
IG5vdCBjcmVhdGVkLmApOworfQorCitmdW5jdGlvbiBzZXRVcEJhZFBpcGVsaW5lcygpIHsKKyAg
ICBjaGVja0JhZFJlbmRlclBpcGVsaW5lKHt9LCAiV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yIik7CisKKyAgICBsZXQgbm9Nb2R1bGVWZXJ0ZXhEZXNjcmlwdG9yID0geworICAgICAgICBz
dGFnZTogV2ViR1BVU2hhZGVyU3RhZ2UuVkVSVEVYLAorICAgICAgICBlbnRyeVBvaW50OiAidmVy
dGV4X21haW4iCisgICAgfQorICAgIGxldCBub01vZHVsZVBpcGVsaW5lRGVzY3JpcHRvciA9IHsK
KyAgICAgICAgc3RhZ2VzOiBbbm9Nb2R1bGVWZXJ0ZXhEZXNjcmlwdG9yLCBmcmFnbWVudFN0YWdl
RGVzY3JpcHRvcl0sCisgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAidHJpYW5nbGVMaXN0Igor
ICAgIH0KKyAgICBjaGVja0JhZFJlbmRlclBpcGVsaW5lKG5vTW9kdWxlUGlwZWxpbmVEZXNjcmlw
dG9yLCAic2hhZGVyIG1vZHVsZSIpOworCisgICAgLy8gQSAoTWV0YWwpIHJlbmRlcnBpcGVsaW5l
IG11c3QgaGF2ZSBhIHZlcnRleCBmdW5jdGlvbi4KKyAgICBsZXQgbm9WZXJ0ZXhQaXBlbGluZURl
c2NyaXB0b3IgPSB7CisgICAgICAgIHN0YWdlczogW2ZyYWdtZW50U3RhZ2VEZXNjcmlwdG9yXSwK
KyAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6ICJ0cmlhbmdsZUxpc3QiCisgICAgfQorICAgIGNo
ZWNrQmFkUmVuZGVyUGlwZWxpbmUobm9WZXJ0ZXhQaXBlbGluZURlc2NyaXB0b3IsICJ2ZXJ0ZXgg
c2hhZGVyIHN0YWdlIikKKworICAgIGxldCBiYWRFbnRyeVBvaW50RGVzY3JpcHRvciA9IHsgCisg
ICAgICAgIG1vZHVsZTogc2hhZGVyTW9kdWxlLCAKKyAgICAgICAgc3RhZ2U6IFdlYkdQVVNoYWRl
clN0YWdlLlZFUlRFWCwgCisgICAgICAgIGVudHJ5UG9pbnQ6ICJWZXJ0ZXhfTWFpbiIgCisgICAg
fTsKKyAgICBsZXQgYmFkRW50cnlQb2ludFBpcGVsaW5lRGVzY3NyaXB0b3IgPSB7CisgICAgICAg
IHN0YWdlczogW2JhZEVudHJ5UG9pbnREZXNjcmlwdG9yLCBmcmFnbWVudFN0YWdlRGVzY3JpcHRv
cl0sCisgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAidHJpYW5nbGVMaXN0IgorICAgIH0KKyAg
ICBjaGVja0JhZFJlbmRlclBpcGVsaW5lKGJhZEVudHJ5UG9pbnRQaXBlbGluZURlc2NzcmlwdG9y
LCAidmVydGV4IHNoYWRlciBlbnRyeSBwb2ludCIpOworCisgICAgbGV0IGJhZFN0YWdlRW51bURl
c2NyaXB0b3IgPSB7IAorICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwgCisgICAgICAgIHN0
YWdlOiBXZWJHUFVTaGFkZXJTdGFnZS5DT01QVVRFLCAKKyAgICAgICAgZW50cnlQb2ludDogInZl
cnRleF9tYWluIiAKKyAgICB9OworICAgIGxldCBiYWRTdGFnZUVudW1QaXBlbGluZURlc2NyaXB0
b3IgPSB7CisgICAgICAgIHN0YWdlczogW2JhZFN0YWdlRW51bURlc2NyaXB0b3IsIGZyYWdtZW50
U3RhZ2VEZXNjcmlwdG9yXSwKKyAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6ICJ0cmlhbmdsZUxp
c3QiCisgICAgfQorICAgIGNoZWNrQmFkUmVuZGVyUGlwZWxpbmUoYmFkU3RhZ2VFbnVtUGlwZWxp
bmVEZXNjcmlwdG9yLCAiV2ViR1BVU2hhZGVyU3RhZ2VFbnVtIik7Cit9CisKK3J1bldlYkdQVVRl
c3RzKFtzZXRVcFBpcGVsaW5lLCBzZXRVcEJhZFBpcGVsaW5lc10pOworCitzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLmh0bWwgYi9M
YXlvdXRUZXN0cy93ZWJncHUvc2hhZGVyLW1vZHVsZXMuaHRtbAppbmRleCA4MjNiZTkyZDllNDlh
OWRiNDljNTMzMDFiM2JhZWQ4NTYyNzYwNDg4Li4yNjdjODAyNzBiMmNlYWZiNDViZjU3YmVkZjA3
ZDVjZDMzZWRmMWYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvc2hhZGVyLW1vZHVs
ZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvc2hhZGVyLW1vZHVsZXMuaHRtbApAQCAt
MSw2ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJqcy9zZXQtdXAt
d2ViZ3B1LWNvbnRleHRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgaWQ9ImxpYnJhcnlfZnVsbCIg
dHlwZT0ieC1zaGFkZXIveC1tZXRhbCI+CiAgICAgI2luY2x1ZGUgPG1ldGFsX3N0ZGxpYj4KICAg
ICAKQEAgLTcwLDIwICs3MSw2IEBACiBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgd2luZG93
LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCi1sZXQgY2FudmFzOwotbGV0IGNvbnRleHQ7Ci1s
ZXQgYWRhcHRlcjsKLWxldCBkZWZhdWx0RGV2aWNlOwotCi1hc3luYyBmdW5jdGlvbiBzZXRVcENv
bnRleHRzKCkgewotICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIp
OwotICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ3B1Iik7Ci0gICAgYWRhcHRl
ciA9IGF3YWl0IHdpbmRvdy53ZWJncHUucmVxdWVzdEFkYXB0ZXIoe30pOwotICAgIGRlZmF1bHRE
ZXZpY2UgPSBhZGFwdGVyLmNyZWF0ZURldmljZSgpOwotCi0gICAgc2V0VXBTaGFkZXJzKCk7Ci19
Ci0KIGZ1bmN0aW9uIHNldFVwU2hhZGVycygpIHsKICAgICBsZXQgc2hhZGVyRGVzY3JpcHRvcjAg
PSB7CiAgICAgICAgIGNvZGUgOiAiSGVsbG8gV29ybGQiCkBAIC0xMTUsOSArMTAyLDkgQEAgZnVu
Y3Rpb24gc2V0VXBTaGFkZXJzKCkgewogICAgICAgICB0ZXN0RmFpbGVkKCJTaGFkZXIgbW9kdWxl
IG5vdCBjcmVhdGVkIHN1Y2Nlc3NmdWxseSEiKTsKIH0KIAotc2V0VXBDb250ZXh0cygpOworcnVu
V2ViR1BVVGVzdHMoW3NldFVwU2hhZGVyc10pOwogCi12YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2Vi
Z3B1LWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1iYXNpY3MuaHRtbApp
bmRleCBmN2M3NjcyZmQ1YzExOWFhMjg1YTUzNDYxMGNlMGU0MTNjNGI3YzViLi42MmZhNTY1ZTg3
NzRhODU1N2FiNmZjMWUzNzdiNmE4YzZiODkxNWZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS93ZWJncHUt
YmFzaWNzLmh0bWwKQEAgLTEsNiArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0ianMvc2V0LXVwLXdlYmdwdS1jb250ZXh0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IGlk
PSJsaWJyYXJ5IiB0eXBlPSJ4LXNoYWRlci94LW1ldGFsIj4KICAgICAjaW5jbHVkZSA8bWV0YWxf
c3RkbGliPgogICAgIApAQCAtNDEsNDYgKzQyLDUzIEBACiBpZiAod2luZG93LnRlc3RSdW5uZXIp
CiAgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCi1sZXQgY2FudmFzOwotbGV0
IGNvbnRleHQ7Ci1sZXQgYWRhcHRlcjsKLWxldCBkZWZhdWx0RGV2aWNlOwotCi1hc3luYyBmdW5j
dGlvbiBzZXRVcENvbnRleHRzKCkgewotICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImNhbnZhcyIpOwotICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ3B1Iik7
Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRl
IFdlYkdQVSBjb250ZXh0ISIpOwotCi0gICAgc2hvdWxkQmVEZWZpbmVkKHdpbmRvdy53ZWJncHUp
OwotICAgIAotICAgIGFkYXB0ZXIgPSBhd2FpdCB3aW5kb3cud2ViZ3B1LnJlcXVlc3RBZGFwdGVy
KHt9KTsKLSAgICBpZiAoIWFkYXB0ZXIpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90
IGNyZWF0ZSBkZWZhdWx0IFdlYkdQVUFkYXB0ZXIhIikKK2Z1bmN0aW9uIHNldFVwUGlwZWxpbmUo
KSB7CisgICAgbGV0IHNoYWRlckRlc2NyaXB0b3IgPSB7CisgICAgICAgIGNvZGU6IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJsaWJyYXJ5IikudGV4dAorICAgIH07CisgICAgbGV0IHNoYWRlck1v
ZHVsZSA9IGRlZmF1bHREZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHNoYWRlckRlc2NyaXB0b3Ip
OworICAgIGlmICghc2hhZGVyTW9kdWxlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5v
dCBjcmVhdGUgV2ViR1BVU2hhZGVyTW9kdWxlISIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgZGVmYXVsdERldmljZSA9IGFkYXB0ZXIuY3JlYXRlRGV2aWNlKCk7Ci0gICAgaWYgKCFk
ZWZhdWx0RGV2aWNlKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2Vi
R1BVRGV2aWNlISIpOworICAgIGxldCB2ZXJ0ZXhTdGFnZURlc2NyaXB0b3IgPSB7IAorICAgICAg
ICBtb2R1bGU6IHNoYWRlck1vZHVsZSwgCisgICAgICAgIHN0YWdlOiBXZWJHUFVTaGFkZXJTdGFn
ZS5WRVJURVgsIAorICAgICAgICBlbnRyeVBvaW50OiAidmVydGV4X21haW4iIAorICAgIH07CisK
KyAgICBsZXQgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3IgPSB7CisgICAgICAgIG1vZHVsZTogc2hh
ZGVyTW9kdWxlLAorICAgICAgICBzdGFnZTogV2ViR1BVU2hhZGVyU3RhZ2UuRlJBR01FTlQsCisg
ICAgICAgIGVudHJ5UG9pbnQ6ICJmcmFnbWVudF9tYWluIgorICAgIH07CisKKyAgICBpZiAoIXZl
cnRleFN0YWdlRGVzY3JpcHRvciB8fCAhZnJhZ21lbnRTdGFnZURlc2NyaXB0b3IpIHsKKyAgICAg
ICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3Jp
cHRvciEiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNldFVwU2hhZGVycygpOwot
fQorICAgIGxldCBwaXBlbGluZURlc2NyaXB0b3IgPSB7CisgICAgICAgIHN0YWdlczogW3ZlcnRl
eFN0YWdlRGVzY3JpcHRvciwgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3JdLAorICAgICAgICBwcmlt
aXRpdmVUb3BvbG9neTogInRyaWFuZ2xlTGlzdCIKKyAgICB9OwogCi1mdW5jdGlvbiBzZXRVcFNo
YWRlcnMoKSB7Ci0gICAgbGV0IHNoYWRlckRlc2NyaXB0b3IgPSB7Ci0gICAgICAgIGNvZGU6IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaWJyYXJ5IikudGV4dAorICAgIGlmICghcGlwZWxpbmVE
ZXNjcmlwdG9yKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yISIpOworICAgICAgICByZXR1cm47CiAgICAgfTsKLSAg
ICBsZXQgc2hhZGVyTW9kdWxlID0gZGVmYXVsdERldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoc2hh
ZGVyRGVzY3JpcHRvcik7Ci0gICAgaWYgKCFzaGFkZXJNb2R1bGUpCi0gICAgICAgIHRlc3RGYWls
ZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVU2hhZGVyTW9kdWxlISIpOworCisgICAgbGV0IHJl
bmRlclBpcGVsaW5lID0gZGVmYXVsdERldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShwaXBlbGlu
ZURlc2NyaXB0b3IpOworICAgIGlmICghcmVuZGVyUGlwZWxpbmUpIHsKKyAgICAgICAgdGVzdEZh
aWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFVSZW5kZXJQaXBlbGluZSEiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KIH0KIAotc2V0VXBDb250ZXh0cygpOworcnVuV2ViR1BVVGVzdHMoW3Nl
dFVwUGlwZWxpbmVdKTsKIAotdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CitzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353993</attachid>
            <date>2018-11-06 12:59:38 -0800</date>
            <delta_ts>2018-11-06 14:26:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191291-20181106125937.patch</filename>
            <type>text/plain</type>
            <size>86235</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3ODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM0NWVjODFlOTM1MDQx
ZGZkMmM5MTU2OThlMWM0NjIwNzNlOWZmMy4uNzNlMDJlZmI1YzU0OTc2ZWNiODlkM2E2ZjhmMjQ5
MzJlZDJkYzllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE4LTExLTA2ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRXhwZXJp
bWVudGFsIHByb3RvdHlwZSBmb3IgTVNMIHNoYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTI5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHdlYmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0
bWwKKyAgICAgICAgQWxzbyB1cGRhdGUgdGVzdCB3ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sIHRv
IGNyZWF0ZSBhIFdlYkdQVVJlbmRlclBpcGVsaW5lLgorCisgICAgICAgIEJlZ2luIGltcGxlbWVu
dGF0aW9uIG9mIFdlYkdQVVJlbmRlclBpcGVsaW5lIGFuZCBXZWJHUFVTd2FwQ2hhaW4uIEEgV2Vi
R1BVUmVuZGVyUGlwZWxpbmUgaXMgYmFja2VkIGJ5IGEKKyAgICAgICAgR1BVUmVuZGVyUGlwZWxp
bmUsIGNyZWF0ZWQgbGF6aWx5IHVzaW5nIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBwYXNzZWQtaW4g
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLgorICAgICAgICBPbiBNZXRhbC1zdXBwb3J0
ZWQgc3lzdGVtcywgR1BVUmVuZGVyUGlwZWxpbmUgaXMgYW4gaW50ZXJmYWNlIHRvIGEgTVRMUmVu
ZGVyUGlwZWxpbmVTdGF0ZS4KKyAgICAgICAgVGhlIE1UTFJlbmRlclBpcGVsaW5lU3RhdGUgaXMg
Y3JlYXRlZCB3aXRoIHRoZSBXZWJHUFVEZXZpY2UgY3VycmVudGx5IGNvbmZpZ3VyZWQgb24gdGhl
IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQ
VURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBp
cGVsaW5lIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6R1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6cHJpbWl0aXZlVG9wb2xvZ3kpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRl
clBpcGVsaW5lIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6YWRhcHRlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmRldmljZSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5pZGw6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5k
ZXJQaXBlbGluZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVuZGVyaW5n
Q29udGV4dDo6V2ViR1BVUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVNoYWRlck1vZHVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxl
Ojptb2R1bGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0
YWdlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVTd2FwQ2hhaW46OmNvbmZpZ3VyZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVTd2FwQ2hhaW46OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU3dhcENo
YWluOjptYXJrTGF5ZXJDb21wb3NpdGVkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVTd2FwQ2hhaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVN3YXBDaGFpbjo6V2ViR1BV
U3dhcENoYWluKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRs
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6cGxhdGZvcm1SZW5kZXJQaXBlbGlu
ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxp
bmVNZXRhbC5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRGdW5jdGlvbnNGb3JQaXBl
bGluZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGlwZWxpbmU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6R1BVUmVuZGVyUGlw
ZWxpbmUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkdQVVN3YXBDaGFpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQ
VVN3YXBDaGFpbjo6R1BVU3dhcENoYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVN3YXBDaGFp
bjo6c2V0RGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVN3YXBDaGFpbjo6cmVzaGFwZSk6
CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OnByZXNlbnQpOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNv
cmVCdWlsdGluTmFtZXMuaDoKKwogMjAxOC0xMS0wMSAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEV4cGVyaW1lbnRhbCBwcm90b3R5cGUgZm9y
IE1TTCBzaGFkZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDlhZWIyZGRjY2Q5YjBhODYyMjY3
NTMzNTc2NjY2N2M1YjdhZmQ2NmMuLjIxMTQxMDk1ODc3Yzk1OGU5ZTk1YTM5MTA1MDI0NjkwNTA2
MTBlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00NTMsOSArNDUzLDE0IEBAIHNldChXZWJD
b3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5p
ZGwKICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyRGVzY3JpcHRvci5pZGwKICAgICBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCisgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwKKyAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZVN0YWdlRGVzY3JpcHRvci5pZGwKKyAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
aXBlbGluZS5pZGwKKyAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwK
ICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsCiAgICAgTW9kdWxlcy93
ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwKKyAgICBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVTaGFkZXJTdGFnZS5pZGwKICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hh
aW4uaWRsCiAKICAgICBNb2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGRjYzc3MmM2NjZiN2Y5YTAwZDhlNzBkZGFiOGM4OGRh
YzZjNDQwMzEuLmY5NTkwOTAzMDhjMjU1MTIxYzRmZmU5NTM0NzQ2MDEwMjQ2NjI2YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzczLDkgKzM3MywxNCBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyRGVzY3JpcHRv
ci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbCBc
CisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JC
YXNlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZVN0
YWdlRGVzY3JpcHRvci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyaW5nQ29udGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVURldmljZS5jcHAKaW5kZXggZTg1MTE0NDA1OGRiMzcyZjBjNGQxMzY1YzAyZjU4NmJhOTcx
NWU2MC4uMDRjOTY3ZjJiZGU0OGZhYWY1NThjZjc5NDc0NWQ3ZTU4OTQ4OWZkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuY3BwCkBAIC0yOCw2ICsyOCw4IEBA
CiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmUuaCIK
KyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJHUFVT
aGFkZXJNb2R1bGUuaCIKICNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCiAK
QEAgLTM4LDYgKzQwLDExIEBAIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IEdQVURldmljZTo6Y3Jl
YXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImCiAgICAgcmV0dXJuIEdQ
VVNoYWRlck1vZHVsZTo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKIH0KIAor
UmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5l
KEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0Cit7CisgICAg
cmV0dXJuIEdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZGVzY3JpcHRv
cikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuaAppbmRleCBjMTll
MWVjZmY1YjdmOGQwM2Q3NWYzYzg3MTkxY2Q4NzkxODdiMWFiLi44OGIwY2QyYmVkZDVhOGJkN2Vl
MDFjNzg4OWQ2ODdmNzczNTBkNjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVEZXZpY2UuaApAQCAtNDYsMTQgKzQ2LDE3IEBAIHVzaW5nIFBsYXRmb3JtRGV2aWNlU21hcnRQ
dHIgPSBSZWZQdHI8dm9pZD47CiAjZW5kaWYKIAogY2xhc3MgR1BVU2hhZGVyTW9kdWxlOworY2xh
c3MgR1BVUmVuZGVyUGlwZWxpbmU7CiAKIHN0cnVjdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
Oworc3RydWN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKIAogY2xhc3MgR1BVRGV2aWNl
IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVRGV2aWNlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZlB0cjxHUFVEZXZpY2U+IGNyZWF0ZSgpOwogCiAgICAgUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4g
Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImJikgY29uc3Q7Cisg
ICAgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3ImJikgY29uc3Q7CiAKICAgICBQbGF0Zm9ybURldmljZSAqcGxh
dGZvcm1EZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRGV2aWNlLmdldCgpOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5l
RGVzY3JpcHRvckJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTI3NTViOWUyNjZhMmU4YjM4ZmE1ZDRiMDhm
ZDdlMTRlMjgxMjY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJH
UFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
IHsKKyAgICBWZWN0b3I8R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I+IHN0YWdlczsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZVN0YWdlRGVz
Y3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGNkZDQ4ZDBiYjE0YzkzZGZkMjljYTIyMDljZDBl
NzRjYWU5YTc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BV
U2hhZGVyTW9kdWxlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3Igewor
ICAgIGNvbnN0IEdQVVNoYWRlck1vZHVsZSYgbW9kdWxlOworICAgIHVuc2lnbmVkIGxvbmcgc3Rh
Z2U7CisgICAgU3RyaW5nIGVudHJ5UG9pbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wMDM1ZWE2MjIxNThkMzQ2OGUzN2ZkMWQ1NmQ4MzIzNWNkM2E1NGM2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UuaCIKKyNpbmNsdWRlICJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIgorCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IgOiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKKyAgICBl
bnVtIHsKKyAgICAgICAgUG9pbnRMaXN0LAorICAgICAgICBMaW5lTGlzdCwKKyAgICAgICAgTGlu
ZVN0cmlwLAorICAgICAgICBUcmlhbmdsZUxpc3QsCisgICAgICAgIFRyaWFuZ2xlU3RyaXAKKyAg
ICB9OworCisgICAgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKFZlY3RvcjxHUFVQaXBlbGlu
ZVN0YWdlRGVzY3JpcHRvcj4mJiBzdGFnZXMsIGludCB0b3BvbG9neSkKKyAgICAgICAgOiBHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlIHsgV1RGTW92ZShzdGFnZXMpIH0KKyAgICAgICAgLCBwcmlt
aXRpdmVUb3BvbG9neSh0b3BvbG9neSkKKyAgICB7CisgICAgfQorCisgICAgaW50IHByaW1pdGl2
ZVRvcG9sb2d5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuY3BwCmluZGV4IDEwYjliZjNkZjU4MWE5NWFlMzc2YjYyZDhhZGQxYTJhZWNhOWE3NzQuLmNj
MDRkZmNmYmM1YjJiNmVlMzEzNzU4YjEwZWRhNDA5NTllNmRlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApAQCAtMjgsOSArMjgsMTMgQEAK
IAogI2lmIEVOQUJMRShXRUJHUFUpCiAKLSNpbmNsdWRlICJXZWJHUFVBZGFwdGVyLmgiCi0KKyNp
bmNsdWRlICJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZURlc2NyaXB0
b3IuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZS5oIgorI2luY2x1
ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYkdQVVNo
YWRlck1vZHVsZS5oIgogI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCIK
IApAQCAtNTcsNiArNjEsMjAgQEAgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gV2ViR1BVRGV2
aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxlRGUKICAgICByZXR1cm4g
V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUobV9kZXZpY2UtPmNyZWF0ZVNoYWRlck1vZHVsZShH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5jb2RlIH0pKTsKIH0KIAorUmVm
UHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVs
aW5lKFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0Cit7
CisgICAgVmVjdG9yPEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yPiBzdGFnZXM7CisgICAgZm9y
IChjb25zdCBhdXRvJiBzdGFnZURlc2NyaXB0b3IgOiBkZXNjcmlwdG9yLnN0YWdlcykgeworICAg
ICAgICBpZiAoIXN0YWdlRGVzY3JpcHRvci5tb2R1bGUpIHsKKyAgICAgICAgICAgIExPRyhXZWJH
UFUsICJXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKCk6IFdlYkdQVVNoYWRlck1v
ZHVsZSBub3QgZm91bmQhIik7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
fQorICAgICAgICBzdGFnZXMuYXBwZW5kKHsgc3RhZ2VEZXNjcmlwdG9yLm1vZHVsZS0+bW9kdWxl
KCksIHN0YWdlRGVzY3JpcHRvci5zdGFnZSwgc3RhZ2VEZXNjcmlwdG9yLmVudHJ5UG9pbnQgfSk7
CisgICAgfQorCisgICAgcmV0dXJuIFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUobV9kZXZp
Y2UtPmNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7IFdU
Rk1vdmUoc3RhZ2VzKSwgc3RhdGljX2Nhc3Q8aW50PihkZXNjcmlwdG9yLnByaW1pdGl2ZVRvcG9s
b2d5KSB9KSk7Cit9CisKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCmluZGV4IDRkNWIwYmFjMTc1OTYxYThk
ZWU3ZTkyMTg2NmJmYmE3MGZhMTM3MzEuLjdjMjdlMGI5NzIzMmQyOGE2MDVhMDRlYmUzMWI2Njg5
NDhmMGJkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmlj
ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdFQkdQVSkKIAogI2luY2x1ZGUgIkdQ
VURldmljZS5oIgorI2luY2x1ZGUgIldlYkdQVUFkYXB0ZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzcsMTcgKzM4LDIxIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNz
IFdlYkdQVUFkYXB0ZXI7CitjbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZTsKIGNsYXNzIFdlYkdQ
VVNoYWRlck1vZHVsZTsKIAorc3RydWN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsK
IHN0cnVjdCBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yOwogCiBjbGFzcyBXZWJHUFVEZXZp
Y2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVEZXZpY2U+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmUHRyPFdlYkdQVURldmljZT4gY3JlYXRlKFJlZjxXZWJHUFVBZGFwdGVyPiYmKTsKIAot
ICAgIFdlYkdQVUFkYXB0ZXImIGFkYXB0ZXIoKSBjb25zdCB7IHJldHVybiBtX2FkYXB0ZXIuZ2V0
KCk7IH0KKyAgICBjb25zdCBXZWJHUFVBZGFwdGVyJiBhZGFwdGVyKCkgY29uc3QgeyByZXR1cm4g
bV9hZGFwdGVyLmdldCgpOyB9CisgICAgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UoKSBjb25zdCB7
IHJldHVybiAqbV9kZXZpY2U7IH0KIAogICAgIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNy
ZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYpIGNvbnN0Owor
ICAgIFJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVuZGVyUGlwZWxpbmUoV2Vi
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFdl
YkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiwgUmVmUHRyPEdQVURldmljZT4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAppbmRleCBk
MWE5ZjFhMmM5YzMzZDU3MzAyYWQyOTc0ODYxODVjYjZiZTI3Y2VjLi42MDNlMzc2Y2IzOGUxMDQ1
ZWQ4OTFjMDJkMzFmNjk1OTFjODNjNzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVURldmljZS5pZGwKQEAgLTM0LDYgKzM0LDcgQEAKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgV2ViR1BVQWRhcHRlciBhZGFwdGVyOwogCiAgICAgV2ViR1BVU2hhZGVyTW9kdWxl
IGNyZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIGRlc2NyaXB0
b3IpOworICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lIGNyZWF0ZVJlbmRlclBpcGVsaW5lKFdlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKIAogLyogVG8gQmUgSW1wbGVt
ZW50ZWQ6CiAgICAgV2ViR1BVQnVmZmVyIGNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJEZXNjcmlw
dG9yIGRlc2NyaXB0b3IpOwpAQCAtNDksOCArNTAsNiBAQAogICAgIFdlYkdQVUlucHV0U3RhdGUg
Y3JlYXRlSW5wdXRTdGF0ZShXZWJHUFVJbnB1dFN0YXRlRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsK
ICAgICBXZWJHUFVBdHRhY2htZW50U3RhdGUgY3JlYXRlQXR0YWNobWVudFN0YXRlKFdlYkdQVUF0
dGFjaG1lbnRTdGF0ZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lIGNyZWF0ZUNvbXB1dGVQaXBlbGluZShXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yIGRlc2NyaXB0b3IpOwotICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lIGNyZWF0ZVJlbmRlclBp
cGVsaW5lKFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLQogICAg
IFdlYkdQVUNvbW1hbmRCdWZmZXIgY3JlYXRlQ29tbWFuZEJ1ZmZlcihXZWJHUFVDb21tYW5kQnVm
ZmVyRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKICAgICBXZWJHUFVGZW5jZSBjcmVhdGVGZW5jZShX
ZWJHUFVGZW5jZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMTIxYTliYTU2ODM3NDAxNDNjZWMzMDU5MDgyYmM4MmNhNTQxNTkyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZS5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVQaXBlbGlu
ZVN0YWdlRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdHJ1Y3QgV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7CisgICAg
VmVjdG9yPFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yPiBzdGFnZXM7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9y
QmFzZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWRkZDAzZGE3ZGM5MmI0NDA3Mzc0ODU4ZDk4OTg1MGVmYzgz
YTFiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworLy8gaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWdu
L3NrZXRjaC53ZWJpZGwKKworZGljdGlvbmFyeSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
IHsKKyAgICAvLyBXZWJHUFVQaXBlbGluZUxheW91dCBsYXlvdXQ7CisgICAgc2VxdWVuY2U8V2Vi
R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I+IHN0YWdlczsKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2Ny
aXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zM2YzYWUwOTU2NTAwZDRmN2IzN2M1ZTUwN2QwODdhZGYwYWRh
MTY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BV
U2hhZGVyTW9kdWxlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBXZWJHUFVTaGFkZXJTdGFnZUVudW0gPSB1bnNpZ25l
ZCBsb25nOworCitzdHJ1Y3QgV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IgeworICAgIGNv
bnN0IFdlYkdQVVNoYWRlck1vZHVsZSogbW9kdWxlID0gbnVsbHB0cjsKKyAgICBXZWJHUFVTaGFk
ZXJTdGFnZUVudW0gc3RhZ2U7CisgICAgU3RyaW5nIGVudHJ5UG9pbnQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0
b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyY2JiOTA1Njc5OTg4Y2MxYzM1MzI2YjkzOGRj
ZGQ5YmI2NTM0ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5pZGwKQEAgLTAsMCArMSwzMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9ibG9iL21hc3Rl
ci9kZXNpZ24vc2tldGNoLndlYmlkbAorCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgV2ViR1BVU2hh
ZGVyU3RhZ2VFbnVtOworCitkaWN0aW9uYXJ5IFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9y
IHsKKyAgICBXZWJHUFVTaGFkZXJNb2R1bGUgbW9kdWxlOworICAgIFdlYkdQVVNoYWRlclN0YWdl
RW51bSBzdGFnZTsKKyAgICBET01TdHJpbmcgZW50cnlQb2ludDsKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWIzYzAyMDA0MjgyZDdiZWEyMzJmYWVmZGQ3NTY4NTdkNTRmZGE0ZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBp
cGVsaW5lLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lLmgiCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IFdlYkdQVVJlbmRlclBpcGVsaW5l
OjpjcmVhdGUoUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lKQoreworICAgIGlm
ICghcGlwZWxpbmUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJHUFVSZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkpOworfQorCitX
ZWJHUFVSZW5kZXJQaXBlbGluZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmUoUmVmUHRyPEdQVVJlbmRl
clBpcGVsaW5lPiYmIHBpcGVsaW5lKQorICAgIDogbV9yZW5kZXJQaXBlbGluZShwaXBlbGluZSkK
K3sKKyAgICBVTlVTRURfUEFSQU0obV9yZW5kZXJQaXBlbGluZSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44YjUxMDYyY2RkMjYxOThjMGZhMGU5N2Y4NjkyYmY3NmM2ZmFhMTFiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUu
aApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKKworI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFdlYkdQVVJlbmRlclBpcGVsaW5lIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFdl
YkdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiYmKTsK
KworcHJpdmF0ZToKKyAgICBXZWJHUFVSZW5kZXJQaXBlbGluZShSZWZQdHI8R1BVUmVuZGVyUGlw
ZWxpbmU+JiYpOworCisgICAgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBtX3JlbmRlclBpcGVs
aW5lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDZkMDFhMjk1ZTFhYWRkYTE3NmQ5NTVhZDI5
ZWU0OTBiNDEwM2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworLy8gaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWdu
L3NrZXRjaC53ZWJpZGwKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVk
QXRSdW50aW1lPVdlYkdQVSwKKyAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCitdIGludGVy
ZmFjZSBXZWJHUFVSZW5kZXJQaXBlbGluZSB7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNmVlYzVkOGI2ZmVlMjk1ZTVmNDAxMTA5ZGExYmFkODFlMmU4ZDUyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldlYkdQVVBpcGVs
aW5lRGVzY3JpcHRvckJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgV2Vi
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFz
ZSB7CisgICAgZW51bSBjbGFzcyBQcmltaXRpdmVUb3BvbG9neSB7CisgICAgICAgIFBvaW50TGlz
dCwKKyAgICAgICAgTGluZUxpc3QsCisgICAgICAgIExpbmVTdHJpcCwKKyAgICAgICAgVHJpYW5n
bGVMaXN0LAorICAgICAgICBUcmlhbmdsZVN0cmlwCisgICAgfTsKKworICAgIFByaW1pdGl2ZVRv
cG9sb2d5IHByaW1pdGl2ZVRvcG9sb2d5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjllNzhhNzY2ZDNiYTkwMGUyMDg4MmEyYTdlZmRiMmY3ZjVjMjM3OTYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8g
aHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWduL3NrZXRj
aC53ZWJpZGwKKworZW51bSBXZWJHUFVQcmltaXRpdmVUb3BvbG9neSB7CisgICAgInBvaW50TGlz
dCIsCisgICAgImxpbmVMaXN0IiwKKyAgICAibGluZVN0cmlwIiwKKyAgICAidHJpYW5nbGVMaXN0
IiwKKyAgICAidHJpYW5nbGVTdHJpcCIKK307CisKK2RpY3Rpb25hcnkgV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yIDogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7CisgICAgV2Vi
R1BVUHJpbWl0aXZlVG9wb2xvZ3kgcHJpbWl0aXZlVG9wb2xvZ3k7CisgICAgLyogVG8gQmUgSW1w
bGVtZW50ZWQ6CisgICAgc2VxdWVuY2U8V2ViR1BVQmxlbmRTdGF0ZT4gYmxlbmRTdGF0ZXM7Cisg
ICAgV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUgZGVwdGhTdGVuY2lsU3RhdGU7CisgICAgV2ViR1BV
SW5wdXRTdGF0ZSBpbnB1dFN0YXRlOworICAgIFdlYkdQVUF0dGFjaG1lbnRzU3RhdGUgYXR0YWNo
bWVudHNTdGF0ZTsgKi8KKyAgICAvLyBUT0RPIG90aGVyIHByb3BlcnRpZXMKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IDBiZDI3NjQzYWViMWU1ZWVkMTYyNDY0OTA2MTlmZDYxMWNkZTRjN2MuLmVj
M2UwNzZkNWIyZDAzNDE5YzE4NzFkMDY2NDFlNDNmZTllZWIyODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3Bw
CkBAIC0zMiwxMyArMzIsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVuaXF1ZV9w
dHI8V2ViR1BVUmVuZGVyaW5nQ29udGV4dD4gV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
KENhbnZhc0Jhc2UmIGNhbnZhcykKIHsKLSAgICBhdXRvIGNvbnRleHQgPSBzdGQ6OnVuaXF1ZV9w
dHI8V2ViR1BVUmVuZGVyaW5nQ29udGV4dD4obmV3IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQoY2Fu
dmFzKSk7CisgICAgYXV0byBzd2FwQ2hhaW4gPSBHUFVTd2FwQ2hhaW46OmNyZWF0ZSgpOworCisg
ICAgaWYgKCFzd2FwQ2hhaW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBj
b250ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+KG5ldyBXZWJH
UFVSZW5kZXJpbmdDb250ZXh0KGNhbnZhcywgV1RGTW92ZShzd2FwQ2hhaW4pKSk7CiAgICAgY29u
dGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLVdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQ6OldlYkdQVVJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYgY2Fu
dmFzKQotICAgIDogV2ViR1BVU3dhcENoYWluKGNhbnZhcykKK1dlYkdQVVJlbmRlcmluZ0NvbnRl
eHQ6OldlYkdQVVJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWZQdHI8R1BV
U3dhcENoYWluPiYmIHN3YXBDaGFpbikKKyAgICA6IFdlYkdQVVN3YXBDaGFpbihjYW52YXMsIFdU
Rk1vdmUoc3dhcENoYWluKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDQ5YTdkYWYxMzg2YTMx
ODY2OWFiOTMyY2FhM2ZiMjJiNWY5MWVlNjcuLjZmMWE3ZDk3ZDgzNGYzYmYzOGUwZGIwNmJiMzlj
MDExM2E3YzIyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR1BVUmVuZGVyaW5nQ29udGV4dD4gY3JlYXRlKENh
bnZhc0Jhc2UmKTsKIAogcHJpdmF0ZToKLSAgICBXZWJHUFVSZW5kZXJpbmdDb250ZXh0KENhbnZh
c0Jhc2UmKTsKKyAgICBXZWJHUFVSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmLCBSZWZQdHI8
R1BVU3dhcENoYWluPiYmKTsKICAgICAvLyBDYW52YXNSZW5kZXJpbmdDb250ZXh0CiAgICAgYm9v
bCBpc1dlYkdQVSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICAvLyBBY3RpdmVE
T01PYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hh
ZGVyTW9kdWxlLmgKaW5kZXggOTc5ODI5MDk1ZTQ5ZmRjYmE1ZjA5MDU5YmNiMjEzYTFiZDIwMTIy
Mi4uNTA2MGQ1NmE4YzU5NzA5YmExMDlhZmI4ZWQ5Mjc3MTE4MmFkNWU4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmgKQEAgLTI4
LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQogCiAjaW5jbHVkZSAiR1BVU2hhZGVyTW9k
dWxlLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KKwogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0zOCw2ICsz
OCw4IEBAIGNsYXNzIFdlYkdQVVNoYWRlck1vZHVsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQ
VVNoYWRlck1vZHVsZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVU2hhZGVy
TW9kdWxlPiBjcmVhdGUoUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4mJik7CiAKKyAgICBjb25zdCBH
UFVTaGFkZXJNb2R1bGUmIG1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuICptX21vZHVsZTsgfQorCiBw
cml2YXRlOgogICAgIFdlYkdQVVNoYWRlck1vZHVsZShSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiYm
KTsKIApAQCAtNDcsMyArNDksNCBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0YWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE3ZDQyZjU5NjhhOTg3
ODdhOWY5Njk5ODc3ZTA3NWY1MDQyYmMyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0YWdlLmgKQEAgLTAsMCArMSw0NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2Vi
R1BVU2hhZGVyU3RhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVTaGFkZXJTdGFnZT4gewor
cHVibGljOgorICAgIGVudW0geworICAgICAgICBWRVJURVggPSAwLAorICAgICAgICBGUkFHTUVO
VCA9IDEsCisgICAgICAgIENPTVBVVEUgPSAyCisgICAgfTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Ez
N2EzNzQxMmQ0OTMwMWJiZjU3ODE3ZTg1NmM5NmQwNjM0Y2U2YgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0YWdlLmlkbApAQCAt
MCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1
d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCisKK3R5cGVkZWYgdW5zaWduZWQg
bG9uZyB1MzI7CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0UnVu
dGltZT1XZWJHUFUsCisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQorXSBpbnRlcmZhY2Ug
V2ViR1BVU2hhZGVyU3RhZ2UgeworICAgIGNvbnN0IHUzMiBWRVJURVggPSAwOworICAgIGNvbnN0
IHUzMiBGUkFHTUVOVCA9IDE7CisgICAgY29uc3QgdTMyIENPTVBVVEUgPSAyOworfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwCmluZGV4
IDAzODJhZTdiZGZjNzViNWE1MjA4ZTNiNWU3MDVhZmVlYWI5ZjhlNDkuLjhhYTZhNjgyYmU0Nzk5
NGVkYjg4ZTYxZThmYjMyNGRiZjA0YzEwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcApAQCAtMjgsMTIgKzI4LDE3IEBACiAKICNp
ZiBFTkFCTEUoV0VCR1BVKQogCisjaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV2ViR1BVU3dhcENoYWluOjp+V2ViR1BVU3dhcENoYWluKCkgPSBkZWZh
dWx0OwogCi12b2lkIFdlYkdQVVN3YXBDaGFpbjo6Y29uZmlndXJlKGNvbnN0IERlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCit2b2lkIFdlYkdQVVN3YXBDaGFpbjo6Y29uZmlndXJlKERlc2NyaXB0b3Im
JiBkZXNjcmlwdG9yKQogeworICAgIGlmIChkZXNjcmlwdG9yLmRldmljZSkKKyAgICAgICAgbV9z
d2FwQ2hhaW4tPnNldERldmljZShkZXNjcmlwdG9yLmRldmljZS0+ZGV2aWNlKCkpOworCiAgICAg
cmVzaGFwZShkZXNjcmlwdG9yLndpZHRoLCBkZXNjcmlwdG9yLmhlaWdodCk7CiB9CiAKQEAgLTQ0
LDEzICs0OSwxMiBAQCB2b2lkIFdlYkdQVVN3YXBDaGFpbjo6cHJlc2VudCgpCiAKIHZvaWQgV2Vi
R1BVU3dhcENoYWluOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKLSAgICBtX3dp
ZHRoID0gd2lkdGg7Ci0gICAgbV9oZWlnaHQgPSBoZWlnaHQ7CisgICAgbV9zd2FwQ2hhaW4tPnJl
c2hhcGUod2lkdGgsIGhlaWdodCk7CiB9CiAKIHZvaWQgV2ViR1BVU3dhcENoYWluOjptYXJrTGF5
ZXJDb21wb3NpdGVkKCkKIHsKLSAgICAvLyBGSVhNRTogVW5pbXBsZW1lbnRlZCBzdHViLgorICAg
IG1fc3dhcENoYWluLT5wcmVzZW50KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmgKaW5kZXgg
ZjU2ZDM2MWY4NWQ0YmJiMDRiNzA2MDkzMDA0Yzg5NGYyZjAzMzg0Ny4uMDY3OTUwNjIxNWJiZjJl
ODE4YjUzMWVmMTZkYzRiZTIyODJmMDQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmgKQEAgLTI4LDI1ICsyOCwyOSBAQAogI2lmIEVOQUJM
RShXRUJHUFUpCiAKICNpbmNsdWRlICJHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIK
KyNpbmNsdWRlICJHUFVTd2FwQ2hhaW4uaCIKKyNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJHUFVTd2FwQ2hhaW4gOiBwdWJsaWMgR1BV
QmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgRGVzY3Jp
cHRvciB7CisgICAgICAgIGNvbnN0IFdlYkdQVURldmljZSogZGV2aWNlID0gbnVsbHB0cjsKICAg
ICAgICAgLy8gRklYTUU6IE1vcmUgdGV4dHVyZSBwcm9wZXJ0aWVzLgogICAgICAgICB1bnNpZ25l
ZCBsb25nIHdpZHRoOwogICAgICAgICB1bnNpZ25lZCBsb25nIGhlaWdodDsKICAgICB9OwogCiAg
ICAgdmlydHVhbCB+V2ViR1BVU3dhcENoYWluKCkgPSAwOwotICAgIHZvaWQgY29uZmlndXJlKGNv
bnN0IERlc2NyaXB0b3ImKTsKKyAgICB2b2lkIGNvbmZpZ3VyZShEZXNjcmlwdG9yJiYpOwogICAg
IC8vIEZJWE1FOiBXZWJHUFVUZXh0dXJlIGdldE5leHRUZXh0dXJlKCk7CiAgICAgdm9pZCBwcmVz
ZW50KCk7CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHUFVTd2FwQ2hhaW4oQ2FudmFzQmFzZSYgY2Fu
dmFzKQorICAgIFdlYkdQVVN3YXBDaGFpbihDYW52YXNCYXNlJiBjYW52YXMsIFJlZlB0cjxHUFVT
d2FwQ2hhaW4+JiYgc3dhcENoYWluKQogICAgICAgICA6IEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5n
Q29udGV4dChjYW52YXMpCisgICAgICAgICwgbV9zd2FwQ2hhaW4oV1RGTW92ZShzd2FwQ2hhaW4p
KQogICAgIHsKICAgICB9CiAKQEAgLTYzLDggKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0
b3AoKSBvdmVycmlkZSB7IH0KICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNp
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdW5zaWduZWQgbG9u
ZyBtX3dpZHRoOwotICAgIHVuc2lnbmVkIGxvbmcgbV9oZWlnaHQ7CisgICAgUmVmUHRyPEdQVVN3
YXBDaGFpbj4gbV9zd2FwQ2hhaW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbAppbmRl
eCA5OWNhOTBlNDNjYTYyMzY4ZTFmOWFhZWJhMTM0M2ZmNDNlMmFjZjIwLi41MDJlM2RkZDAxMWY4
NTJmNWJiZGYzZmRhYzU0M2E5ZmY2MzUwZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwKQEAgLTM3LDYgKzM3LDcgQEAKIHR5cGVk
ZWYgdW5zaWduZWQgbG9uZyB1MzI7CiAKIGRpY3Rpb25hcnkgV2ViR1BVU3dhcENoYWluRGVzY3Jp
cHRvciB7CisgICAgV2ViR1BVRGV2aWNlIGRldmljZTsgLy8gRklYTUU6IFByb3Bvc2UgdGhpcyBh
ZGRpdGlvbiB0byBJREwuCiAgICAgLy8gV2ViR1BVVGV4dHVyZVVzYWdlRmxhZ3MgdXNhZ2U7CiAg
ICAgLy8gV2ViR1BVVGV4dHVyZUZvcm1hdEVudW0gZm9ybWF0OwogICAgIHUzMiB3aWR0aDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBp
cGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQ
aXBlbGluZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3OTJhOTMxNDA4ZjI2NWM5ZGI0YmI0YmEwYjRhMjUwMTky
YTlmN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9j
b2NvYS9HUFVSZW5kZXJQaXBlbGluZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisKKyNpZiBVU0UoTUVUQUwpCitPQkpDX1BST1RPQ09MKE1UTFJlbmRlclBpcGVsaW5lU3Rh
dGUpOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVRGV2aWNlOwor
CitzdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOworCisjaWYgVVNFKE1FVEFMKQor
dXNpbmcgUGxhdGZvcm1SZW5kZXJQaXBlbGluZSA9IE1UTFJlbmRlclBpcGVsaW5lU3RhdGU7Cit1
c2luZyBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHIgPSBSZXRhaW5QdHI8TVRMUmVuZGVy
UGlwZWxpbmVTdGF0ZT47CisjZWxzZQordXNpbmcgUGxhdGZvcm1SZW5kZXJQaXBlbGluZSA9IHZv
aWQ7Cit1c2luZyBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHIgPSBSZWZQdHI8dm9pZD47
CisjZW5kaWYKKworY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxH
UFVSZW5kZXJQaXBlbGluZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8R1BVUmVuZGVy
UGlwZWxpbmU+IGNyZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3ImJik7CisKKyAgICBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lICpwbGF0Zm9ybVJlbmRlclBp
cGVsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lLmdldCgpOyB9
CisKK3ByaXZhdGU6CisgICAgR1BVUmVuZGVyUGlwZWxpbmUoUGxhdGZvcm1SZW5kZXJQaXBlbGlu
ZVNtYXJ0UHRyJiYpOworCisgICAgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyIG1fcGxh
dGZvcm1SZW5kZXJQaXBlbGluZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zNjRkMmYxYTdkZTk4MGM5OWExMTMzYzcyYWE3YmRiY2FlZTAyOTI5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxp
bmVNZXRhbC5tbQpAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKKworI2lmIEVOQUJMRShXRUJHUFUp
CisKKyNpbXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgorI2ltcG9ydCAiTG9n
Z2luZy5oIgorI2ltcG9ydCAiV2ViR1BVU2hhZGVyU3RhZ2UuaCIKKworI2ltcG9ydCA8TWV0YWwv
TWV0YWwuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIGJvb2wgc2V0RnVuY3Rpb25zRm9yUGlwZWxpbmVEZXNjcmlw
dG9yKGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSwgTVRMUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yICptdGxEZXNjcmlwdG9yLCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBkZXNj
cmlwdG9yKQoreworI2lmIExPR19ESVNBQkxFRAorICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5h
bWUpOworI2VuZGlmCisgICAgZm9yIChjb25zdCBhdXRvJiBzdGFnZURlc2NyaXB0b3IgOiBkZXNj
cmlwdG9yLnN0YWdlcykgeworICAgICAgICBhdXRvIG10bExpYnJhcnkgPSByZXRhaW5QdHIoc3Rh
Z2VEZXNjcmlwdG9yLm1vZHVsZS5wbGF0Zm9ybVNoYWRlck1vZHVsZSgpKTsKKworICAgICAgICBp
ZiAoIW10bExpYnJhcnkpIHsKKyAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogTVRMTGlicmFy
eSBkb2VzIG5vdCBleGlzdCEiLCBmdW5jdGlvbk5hbWUpOworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBmdW5jdGlvbiA9IGFkb3B0TlMoW210bExp
YnJhcnkgbmV3RnVuY3Rpb25XaXRoTmFtZTpzdGFnZURlc2NyaXB0b3IuZW50cnlQb2ludF0pOwor
CisgICAgICAgIGlmICghZnVuY3Rpb24pIHsKKyAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczog
TVRMRnVuY3Rpb24gJXMgbm90IGZvdW5kISIsIGZ1bmN0aW9uTmFtZSwgc3RhZ2VEZXNjcmlwdG9y
LmVudHJ5UG9pbnQudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHN0YWdlRGVzY3JpcHRvci5zdGFnZSkgeworICAg
ICAgICBjYXNlIFdlYkdQVVNoYWRlclN0YWdlOjpWRVJURVg6CisgICAgICAgICAgICBbbXRsRGVz
Y3JpcHRvciBzZXRWZXJ0ZXhGdW5jdGlvbjpmdW5jdGlvbi5nZXQoKV07CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBXZWJHUFVTaGFkZXJTdGFnZTo6RlJBR01FTlQ6CisgICAgICAg
ICAgICBbbXRsRGVzY3JpcHRvciBzZXRGcmFnbWVudEZ1bmN0aW9uOmZ1bmN0aW9uLmdldCgpXTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTE9HKFdl
YkdQVSwgIiVzOiBJbnZhbGlkIHNoYWRlciBzdGFnZSBzcGVjaWZpZWQhIiwgZnVuY3Rpb25OYW1l
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZlB0cjxHUFVSZW5kZXJQaXBl
bGluZT4gR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwg
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKK3sKKyAgICBjb25zdCBj
aGFyKiBjb25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSgpIjsK
KworICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQ
VSwgIiVzOiBNVExEZXZpY2UgZG9lcyBub3QgZXhpc3QhIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKKworICAgIG10bERlc2NyaXB0b3IgPSBhZG9wdE5TKFtNVExSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IgbmV3XSk7CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisg
ICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7CisgICAgICAgIExPRyhXZWJHUFUsICIlczogRXJyb3Ig
Y3JlYXRpbmcgTVRMRGVzY3JpcHRvciEiLCBmdW5jdGlvbk5hbWUpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIXNldEZ1bmN0aW9uc0ZvclBpcGVsaW5lRGVzY3Jp
cHRvcihmdW5jdGlvbk5hbWUsIG10bERlc2NyaXB0b3IuZ2V0KCksIFdURk1vdmUoZGVzY3JpcHRv
cikpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEZJWE1FOiBHZXQgdGhlIHBp
eGVsRm9ybWF0IGFzIGNvbmZpZ3VyZWQgZm9yIHRoZSBjb250ZXh0L0NBTWV0YWxMYXllci4KKyAg
ICBtdGxEZXNjcmlwdG9yLmdldCgpLmNvbG9yQXR0YWNobWVudHNbMF0ucGl4ZWxGb3JtYXQgPSBN
VExQaXhlbEZvcm1hdEJHUkE4VW5vcm07CisKKyAgICBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21h
cnRQdHIgcGlwZWxpbmU7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAg
ICBpZiAoW210bERlc2NyaXB0b3IgdmVydGV4RnVuY3Rpb25dKQorICAgICAgICBwaXBlbGluZSA9
IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld1JlbmRlclBpcGVsaW5lU3RhdGVX
aXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpIGVycm9yOm5pbF0pOworICAgIGVsc2UK
KyAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBObyB2ZXJ0ZXggZnVuY3Rpb24gYXNzaWduZWQgZm9y
IE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciEiLCBmdW5jdGlvbk5hbWUpOworCisgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIGlmICghcGlwZWxpbmUpIHsKKyAgICAgICAg
TE9HKFdlYkdQVSwgIiVzOiBFcnJvciBjcmVhdGluZyBNVExSZW5kZXJQaXBlbGluZVN0YXRlISIs
IGZ1bmN0aW9uTmFtZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgR1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpKTsK
K30KKworR1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRlclBpcGVsaW5lKFBsYXRmb3JtUmVuZGVy
UGlwZWxpbmVTbWFydFB0ciYmIHBpcGVsaW5lKQorICAgIDogbV9wbGF0Zm9ybVJlbmRlclBpcGVs
aW5lKFdURk1vdmUocGlwZWxpbmUpKQoreworICAgIFVOVVNFRF9QQVJBTShtX3BsYXRmb3JtUmVu
ZGVyUGlwZWxpbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
Y29jb2EvR1BVU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2Nv
YS9HUFVTd2FwQ2hhaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYmU2MmUzOThlYTE2MGY0YjRjNjc5OWIxODdk
NGJlZmQyMTg4MzZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvY29jb2EvR1BVU3dhcENoYWluLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBVU0UoTUVUQUwpCitPQkpD
X0NMQVNTIENBTWV0YWxMYXllcjsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEdQVURldmljZTsKKworI2lmIFVTRShNRVRBTCkKK3VzaW5nIFBsYXRmb3JtU3dhcExheWVy
ID0gQ0FNZXRhbExheWVyOwordXNpbmcgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciA9IFJldGFp
blB0cjxDQU1ldGFsTGF5ZXI+OworI2Vsc2UKK3VzaW5nIFBsYXRmb3JtU3dhcExheWVyID0gdm9p
ZDsKK3VzaW5nIFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHIgPSBSZWZQdHI8dm9pZD47CisjZW5k
aWYKKworY2xhc3MgR1BVU3dhcENoYWluIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVU3dhcENoYWlu
PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IGNyZWF0ZSgpOwor
CisgICAgdm9pZCBzZXREZXZpY2UoY29uc3QgR1BVRGV2aWNlJik7CisgICAgdm9pZCByZXNoYXBl
KGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgdm9pZCBwcmVzZW50KCk7CisKKyAgICBQbGF0
Zm9ybVN3YXBMYXllciAqcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1T
d2FwTGF5ZXIuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBHUFVTd2FwQ2hhaW4oUGxhdGZvcm1T
d2FwTGF5ZXJTbWFydFB0ciYmKTsKKworICAgIFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHIgbV9w
bGF0Zm9ybVN3YXBMYXllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkZmQxNjJlYmI4
MjMxNzdlNDM1Y2I5NjdhMmM2M2NmN2I1NWRiOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQpAQCAtMCww
ICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVT
d2FwQ2hhaW4uaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbXBvcnQgIkdQVURldmljZS5o
IgorI2ltcG9ydCAiTG9nZ2luZy5oIgorCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9y
dCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0
aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxHUFVTd2FwQ2hhaW4+IEdQ
VVN3YXBDaGFpbjo6Y3JlYXRlKCkKK3sKKyAgICBQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRyIHBs
YXRmb3JtTGF5ZXI7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBw
bGF0Zm9ybUxheWVyID0gYWRvcHROUyhbW0NBTWV0YWxMYXllciBhbGxvY10gaW5pdF0pOworCisg
ICAgW3BsYXRmb3JtTGF5ZXIgc2V0T3BhcXVlOjBdOworICAgIFtwbGF0Zm9ybUxheWVyIHNldE5h
bWU6QCJXZWJHUFUgTGF5ZXIiXTsKKworICAgIC8vIEZJWE1FOiBGb3Igbm93LCBkZWZhdWx0IHRv
IHRoZXNlIHNldHRpbmdzLgorICAgIFtwbGF0Zm9ybUxheWVyIHNldFBpeGVsRm9ybWF0Ok1UTFBp
eGVsRm9ybWF0QkdSQThVbm9ybV07CisgICAgW3BsYXRmb3JtTGF5ZXIgc2V0RnJhbWVidWZmZXJP
bmx5OllFU107CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgaWYgKCFw
bGF0Zm9ybUxheWVyKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46OmNyZWF0
ZSgpOiBVbmFibGUgdG8gY3JlYXRlIENBTWV0YWxMYXllciEiKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVTd2FwQ2hhaW4oV1RG
TW92ZShwbGF0Zm9ybUxheWVyKSkpOworfQorCitHUFVTd2FwQ2hhaW46OkdQVVN3YXBDaGFpbihQ
bGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRyJiYgcGxhdGZvcm1MYXllcikKKyAgICA6IG1fcGxhdGZv
cm1Td2FwTGF5ZXIoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSkKK3sKK30KKwordm9pZCBHUFVTd2Fw
Q2hhaW46OnNldERldmljZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSkKK3sKKyAgICBpZiAoIWRl
dmljZS5wbGF0Zm9ybURldmljZSgpKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hh
aW46OnNldERldmljZSgpOiBNVExEZXZpY2UgZG9lcyBub3QgZXhpc3QhIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBbbV9wbGF0Zm9ybVN3YXBMYXllciBzZXREZXZpY2U6ZGV2aWNl
LnBsYXRmb3JtRGV2aWNlKCldOworfQorCit2b2lkIEdQVVN3YXBDaGFpbjo6cmVzaGFwZShpbnQg
d2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgW21fcGxhdGZvcm1Td2FwTGF5ZXIgc2V0Qm91bmRz
OkNHUmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCldOworICAgIFttX3BsYXRmb3JtU3dhcExh
eWVyIHNldERyYXdhYmxlU2l6ZTpDR1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpXTsKK30KKwordm9p
ZCBHUFVTd2FwQ2hhaW46OnByZXNlbnQoKQoreworICAgIC8vIEZJWE1FOiBVbmltcGxlbWVudGVk
IHN0dWIuCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGQ1MDI3NzcyYjFlNmZhYzZiZjk0OGZlMmY3MDJkOGE1
ZDJmMThiOTAuLmVhM2U4ZmUxOWRiMGUxZjFkNmMxNDQ5MjhlYTJiNzQzZTI3OTM0OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0zMDIsNiArMzAyLDcgQEAgTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAog
TW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURl
dmljZS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwCitNb2R1
bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNoYWRlck1vZHVsZS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAKIApA
QCAtMzE5NSw5ICszMTk2LDE0IEBAIEpTV2ViR1BVLmNwcAogSlNXZWJHUFVBZGFwdGVyLmNwcAog
SlNXZWJHUFVBZGFwdGVyRGVzY3JpcHRvci5jcHAKIEpTV2ViR1BVRGV2aWNlLmNwcAorSlNXZWJH
UFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmNwcAorSlNXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3Jp
cHRvci5jcHAKIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAKK0pTV2ViR1BVUmVuZGVyUGlw
ZWxpbmUuY3BwCitKU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKIEpTV2ViR1BV
U2hhZGVyTW9kdWxlLmNwcAogSlNXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmNwcAorSlNX
ZWJHUFVTaGFkZXJTdGFnZS5jcHAKIEpTV2ViR1BVU3dhcENoYWluLmNwcAogSlNXZWJNZXRhbEJ1
ZmZlci5jcHAKIEpTV2ViTWV0YWxDb21tYW5kQnVmZmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKaW5kZXggMTQ3NGU1OTI1OTUwNDkzN2FiOGNjZTUyZjU2NDdiZDg3ZjhlMGE3NC4uMzI5ZmE4
NjA2MzgwMzYwZTRlZTliZWRhMDcwMDc2OTFlODU3YWRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CkBAIC0yOCw3ICsyOCw5IEBAIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFj
ZW1lbnQuY3BwCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29h
Lm1tCiAKIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tCitNb2R1bGVzL3dl
YmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCiBNb2R1bGVzL3dlYmdwdS9jb2Nv
YS9HUFVTaGFkZXJNb2R1bGVNZXRhbC5tbQorTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENo
YWluTWV0YWwubW0KIAogYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5t
bQogYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY5MDU3MzkzMTU1
ZTAyYTllZjUyZTZkYjJiOWJlNzAwNTE3Y2U2NWMuLjEzYTY4NTRlNzI4N2IzZmEwOTNlZDAyYjU4
MDYzZWUyOTgxODJlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNzc5LDYgKzEzNzc5LDkgQEAKIAkJRDA0NUFEMjEyMTY4
MjQ3NDAwMEE2RTlCIC8qIFdlYk1ldGFsQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
Yk1ldGFsQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA0NUFEMjIy
MTY4MjQ3NDAwMEE2RTlCIC8qIFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJNZXRhbENvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RDA0NUFEMjMyMTY4MjQ3NTAwMEE2RTlCIC8qIFdlYk1ldGFsQ29tbWFuZFF1ZXVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRDA0NkZCNjUyMThEMDczQzAwQ0I4RjYyIC8qIEdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA0NkZCNjcyMThEMTgwMzAwQ0I4
RjYyIC8qIEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBp
cGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQw
NDZGQjY4MjE4RDE4Q0QwMENCOEY2MiAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDA1NzNENDIyMTdFQjgxRTAwRDFCRTkxIC8qIEdQVUxlZ2FjeVRleHR1
cmVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxl
Z2FjeVRleHR1cmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA1Q0VE
MjcwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0QmxvY2tDb21tYW5kLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA1Q0VEMjgwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1h
dEJsb2NrQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybWF0
QmxvY2tDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzgwMiw2ICsx
MzgwNSw4IEBACiAJCUQwOTNEMjI1MjE3OTUxRDQwMDMyOTIxNyAvKiBXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA5M0QyMjcyMTc5NTFENDAwMzI5MjE3IC8qIFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDkzRDIyOTIxNzk1NDE2MDAzMjkyMTcgLyog
V2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA5NzI3QjUy
MTg3RjQ0MzAwOTQyRjNBIC8qIEdQVVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHUFVTd2Fw
Q2hhaW4uaDsgcGF0aCA9IGNvY29hL0dQVVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlEMDk3MjdCNjIxODdGNDQzMDA5NDJGM0EgLyogR1BVU3dhcENoYWluTWV0YWwu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVTd2FwQ2hhaW5NZXRhbC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA5NzI3QzIyMThBNDcyOTAwOTQyRjNBIC8qIEdQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDk3MjdDQTIxOEJEN0E1MDA5
NDJGM0EgLyogR1BVRGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVURldmljZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQTIwRDU0MjA5MkEwQTYwMEUwQzI1OSAv
KiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTM4MTIsNiArMTM4MTcsMTkgQEAKIAkJRDBCQzU0NDgxNDQzQUM0QTAwRTEw
NURBIC8qIENhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMEJENEY1QTE0MDg4NTBGMDA2ODM5QjYgLyogRGljdGF0aW9uQ29tbWFuZElPUy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaWN0YXRpb25Db21tYW5k
SU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBCRDRGNUIxNDA4ODUwRjAw
NjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGljdGF0aW9uQ29tbWFuZElPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlEMEM0MTlFQjIxODNDRkEyMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVTdGFnZURlc2Ny
aXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RUMyMTgzQ0ZBMjAwOUVDMURFIC8q
IFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQaXBlbGluZVN0
YWdlRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUVF
MjE4M0Q5QzgwMDlFQzFERSAvKiBXZWJHUFVTaGFkZXJTdGFnZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJHUFVTaGFkZXJTdGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlF
RjIxODNEOUM4MDA5RUMxREUgLyogV2ViR1BVU2hhZGVyU3RhZ2UuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVNo
YWRlclN0YWdlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RjAyMTgz
RUIzMTAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlEMEM0MTlGMTIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNj
cmlwdG9yQmFzZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUYyMjE4M0VGRUMwMDlFQzFERSAvKiBX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQw
QzQxOUYzMjE4M0VGRUMwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUY3MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5k
ZXJQaXBlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlGODIxODQwNERBMDA5RUMxREUgLyogV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyUGlw
ZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlGOTIxODQwNERB
MDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBp
cGVsaW5lLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RkEyMTg0MEY2
QzAwOUVDMURFIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdQVVJlbmRl
clBpcGVsaW5lLmg7IHBhdGggPSBjb2NvYS9HUFVSZW5kZXJQaXBlbGluZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlGQjIxODQwRjZDMDA5RUMxREUgLyogR1BVUmVuZGVy
UGlwZWxpbmVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVJlbmRlclBpcGVsaW5l
TWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTk4MjE2ODI0QTYw
MDFDOTFDNyAvKiBXZWJNZXRhbEJ1ZmZlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViTWV0YWxCdWZmZXIuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMENBQUU5QTIxNjgyNEE2MDAxQzkxQzcgLyog
V2ViTWV0YWxDb21tYW5kQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJNZXRhbENvbW1hbmRCdWZmZXIuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMENBQUU5QjIxNjgyNEE3MDAxQzkxQzcg
LyogV2ViTWV0YWxDb21tYW5kUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTWV0YWxDb21tYW5k
UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NDQ4LDggKzI1NDY2LDEz
IEBACiAJCQkJRDAwRjU5NDIyMTZFQ0M3QTAwMEQ3MURCIC8qIERPTVdpbmRvd1dlYkdQVS5pZGwg
Ki8sCiAJCQkJRDA5NzI3Q0EyMThCRDdBNTAwOTQyRjNBIC8qIEdQVURldmljZS5jcHAgKi8sCiAJ
CQkJRDA2MTVGQ0YyMTdGRjE4NTAwOEE0OEE4IC8qIEdQVURldmljZS5oICovLAorCQkJCUQwNDZG
QjY4MjE4RDE4Q0QwMENCOEY2MiAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggKi8sCisJ
CQkJRDA0NkZCNjcyMThEMTgwMzAwQ0I4RjYyIC8qIEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9y
LmggKi8sCisJCQkJRDBDNDE5RkEyMTg0MEY2QzAwOUVDMURFIC8qIEdQVVJlbmRlclBpcGVsaW5l
LmggKi8sCisJCQkJRDA0NkZCNjUyMThEMDczQzAwQ0I4RjYyIC8qIEdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5oICovLAogCQkJCUQwNjBEODg4MjE4MjgwQzEwMDMzOTMxOCAvKiBHUFVTaGFk
ZXJNb2R1bGUuaCAqLywKIAkJCQlEMDk3MjdDMjIxOEE0NzI5MDA5NDJGM0EgLyogR1BVU2hhZGVy
TW9kdWxlRGVzY3JpcHRvci5oICovLAorCQkJCUQwOTcyN0I1MjE4N0Y0NDMwMDk0MkYzQSAvKiBH
UFVTd2FwQ2hhaW4uaCAqLywKIAkJCQlEMDBGNTk0NzIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BV
LmNwcCAqLywKIAkJCQlEMDBGNTk0NjIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmggKi8sCiAJ
CQkJRDAwRjU5NDgyMTZFRkU1NDAwMEQ3MURCIC8qIFdlYkdQVS5pZGwgKi8sCkBAIC0yNTQ2MSwx
NCArMjU0ODQsMjUgQEAKIAkJCQlEMDBGNTk1MzIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2
aWNlLmNwcCAqLywKIAkJCQlEMDBGNTk1MjIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNl
LmggKi8sCiAJCQkJRDAwRjU5NTQyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5pZGwg
Ki8sCisJCQkJRDBDNDE5RjAyMTgzRUIzMTAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lRGVzY3Jp
cHRvckJhc2UuaCAqLywKKwkJCQlEMEM0MTlGMTIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgKi8sCisJCQkJRDBDNDE5RUIyMTgzQ0ZBMjAwOUVDMURF
IC8qIFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmggKi8sCisJCQkJRDBDNDE5RUMyMTgz
Q0ZBMjAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmlkbCAqLywKIAkJ
CQlEMDkzRDIyOTIxNzk1NDE2MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAg
Ki8sCiAJCQkJRDA5M0QyMjUyMTc5NTFENDAwMzI5MjE3IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuaCAqLywKIAkJCQlEMDkzRDIyNzIxNzk1MUQ0MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVyaW5n
Q29udGV4dC5pZGwgKi8sCisJCQkJRDBDNDE5RjgyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJl
bmRlclBpcGVsaW5lLmNwcCAqLywKKwkJCQlEMEM0MTlGNzIxODQwNERBMDA5RUMxREUgLyogV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaCAqLywKKwkJCQlEMEM0MTlGOTIxODQwNERBMDA5RUMxREUgLyog
V2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsICovLAorCQkJCUQwQzQxOUYyMjE4M0VGRUMwMDlFQzFE
RSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLywKKwkJCQlEMEM0MTlGMzIx
ODNFRkVDMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCAqLywK
IAkJCQlEMDYxNUZDRDIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmNwcCAq
LywKIAkJCQlEMDYxNUZDQzIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmgg
Ki8sCiAJCQkJRDA2MTVGQ0UyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5p
ZGwgKi8sCiAJCQkJRDA2MEQ4ODcyMTgyNjk3MDAwMzM5MzE4IC8qIFdlYkdQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IuaCAqLywKIAkJCQlEMDYwRDg4NDIxODI1RDVGMDAzMzkzMTggLyogV2ViR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwgKi8sCisJCQkJRDBDNDE5RUUyMTgzRDlDODAwOUVD
MURFIC8qIFdlYkdQVVNoYWRlclN0YWdlLmggKi8sCisJCQkJRDBDNDE5RUYyMTgzRDlDODAwOUVD
MURFIC8qIFdlYkdQVVNoYWRlclN0YWdlLmlkbCAqLywKIAkJCQlEMERBMEJFNTIxNzkzMEUyMDA3
RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmNwcCAqLywKIAkJCQlEMERBMEJFNDIxNzkzMEUyMDA3
RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmggKi8sCiAJCQkJRDBEQTBCRTYyMTc5MzBFMjAwN0ZF
MkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5pZGwgKi8sCkBAIC0yNTQ4MCw3ICsyNTUxNCw5IEBACiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUQwNjE1RkQxMjE3RkYxRTEw
MDhBNDhBOCAvKiBHUFVEZXZpY2VNZXRhbC5tbSAqLywKKwkJCQlEMEM0MTlGQjIxODQwRjZDMDA5
RUMxREUgLyogR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbSAqLywKIAkJCQlEMDYwRDg4OTIxODI4
MEMxMDAzMzkzMTggLyogR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0gKi8sCisJCQkJRDA5NzI3QjYy
MTg3RjQ0MzAwOTQyRjNBIC8qIEdQVVN3YXBDaGFpbk1ldGFsLm1tICovLAogCQkJKTsKIAkJCXBh
dGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggZDI5ZGJiZDU3YzQ4
MmRmYWEwMjMzODYwMWIxMGYwODZjNGE0NjM2ZS4uMGI4ODgzY2RlZmI2NTI1YTc3Njk2MThiNzgz
ZTczNWU3YjYzM2I2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVCdWlsdGluTmFtZXMuaApAQCAtMTc4LDYgKzE3OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBtYWNybyhXZWJHUFVBZGFwdGVyKSBcCiAgICAgbWFjcm8oV2ViR1BVRGV2aWNlKSBcCiAg
ICAgbWFjcm8oV2ViR1BVUmVuZGVyaW5nQ29udGV4dCkgXAorICAgIG1hY3JvKFdlYkdQVVJlbmRl
clBpcGVsaW5lKSBcCisgICAgbWFjcm8oV2ViR1BVU2hhZGVyU3RhZ2UpIFwKICAgICBtYWNybyhX
ZWJHUFVTaGFkZXJNb2R1bGUpIFwKICAgICBtYWNybyhXZWJHUFVTd2FwQ2hhaW4pIFwKICAgICBt
YWNybyhXZWJNZXRhbEJ1ZmZlcikgXApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE3MTg2MDUyMGMwYjBkOTdhMzViZDUwNWYz
NWQyOTNhNThlNjE1OWQuLjE2MWUwZjJkMjZmMzMzNjY0M2NhODM3OTU1MzQ1NWM0OGQ4Y2IyMmQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOC0xMS0wNiAgSnVzdGluIEZhbiAgPGp1c3Rpbl9m
YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEV4cGVyaW1lbnRhbCBwcm90b3R5cGUg
Zm9yIE1TTCBzaGFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTEyOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHdlYmdwdS9qcy9zZXQtdXAtd2ViZ3B1LWNvbnRleHRzLmpzOiBBZGRlZCBoZWxw
ZXIgc2NyaXB0IGZvciBydW5uaW5nIGRpZmZlcmVudCB3ZWJncHUgdGVzdHMuCisgICAgICAgIChy
dW5XZWJHUFVUZXN0cyk6CisgICAgICAgIChhc3luYy5ydW5XZWJHUFVUZXN0c09uQ2FudmFzKToK
KyAgICAgICAgKGFzeW5jLnNldFVwQ29udGV4dHMpOgorICAgICAgICAqIHdlYmdwdS9yZW5kZXIt
cGlwZWxpbmVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3JlbmRlci1w
aXBlbGluZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWJncHUvc2hhZGVyLW1vZHVsZXMuaHRtbDogVXBkYXRl
ZCB0byB1c2UgZnVuY3Rpb25zIGluIHNldC11cC13ZWJncHUtY29udGV4dHMuanMuCisgICAgICAg
ICogd2ViZ3B1L3dlYmdwdS1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmdwdS93
ZWJncHUtYmFzaWNzLmh0bWw6IFVwZGF0ZWQgdGhyb3VnaCBjcmVhdGluZyBhIFdlYkdQVVJlbmRl
clBpcGVsaW5lLgorCiAyMDE4LTExLTAxICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dlYkdQVV0gRXhwZXJpbWVudGFsIHByb3RvdHlwZSBmb3IgTVNMIHNo
YWRlcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9qcy9zZXQtdXAtd2ViZ3B1LWNv
bnRleHRzLmpzIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2pzL3NldC11cC13ZWJncHUtY29udGV4dHMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgzMDU2MDRkYWVlM2ZiYTU3NWMzYjQ5OGZkOGU4YmNjYjJkMzBjMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9qcy9zZXQtdXAtd2ViZ3B1LWNv
bnRleHRzLmpzCkBAIC0wLDAgKzEsNDYgQEAKKyd1c2Ugc3RyaWN0JzsKKworbGV0IGNvbnRleHQs
IGFkYXB0ZXIsIGRlZmF1bHREZXZpY2U7CisKK2Z1bmN0aW9uIHJ1bldlYkdQVVRlc3RzKHRlc3Rz
KSB7CisgICAgcnVuV2ViR1BVVGVzdHNPbkNhbnZhcyhkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJj
YW52YXMiKSwgdGVzdHMpOworfQorCithc3luYyBmdW5jdGlvbiBydW5XZWJHUFVUZXN0c09uQ2Fu
dmFzKGNhbnZhcywgdGVzdHMpIHsKKyAgICB0cnkgeworICAgICAgICBhd2FpdCBzZXRVcENvbnRl
eHRzKGNhbnZhcyk7CisKKyAgICAgICAgZm9yIChsZXQgdGVzdCBvZiB0ZXN0cykKKyAgICAgICAg
ICAgIHRlc3QoKTsKKworICAgICAgICBkZWJ1ZygiQWxsIHRlc3RzIGNvbXBsZXRlLiIpOworICAg
IH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOworICAgICAg
ICB0ZXN0RmFpbGVkKGBbJHtlcnJvcn1dOiBTZWUgY29uc29sZSFgKTsKKyAgICB9Cit9CisKK2Fz
eW5jIGZ1bmN0aW9uIHNldFVwQ29udGV4dHMoY2FudmFzKSB7CisgICAgY29udGV4dCA9IGNhbnZh
cy5nZXRDb250ZXh0KCJ3ZWJncHUiKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHRlc3RG
YWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVIGNvbnRleHQhIik7CisKKyAgICBzaG91bGRC
ZURlZmluZWQod2luZG93LndlYmdwdSk7CisgICAgCisgICAgLy8gRklYTUU6IHJlcXVlc3RBZGFw
dGVyIHNob3VsZCB0YWtlIGEgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuCisgICAgYWRhcHRlciA9
IGF3YWl0IHdpbmRvdy53ZWJncHUucmVxdWVzdEFkYXB0ZXIoe30pOworICAgIGlmICghYWRhcHRl
cikgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIGRlZmF1bHQgV2ViR1BV
QWRhcHRlciEiKQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IHJlcXVl
c3REZXZpY2Ugc2hvdWxkIHRha2UgYSBXZWJHUFVEZXZpY2VEZXNjcmlwdG9yLgorICAgIGRlZmF1
bHREZXZpY2UgPSBhZGFwdGVyLmNyZWF0ZURldmljZSgpOworICAgIGlmICghZGVmYXVsdERldmlj
ZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVURldmljZSEi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBEZWZhdWx0IHRvICJC
OEc4UjhBOFVub3JtIiBmb3JtYXQgZm9yIG5vdy4KKyAgICBjb250ZXh0LmNvbmZpZ3VyZSh7IGRl
dmljZTogZGVmYXVsdERldmljZSwgd2lkdGg6IGNhbnZhcy53aWR0aCwgaGVpZ2h0OiBjYW52YXMu
aGVpZ2h0IH0pOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjVi
NDdmOWRmNWMyNTZlY2M5ZDJhOTViNjZlMGM1NmYzOTA2N2Y2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTIgQEAKK1BBU1MgW29iamVjdCBXZWJHUFVdIGlzIGRlZmluZWQuCitQQVNTIFN1Y2Nlc3Nm
dWxseSBjcmVhdGVkIFdlYkdQVVJlbmRlclBpcGVsaW5lLgorUEFTUyBXZWJHUFVSZW5kZXJQaXBl
bGluZSB3aXRoIGludmFsaWQgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIHdhcyBub3Qg
Y3JlYXRlZC4KK1BBU1MgV2ViR1BVUmVuZGVyUGlwZWxpbmUgd2l0aCBpbnZhbGlkIHNoYWRlciBt
b2R1bGUgd2FzIG5vdCBjcmVhdGVkLgorUEFTUyBXZWJHUFVSZW5kZXJQaXBlbGluZSB3aXRoIGlu
dmFsaWQgdmVydGV4IHNoYWRlciBzdGFnZSB3YXMgbm90IGNyZWF0ZWQuCitQQVNTIFdlYkdQVVJl
bmRlclBpcGVsaW5lIHdpdGggaW52YWxpZCB2ZXJ0ZXggc2hhZGVyIGVudHJ5IHBvaW50IHdhcyBu
b3QgY3JlYXRlZC4KK1BBU1MgV2ViR1BVUmVuZGVyUGlwZWxpbmUgd2l0aCBpbnZhbGlkIFdlYkdQ
VVNoYWRlclN0YWdlRW51bSB3YXMgbm90IGNyZWF0ZWQuCitBbGwgdGVzdHMgY29tcGxldGUuCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMuaHRtbCBiL0xheW91dFRl
c3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVkNGMwYTNjYzY0
OWJjNDAzNjQ4NmZhZmY0NWJhNjBhMzZiNDM4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0bWwKQEAgLTAsMCArMSwxMzkgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJqcy9zZXQtdXAtd2ViZ3B1LWNvbnRleHRzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImxpYnJhcnkiIHR5cGU9Ingtc2hhZGVyL3gtbWV0YWwi
PgorICAgICNpbmNsdWRlIDxtZXRhbF9zdGRsaWI+CisgICAgCisgICAgdXNpbmcgbmFtZXNwYWNl
IG1ldGFsOworICAgIAorICAgIHN0cnVjdCBWZXJ0ZXgKKyAgICB7CisgICAgICAgIGZsb2F0NCBw
b3NpdGlvbiBbW3Bvc2l0aW9uXV07CisgICAgfTsKKyAgICAKKyAgICB2ZXJ0ZXggVmVydGV4IHZl
cnRleF9tYWluKHVpbnQgdmlkIFtbdmVydGV4X2lkXV0pCisgICAgeworICAgICAgICBWZXJ0ZXgg
djsKKyAgICAgICAgc3dpdGNoICh2aWQpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAg
di5wb3NpdGlvbiA9IGZsb2F0NCgtLjc1LCAtLjc1LCAwLCAxKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICB2LnBvc2l0aW9uID0gZmxvYXQ0KC43NSwg
LS43NSwgMCwgMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAg
ICAgICAgdi5wb3NpdGlvbiA9IGZsb2F0NCgwLCAuNzUsIDAsIDEpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB2LnBvc2l0aW9uID0gZmxvYXQ0KDAs
IDAsIDAsIDEpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2OworICAgIH0KKyAgICAKKyAg
ICBmcmFnbWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbihWZXJ0ZXggdmVydGV4SW4gW1tzdGFnZV9p
bl1dKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZsb2F0NCgxLjAsIDAuMCwgMC4wLCAxLjApOwor
ICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKKworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworbGV0IHNo
YWRlckRlc2NyaXB0b3IsIHNoYWRlck1vZHVsZSwgdmVydGV4U3RhZ2VEZXNjcmlwdG9yLCBmcmFn
bWVudFN0YWdlRGVzY3JpcHRvcjsKKworZnVuY3Rpb24gc2V0VXBQaXBlbGluZSgpIHsKKyAgICBz
aGFkZXJEZXNjcmlwdG9yID0geworICAgICAgICBjb2RlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibGlicmFyeSIpLnRleHQKKyAgICB9OworCisgICAgc2hhZGVyTW9kdWxlID0gZGVmYXVsdERl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoc2hhZGVyRGVzY3JpcHRvcik7CisgICAgaWYgKCFzaGFk
ZXJNb2R1bGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFVT
aGFkZXJNb2R1bGUhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2ZXJ0ZXhTdGFn
ZURlc2NyaXB0b3IgPSB7IAorICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwgCisgICAgICAg
IHN0YWdlOiBXZWJHUFVTaGFkZXJTdGFnZS5WRVJURVgsIAorICAgICAgICBlbnRyeVBvaW50OiAi
dmVydGV4X21haW4iIAorICAgIH07CisKKyAgICBmcmFnbWVudFN0YWdlRGVzY3JpcHRvciA9IHsK
KyAgICAgICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUsCisgICAgICAgIHN0YWdlOiBXZWJHUFVTaGFk
ZXJTdGFnZS5GUkFHTUVOVCwKKyAgICAgICAgZW50cnlQb2ludDogImZyYWdtZW50X21haW4iCisg
ICAgfTsKKworICAgIGxldCBwaXBlbGluZURlc2NyaXB0b3IgPSB7CisgICAgICAgIHN0YWdlczog
W3ZlcnRleFN0YWdlRGVzY3JpcHRvciwgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3JdLAorICAgICAg
ICBwcmltaXRpdmVUb3BvbG9neTogInRyaWFuZ2xlTGlzdCIKKyAgICB9OworCisgICAgbGV0IHJl
bmRlclBpcGVsaW5lID0gZGVmYXVsdERldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShwaXBlbGlu
ZURlc2NyaXB0b3IpOworICAgIGlmIChyZW5kZXJQaXBlbGluZSkKKyAgICAgICAgdGVzdFBhc3Nl
ZCgiU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgV2ViR1BVUmVuZGVyUGlwZWxpbmUuIikKKyAgICBlbHNl
CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVUmVuZGVyUGlwZWxp
bmUhIik7Cit9CisKK2Z1bmN0aW9uIGNoZWNrQmFkUmVuZGVyUGlwZWxpbmUoZGVzY3JpcHRvciwg
dGVzdFN1YmplY3ROYW1lKSB7CisgICAgbGV0IHBpcGVsaW5lID0gZGVmYXVsdERldmljZS5jcmVh
dGVSZW5kZXJQaXBlbGluZShkZXNjcmlwdG9yKTsKKworICAgIGlmIChwaXBlbGluZSkKKyAgICAg
ICAgdGVzdEZhaWxlZChgV2ViR1BVUmVuZGVyUGlwZWxpbmUgd2FzIGNyZWF0ZWQgd2l0aCBhbiBp
bnZhbGlkICR7dGVzdFN1YmplY3ROYW1lfSFgKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RQYXNz
ZWQoYFdlYkdQVVJlbmRlclBpcGVsaW5lIHdpdGggaW52YWxpZCAke3Rlc3RTdWJqZWN0TmFtZX0g
d2FzIG5vdCBjcmVhdGVkLmApOworfQorCitmdW5jdGlvbiBzZXRVcEJhZFBpcGVsaW5lcygpIHsK
KyAgICBjaGVja0JhZFJlbmRlclBpcGVsaW5lKHt9LCAiV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yIik7CisKKyAgICBsZXQgbm9Nb2R1bGVWZXJ0ZXhEZXNjcmlwdG9yID0geworICAgICAg
ICBzdGFnZTogV2ViR1BVU2hhZGVyU3RhZ2UuVkVSVEVYLAorICAgICAgICBlbnRyeVBvaW50OiAi
dmVydGV4X21haW4iCisgICAgfQorICAgIGxldCBub01vZHVsZVBpcGVsaW5lRGVzY3JpcHRvciA9
IHsKKyAgICAgICAgc3RhZ2VzOiBbbm9Nb2R1bGVWZXJ0ZXhEZXNjcmlwdG9yLCBmcmFnbWVudFN0
YWdlRGVzY3JpcHRvcl0sCisgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAidHJpYW5nbGVMaXN0
IgorICAgIH0KKyAgICBjaGVja0JhZFJlbmRlclBpcGVsaW5lKG5vTW9kdWxlUGlwZWxpbmVEZXNj
cmlwdG9yLCAic2hhZGVyIG1vZHVsZSIpOworCisgICAgLy8gQSAoTWV0YWwpIHJlbmRlcnBpcGVs
aW5lIG11c3QgaGF2ZSBhIHZlcnRleCBmdW5jdGlvbi4KKyAgICBsZXQgbm9WZXJ0ZXhQaXBlbGlu
ZURlc2NyaXB0b3IgPSB7CisgICAgICAgIHN0YWdlczogW2ZyYWdtZW50U3RhZ2VEZXNjcmlwdG9y
XSwKKyAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6ICJ0cmlhbmdsZUxpc3QiCisgICAgfQorICAg
IGNoZWNrQmFkUmVuZGVyUGlwZWxpbmUobm9WZXJ0ZXhQaXBlbGluZURlc2NyaXB0b3IsICJ2ZXJ0
ZXggc2hhZGVyIHN0YWdlIikKKworICAgIGxldCBiYWRFbnRyeVBvaW50RGVzY3JpcHRvciA9IHsg
CisgICAgICAgIG1vZHVsZTogc2hhZGVyTW9kdWxlLCAKKyAgICAgICAgc3RhZ2U6IFdlYkdQVVNo
YWRlclN0YWdlLlZFUlRFWCwgCisgICAgICAgIGVudHJ5UG9pbnQ6ICJWZXJ0ZXhfTWFpbiIgCisg
ICAgfTsKKyAgICBsZXQgYmFkRW50cnlQb2ludFBpcGVsaW5lRGVzY3NyaXB0b3IgPSB7CisgICAg
ICAgIHN0YWdlczogW2JhZEVudHJ5UG9pbnREZXNjcmlwdG9yLCBmcmFnbWVudFN0YWdlRGVzY3Jp
cHRvcl0sCisgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAidHJpYW5nbGVMaXN0IgorICAgIH0K
KyAgICBjaGVja0JhZFJlbmRlclBpcGVsaW5lKGJhZEVudHJ5UG9pbnRQaXBlbGluZURlc2Nzcmlw
dG9yLCAidmVydGV4IHNoYWRlciBlbnRyeSBwb2ludCIpOworCisgICAgbGV0IGJhZFN0YWdlRW51
bURlc2NyaXB0b3IgPSB7IAorICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwgCisgICAgICAg
IHN0YWdlOiBXZWJHUFVTaGFkZXJTdGFnZS5DT01QVVRFLCAKKyAgICAgICAgZW50cnlQb2ludDog
InZlcnRleF9tYWluIiAKKyAgICB9OworICAgIGxldCBiYWRTdGFnZUVudW1QaXBlbGluZURlc2Ny
aXB0b3IgPSB7CisgICAgICAgIHN0YWdlczogW2JhZFN0YWdlRW51bURlc2NyaXB0b3IsIGZyYWdt
ZW50U3RhZ2VEZXNjcmlwdG9yXSwKKyAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6ICJ0cmlhbmds
ZUxpc3QiCisgICAgfQorICAgIGNoZWNrQmFkUmVuZGVyUGlwZWxpbmUoYmFkU3RhZ2VFbnVtUGlw
ZWxpbmVEZXNjcmlwdG9yLCAiV2ViR1BVU2hhZGVyU3RhZ2VFbnVtIik7Cit9CisKK3J1bldlYkdQ
VVRlc3RzKFtzZXRVcFBpcGVsaW5lLCBzZXRVcEJhZFBpcGVsaW5lc10pOworCitzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQK
aW5kZXggZmE5NGIzMzA3NWU4ZDljMDYwZWVlYjFmMTczMDEzMzdhMTEwY2YwNi4uMGY4NGVkYjYz
MWViODhlOTZjNDA1ODRlNzZkOGFkNTBmYjBlNmNjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvc2hhZGVyLW1vZHVsZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsOCBAQAorUEFTUyBbb2Jq
ZWN0IFdlYkdQVV0gaXMgZGVmaW5lZC4KIFBBU1MgQmFkIHNoYWRlciBjb2RlIHNob3VsZCBub3Qg
Y3JlYXRlIGEgbW9kdWxlLgogUEFTUyBJbmNvbXBsZXRlIHNoYWRlciBjb2RlIHNob3VsZCBub3Qg
Y3JlYXRlIGEgbW9kdWxlLgogUEFTUyBTaGFkZXIgbW9kdWxlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5
LgorQWxsIHRlc3RzIGNvbXBsZXRlLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvc2hhZGVyLW1v
ZHVsZXMuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy5odG1sCmluZGV4
IDgyM2JlOTJkOWU0OWE5ZGI0OWM1MzMwMWIzYmFlZDg1NjI3NjA0ODguLjI2N2M4MDI3MGIyY2Vh
ZmI0NWJmNTdiZWRmMDdkNWNkMzNlZGYxZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdw
dS9zaGFkZXItbW9kdWxlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9k
dWxlcy5odG1sCkBAIC0xLDYgKzEsNyBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9ImpzL3NldC11cC13ZWJncHUtY29udGV4dHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBpZD0i
bGlicmFyeV9mdWxsIiB0eXBlPSJ4LXNoYWRlci94LW1ldGFsIj4KICAgICAjaW5jbHVkZSA8bWV0
YWxfc3RkbGliPgogICAgIApAQCAtNzAsMjAgKzcxLDYgQEAKIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKICAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKLWxldCBjYW52YXM7Ci1s
ZXQgY29udGV4dDsKLWxldCBhZGFwdGVyOwotbGV0IGRlZmF1bHREZXZpY2U7Ci0KLWFzeW5jIGZ1
bmN0aW9uIHNldFVwQ29udGV4dHMoKSB7Ci0gICAgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiY2FudmFzIik7Ci0gICAgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJ3ZWJncHUi
KTsKLSAgICBhZGFwdGVyID0gYXdhaXQgd2luZG93LndlYmdwdS5yZXF1ZXN0QWRhcHRlcih7fSk7
Ci0gICAgZGVmYXVsdERldmljZSA9IGFkYXB0ZXIuY3JlYXRlRGV2aWNlKCk7Ci0KLSAgICBzZXRV
cFNoYWRlcnMoKTsKLX0KLQogZnVuY3Rpb24gc2V0VXBTaGFkZXJzKCkgewogICAgIGxldCBzaGFk
ZXJEZXNjcmlwdG9yMCA9IHsKICAgICAgICAgY29kZSA6ICJIZWxsbyBXb3JsZCIKQEAgLTExNSw5
ICsxMDIsOSBAQCBmdW5jdGlvbiBzZXRVcFNoYWRlcnMoKSB7CiAgICAgICAgIHRlc3RGYWlsZWQo
IlNoYWRlciBtb2R1bGUgbm90IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5ISIpOwogfQogCi1zZXRVcENv
bnRleHRzKCk7CitydW5XZWJHUFVUZXN0cyhbc2V0VXBTaGFkZXJzXSk7CiAKLXZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS93ZWJncHUtYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdw
dS93ZWJncHUtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCBlYjFlNTI0MTIwMWM4NDFjNzE4YzAz
ZWNlZjY0ZTY5YTAxOGI4YzgwLi40MGQ1MmVkNmJjMDQ4ZjZlZmI0Mjc5NTE3NjE1YTJlYzcwYmJj
ZThlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1iYXNpY3MtZXhwZWN0ZWQudHh0
CkBAIC0xLDQgKzEsNSBAQAogUEFTUyBbb2JqZWN0IFdlYkdQVV0gaXMgZGVmaW5lZC4KK0FsbCB0
ZXN0cyBjb21wbGV0ZS4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1iYXNpY3MuaHRt
bCBiL0xheW91dFRlc3RzL3dlYmdwdS93ZWJncHUtYmFzaWNzLmh0bWwKaW5kZXggZjdjNzY3MmZk
NWMxMTlhYTI4NWE1MzQ2MTBjZTBlNDEzYzRiN2M1Yi4uNjJmYTU2NWU4Nzc0YTg1NTdhYjZmYzFl
Mzc3YjZhOGM2Yjg5MTVmZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1i
YXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sCkBA
IC0xLDYgKzEsNyBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImpzL3NldC11
cC13ZWJncHUtY29udGV4dHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBpZD0ibGlicmFyeSIgdHlw
ZT0ieC1zaGFkZXIveC1tZXRhbCI+CiAgICAgI2luY2x1ZGUgPG1ldGFsX3N0ZGxpYj4KICAgICAK
QEAgLTQxLDQ2ICs0Miw1MyBAQAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgIHdpbmRvdy50
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAotbGV0IGNhbnZhczsKLWxldCBjb250ZXh0OwotbGV0
IGFkYXB0ZXI7Ci1sZXQgZGVmYXVsdERldmljZTsKLQotYXN5bmMgZnVuY3Rpb24gc2V0VXBDb250
ZXh0cygpIHsKLSAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsK
LSAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIndlYmdwdSIpOwotICAgIGlmICghY29u
dGV4dCkKLSAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFUgY29udGV4
dCEiKTsKLQotICAgIHNob3VsZEJlRGVmaW5lZCh3aW5kb3cud2ViZ3B1KTsKLSAgICAKLSAgICBh
ZGFwdGVyID0gYXdhaXQgd2luZG93LndlYmdwdS5yZXF1ZXN0QWRhcHRlcih7fSk7Ci0gICAgaWYg
KCFhZGFwdGVyKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgZGVmYXVs
dCBXZWJHUFVBZGFwdGVyISIpCitmdW5jdGlvbiBzZXRVcFBpcGVsaW5lKCkgeworICAgIGxldCBz
aGFkZXJEZXNjcmlwdG9yID0geworICAgICAgICBjb2RlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibGlicmFyeSIpLnRleHQKKyAgICB9OworICAgIGxldCBzaGFkZXJNb2R1bGUgPSBkZWZhdWx0
RGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZShzaGFkZXJEZXNjcmlwdG9yKTsKKyAgICBpZiAoIXNo
YWRlck1vZHVsZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQ
VVNoYWRlck1vZHVsZSEiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRlZmF1bHRE
ZXZpY2UgPSBhZGFwdGVyLmNyZWF0ZURldmljZSgpOwotICAgIGlmICghZGVmYXVsdERldmljZSkg
ewotICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVURldmljZSEiKTsK
KyAgICBsZXQgdmVydGV4U3RhZ2VEZXNjcmlwdG9yID0geyAKKyAgICAgICAgbW9kdWxlOiBzaGFk
ZXJNb2R1bGUsIAorICAgICAgICBzdGFnZTogV2ViR1BVU2hhZGVyU3RhZ2UuVkVSVEVYLCAKKyAg
ICAgICAgZW50cnlQb2ludDogInZlcnRleF9tYWluIiAKKyAgICB9OworCisgICAgbGV0IGZyYWdt
ZW50U3RhZ2VEZXNjcmlwdG9yID0geworICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwKKyAg
ICAgICAgc3RhZ2U6IFdlYkdQVVNoYWRlclN0YWdlLkZSQUdNRU5ULAorICAgICAgICBlbnRyeVBv
aW50OiAiZnJhZ21lbnRfbWFpbiIKKyAgICB9OworCisgICAgaWYgKCF2ZXJ0ZXhTdGFnZURlc2Ny
aXB0b3IgfHwgIWZyYWdtZW50U3RhZ2VEZXNjcmlwdG9yKSB7CisgICAgICAgIHRlc3RGYWlsZWQo
IkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IhIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzZXRVcFNoYWRlcnMoKTsKLX0KKyAgICBsZXQgcGlw
ZWxpbmVEZXNjcmlwdG9yID0geworICAgICAgICBzdGFnZXM6IFt2ZXJ0ZXhTdGFnZURlc2NyaXB0
b3IsIGZyYWdtZW50U3RhZ2VEZXNjcmlwdG9yXSwKKyAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6
ICJ0cmlhbmdsZUxpc3QiCisgICAgfTsKIAotZnVuY3Rpb24gc2V0VXBTaGFkZXJzKCkgewotICAg
IGxldCBzaGFkZXJEZXNjcmlwdG9yID0gewotICAgICAgICBjb2RlOiBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibGlicmFyeSIpLnRleHQKKyAgICBpZiAoIXBpcGVsaW5lRGVzY3JpcHRvcikgewor
ICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciEiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH07Ci0gICAgbGV0IHNoYWRlck1v
ZHVsZSA9IGRlZmF1bHREZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHNoYWRlckRlc2NyaXB0b3Ip
OwotICAgIGlmICghc2hhZGVyTW9kdWxlKQotICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3Qg
Y3JlYXRlIFdlYkdQVVNoYWRlck1vZHVsZSEiKTsKKworICAgIGxldCByZW5kZXJQaXBlbGluZSA9
IGRlZmF1bHREZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocGlwZWxpbmVEZXNjcmlwdG9yKTsK
KyAgICBpZiAoIXJlbmRlclBpcGVsaW5lKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5v
dCBjcmVhdGUgV2ViR1BVUmVuZGVyUGlwZWxpbmUhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiB9CiAKLXNldFVwQ29udGV4dHMoKTsKK3J1bldlYkdQVVRlc3RzKFtzZXRVcFBpcGVsaW5lXSk7
CiAKLXZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354005</attachid>
            <date>2018-11-06 14:26:18 -0800</date>
            <delta_ts>2018-11-06 15:32:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191291-20181106142617.patch</filename>
            <type>text/plain</type>
            <size>88265</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3ODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM0NWVjODFlOTM1MDQx
ZGZkMmM5MTU2OThlMWM0NjIwNzNlOWZmMy4uNzNlMDJlZmI1YzU0OTc2ZWNiODlkM2E2ZjhmMjQ5
MzJlZDJkYzllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE4LTExLTA2ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRXhwZXJp
bWVudGFsIHByb3RvdHlwZSBmb3IgTVNMIHNoYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTI5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHdlYmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0
bWwKKyAgICAgICAgQWxzbyB1cGRhdGUgdGVzdCB3ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sIHRv
IGNyZWF0ZSBhIFdlYkdQVVJlbmRlclBpcGVsaW5lLgorCisgICAgICAgIEJlZ2luIGltcGxlbWVu
dGF0aW9uIG9mIFdlYkdQVVJlbmRlclBpcGVsaW5lIGFuZCBXZWJHUFVTd2FwQ2hhaW4uIEEgV2Vi
R1BVUmVuZGVyUGlwZWxpbmUgaXMgYmFja2VkIGJ5IGEKKyAgICAgICAgR1BVUmVuZGVyUGlwZWxp
bmUsIGNyZWF0ZWQgbGF6aWx5IHVzaW5nIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBwYXNzZWQtaW4g
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLgorICAgICAgICBPbiBNZXRhbC1zdXBwb3J0
ZWQgc3lzdGVtcywgR1BVUmVuZGVyUGlwZWxpbmUgaXMgYW4gaW50ZXJmYWNlIHRvIGEgTVRMUmVu
ZGVyUGlwZWxpbmVTdGF0ZS4KKyAgICAgICAgVGhlIE1UTFJlbmRlclBpcGVsaW5lU3RhdGUgaXMg
Y3JlYXRlZCB3aXRoIHRoZSBXZWJHUFVEZXZpY2UgY3VycmVudGx5IGNvbmZpZ3VyZWQgb24gdGhl
IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQ
VURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBp
cGVsaW5lIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6R1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6cHJpbWl0aXZlVG9wb2xvZ3kpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRl
clBpcGVsaW5lIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6YWRhcHRlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmRldmljZSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5pZGw6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5k
ZXJQaXBlbGluZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVuZGVyaW5n
Q29udGV4dDo6V2ViR1BVUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVNoYWRlck1vZHVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxl
Ojptb2R1bGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0
YWdlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVTd2FwQ2hhaW46OmNvbmZpZ3VyZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVTd2FwQ2hhaW46OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU3dhcENo
YWluOjptYXJrTGF5ZXJDb21wb3NpdGVkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVTd2FwQ2hhaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVN3YXBDaGFpbjo6V2ViR1BV
U3dhcENoYWluKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRs
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6cGxhdGZvcm1SZW5kZXJQaXBlbGlu
ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxp
bmVNZXRhbC5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRGdW5jdGlvbnNGb3JQaXBl
bGluZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGlwZWxpbmU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6R1BVUmVuZGVyUGlw
ZWxpbmUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkdQVVN3YXBDaGFpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQ
VVN3YXBDaGFpbjo6R1BVU3dhcENoYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVN3YXBDaGFp
bjo6c2V0RGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVN3YXBDaGFpbjo6cmVzaGFwZSk6
CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OnByZXNlbnQpOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNv
cmVCdWlsdGluTmFtZXMuaDoKKwogMjAxOC0xMS0wMSAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEV4cGVyaW1lbnRhbCBwcm90b3R5cGUgZm9y
IE1TTCBzaGFkZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA2ZTI4MzdhMWU5ZDBhMzUxNjNjN2ZjYjNhMGRl
YzZhOGM3ODUxZGFhLi5kODM1N2YyYWZmN2JmMmY1ZGVlNzJjODY5ODBjNTkxMjAwNzU0M2NmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKQEAgLTEzODIsNiArMTM4Miw2IEBACiAjZGVmaW5lIFVTRV9JT1NVUkZBQ0Vf
Q0FOVkFTX0JBQ0tJTkdfU1RPUkUgMQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYg
IVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQotI2RlZmluZSBFTkFCTEVfV0VCR1BVIDEK
KyNpZiAhUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQor
I2RlZmluZSBFTkFCTEVfV0VCR1BVIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5
YWViMmRkY2NkOWIwYTg2MjI2NzUzMzU3NjY2NjdjNWI3YWZkNjZjLi4yMTE0MTA5NTg3N2M5NThl
OWU5NWEzOTEwNTAyNDY5MDUwNjEwZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDUzLDkg
KzQ1MywxNCBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUFkYXB0ZXIuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlckRl
c2NyaXB0b3IuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAorICAgIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsCisgICAgTW9kdWxl
cy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsCisgICAgTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCisgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlcmluZ0NvbnRleHQuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxl
LmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRs
CisgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRsCiAgICAgTW9kdWxlcy93
ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbAogCiAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3Nl
RXZlbnQuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkY2M3NzJjNjY2Yjdm
OWEwMGQ4ZTcwZGRhYjhjODhkYWM2YzQ0MDMxLi5mOTU5MDkwMzA4YzI1NTEyMWM0ZmZlOTUzNDc0
NjAxMDI0NjYyNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTM3Myw5ICsz
NzMsMTQgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQWRhcHRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlckRlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVURldmljZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5p
ZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuY3BwCmluZGV4IGU4NTExNDQwNThkYjM3MmYw
YzRkMTM2NWMwMmY1ODZiYTk3MTVlNjAuLjA0Yzk2N2YyYmRlNDhmYWFmNTU4Y2Y3OTQ3NDVkN2U1
ODk0ODlmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURl
dmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmNw
cApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorI2luY2x1ZGUgIkdQ
VVJlbmRlclBpcGVsaW5lLmgiCisjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmgiCiAjaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlLmgiCiAjaW5jbHVkZSAiR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5oIgogCkBAIC0zOCw2ICs0MCwxMSBAQCBSZWZQdHI8R1BVU2hhZGVyTW9k
dWxlPiBHUFVEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yJgogICAgIHJldHVybiBHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShk
ZXNjcmlwdG9yKSk7CiB9CiAKK1JlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gR1BVRGV2aWNlOjpj
cmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBkZXNjcmlw
dG9yKSBjb25zdAoreworICAgIHJldHVybiBHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKCp0aGlz
LCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
RGV2aWNlLmgKaW5kZXggYzE5ZTFlY2ZmNWI3ZjhkMDNkNzVmM2M4NzE5MWNkODc5MTg3YjFhYi4u
ODhiMGNkMmJlZGQ1YThiZDdlZTAxYzc4ODlkNjg3Zjc3MzUwZDY0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmgKQEAgLTQ2LDE0ICs0NiwxNyBAQCB1c2luZyBQ
bGF0Zm9ybURldmljZVNtYXJ0UHRyID0gUmVmUHRyPHZvaWQ+OwogI2VuZGlmCiAKIGNsYXNzIEdQ
VVNoYWRlck1vZHVsZTsKK2NsYXNzIEdQVVJlbmRlclBpcGVsaW5lOwogCiBzdHJ1Y3QgR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvcjsKK3N0cnVjdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7
CiAKIGNsYXNzIEdQVURldmljZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVURldmljZT4gewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWZQdHI8R1BVRGV2aWNlPiBjcmVhdGUoKTsKIAogICAgIFJlZlB0
cjxHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yJiYpIGNvbnN0OworICAgIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVu
ZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYpIGNvbnN0OwogCiAgICAg
UGxhdGZvcm1EZXZpY2UgKnBsYXRmb3JtRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9y
bURldmljZS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmUyNzU1Yjll
MjY2YTJlOGIzOGZhNWQ0YjA4ZmQ3ZTE0ZTI4MTI2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaApAQCAt
MCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisjaW5jbHVkZSAiR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKKworI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZSB7CisgICAgVmVjdG9yPEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlw
dG9yPiBzdGFnZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBjZGQ0OGQwYmIx
NGM5M2RmZDI5Y2EyMjA5Y2QwZTc0Y2FlOWE3NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgKQEAgLTAs
MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQ
VSkKKworI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdQVVBpcGVsaW5l
U3RhZ2VEZXNjcmlwdG9yIHsKKyAgICBjb25zdCBHUFVTaGFkZXJNb2R1bGUmIG1vZHVsZTsKKyAg
ICB1bnNpZ25lZCBsb25nIHN0YWdlOworICAgIFN0cmluZyBlbnRyeVBvaW50OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAzNWVhNjIyMTU4ZDM0NjhlMzdmZDFkNTZkODMyMzVj
ZDNhNTRjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlLmgiCisjaW5jbHVkZSAiR1BVUGlwZWxpbmVTdGFnZURlc2Ny
aXB0b3IuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDogR1BVUGlwZWxpbmVEZXNj
cmlwdG9yQmFzZSB7CisgICAgZW51bSB7CisgICAgICAgIFBvaW50TGlzdCwKKyAgICAgICAgTGlu
ZUxpc3QsCisgICAgICAgIExpbmVTdHJpcCwKKyAgICAgICAgVHJpYW5nbGVMaXN0LAorICAgICAg
ICBUcmlhbmdsZVN0cmlwCisgICAgfTsKKworICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cihWZWN0b3I8R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I+JiYgc3RhZ2VzLCBpbnQgdG9wb2xv
Z3kpCisgICAgICAgIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7IFdURk1vdmUoc3RhZ2Vz
KSB9CisgICAgICAgICwgcHJpbWl0aXZlVG9wb2xvZ3kodG9wb2xvZ3kpCisgICAgeworICAgIH0K
KworICAgIGludCBwcmltaXRpdmVUb3BvbG9neTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAppbmRleCAxMGI5YmYzZGY1ODFhOTVhZTM3NmI2MmQ4
YWRkMWEyYWVjYTlhNzc0Li5jYzA0ZGZjZmJjNWIyYjZlZTMxMzc1OGIxMGVkYTQwOTU5ZTZkZTVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAK
QEAgLTI4LDkgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCi0jaW5jbHVkZSAiV2Vi
R1BVQWRhcHRlci5oIgotCisjaW5jbHVkZSAiR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIK
KyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
IldlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVy
UGlwZWxpbmUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIK
ICNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKICNpbmNsdWRlICJXZWJHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmgiCiAKQEAgLTU3LDYgKzYxLDIwIEBAIFJlZlB0cjxXZWJHUFVTaGFk
ZXJNb2R1bGU+IFdlYkdQVURldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1v
ZHVsZURlCiAgICAgcmV0dXJuIFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKG1fZGV2aWNlLT5j
cmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7IGRlc2NyaXB0b3Iu
Y29kZSB9KSk7CiB9CiAKK1JlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVRGV2aWNl
OjpjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBk
ZXNjcmlwdG9yKSBjb25zdAoreworICAgIFZlY3RvcjxHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRv
cj4gc3RhZ2VzOworICAgIGZvciAoY29uc3QgYXV0byYgc3RhZ2VEZXNjcmlwdG9yIDogZGVzY3Jp
cHRvci5zdGFnZXMpIHsKKyAgICAgICAgaWYgKCFzdGFnZURlc2NyaXB0b3IubW9kdWxlKSB7Cisg
ICAgICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGlu
ZSgpOiBXZWJHUFVTaGFkZXJNb2R1bGUgbm90IGZvdW5kISIpOworICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgc3RhZ2VzLmFwcGVuZCh7IHN0YWdlRGVzY3Jp
cHRvci5tb2R1bGUtPm1vZHVsZSgpLCBzdGFnZURlc2NyaXB0b3Iuc3RhZ2UsIHN0YWdlRGVzY3Jp
cHRvci5lbnRyeVBvaW50IH0pOworICAgIH0KKworICAgIHJldHVybiBXZWJHUFVSZW5kZXJQaXBl
bGluZTo6Y3JlYXRlKG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKHN0YWdlcyksIHN0YXRpY19jYXN0PGludD4oZGVzY3Jp
cHRvci5wcmltaXRpdmVUb3BvbG9neSkgfSkpOworfQorCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2
aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAppbmRl
eCA0ZDViMGJhYzE3NTk2MWE4ZGVlN2U5MjE4NjZiZmJhNzBmYTEzNzMxLi43YzI3ZTBiOTcyMzJk
MjhhNjA1YTA0ZWJlMzFiNjY4OTQ4ZjBiZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVEZXZpY2UuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJH
UFUpCiAKICNpbmNsdWRlICJHUFVEZXZpY2UuaCIKKyNpbmNsdWRlICJXZWJHUFVBZGFwdGVyLmgi
CiAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAg
LTM3LDE3ICszOCwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiBjbGFzcyBXZWJHUFVBZGFwdGVyOworY2xhc3MgV2ViR1BVUmVuZGVyUGlw
ZWxpbmU7CiBjbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGU7CiAKK3N0cnVjdCBXZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I7CiBzdHJ1Y3QgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsK
IAogY2xhc3MgV2ViR1BVRGV2aWNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVRGV2aWNlPiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxXZWJHUFVEZXZpY2U+IGNyZWF0ZShSZWY8V2Vi
R1BVQWRhcHRlcj4mJik7CiAKLSAgICBXZWJHUFVBZGFwdGVyJiBhZGFwdGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9hZGFwdGVyLmdldCgpOyB9CisgICAgY29uc3QgV2ViR1BVQWRhcHRlciYgYWRhcHRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYWRhcHRlci5nZXQoKTsgfQorICAgIGNvbnN0IEdQVURldmlj
ZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gKm1fZGV2aWNlOyB9CiAKICAgICBSZWZQdHI8V2Vi
R1BVU2hhZGVyTW9kdWxlPiBjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvciYmKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0
ZVJlbmRlclBpcGVsaW5lKFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmKSBjb25zdDsK
IAogcHJpdmF0ZToKICAgICBXZWJHUFVEZXZpY2UoUmVmPFdlYkdQVUFkYXB0ZXI+JiYsIFJlZlB0
cjxHUFVEZXZpY2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5pZGwKaW5kZXggZDFhOWYxYTJjOWMzM2Q1NzMwMmFkMjk3NDg2MTg1Y2I2YmUyN2Nl
Yy4uNjAzZTM3NmNiMzhlMTA0NWVkODkxYzAyZDMxZjY5NTkxYzgzYzcyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCkBAIC0zNCw2ICszNCw3
IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVUFkYXB0ZXIgYWRhcHRlcjsKIAogICAg
IFdlYkdQVVNoYWRlck1vZHVsZSBjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKKyAgICBXZWJHUFVSZW5kZXJQaXBlbGluZSBjcmVhdGVS
ZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7
CiAKIC8qIFRvIEJlIEltcGxlbWVudGVkOgogICAgIFdlYkdQVUJ1ZmZlciBjcmVhdGVCdWZmZXIo
V2ViR1BVQnVmZmVyRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKQEAgLTQ5LDggKzUwLDYgQEAKICAg
ICBXZWJHUFVJbnB1dFN0YXRlIGNyZWF0ZUlucHV0U3RhdGUoV2ViR1BVSW5wdXRTdGF0ZURlc2Ny
aXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BVQXR0YWNobWVudFN0YXRlIGNyZWF0ZUF0dGFj
aG1lbnRTdGF0ZShXZWJHUFVBdHRhY2htZW50U3RhdGVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwog
ICAgIFdlYkdQVUNvbXB1dGVQaXBlbGluZSBjcmVhdGVDb21wdXRlUGlwZWxpbmUoV2ViR1BVQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVSZW5kZXJQaXBl
bGluZSBjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Ig
ZGVzY3JpcHRvcik7Ci0KICAgICBXZWJHUFVDb21tYW5kQnVmZmVyIGNyZWF0ZUNvbW1hbmRCdWZm
ZXIoV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BV
RmVuY2UgY3JlYXRlRmVuY2UoV2ViR1BVRmVuY2VEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZURlc2NyaXB0b3JCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzEyMWE5YmE1NjgzNzQwMTQzY2VjMzA1
OTA4MmJjODJjYTU0MTU5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaApAQCAtMCwwICsxLDQxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFdlYkdQVVBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UgeworICAgIFZlY3RvcjxXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcj4g
c3RhZ2VzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGlu
ZURlc2NyaXB0b3JCYXNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZjdhNzY2MTdhYjE5NTlm
MjA3MTg4NjliNTk3ZTdmNWMyZTQ5MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbApAQCAtMCww
ICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2Vi
L2Jsb2IvbWFzdGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCisKK1sKKyAgICBDb25kaXRpb25hbD1X
RUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZGljdGlvbmFyeSBXZWJHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlIHsKKyAgICAvLyBXZWJHUFVQaXBlbGluZUxheW91dCBsYXlv
dXQ7CisgICAgc2VxdWVuY2U8V2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I+IHN0YWdlczsK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZVN0YWdlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2YzYWUwOTU2NTAwZDRm
N2IzN2M1ZTUwN2QwODdhZGYwYWRhMTY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaApAQCAtMCww
ICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BV
KQorCisjaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBXZWJHUFVTaGFk
ZXJTdGFnZUVudW0gPSB1bnNpZ25lZCBsb25nOworCitzdHJ1Y3QgV2ViR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IgeworICAgIGNvbnN0IFdlYkdQVVNoYWRlck1vZHVsZSogbW9kdWxlID0gbnVs
bHB0cjsKKyAgICBXZWJHUFVTaGFkZXJTdGFnZUVudW0gc3RhZ2U7CisgICAgU3RyaW5nIGVudHJ5
UG9pbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNmIwODgx
N2Q5MmRhN2JjY2QwMjhhYzdmZTNlY2MxMTIyMzU5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5p
ZGwKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1
d2ViL2dwdXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAorCit0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgV2ViR1BVU2hhZGVyU3RhZ2VFbnVtOworCitbCisgICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGRpY3Rpb25hcnkgV2ViR1BV
UGlwZWxpbmVTdGFnZURlc2NyaXB0b3IgeworICAgIFdlYkdQVVNoYWRlck1vZHVsZSBtb2R1bGU7
CisgICAgV2ViR1BVU2hhZGVyU3RhZ2VFbnVtIHN0YWdlOworICAgIERPTVN0cmluZyBlbnRyeVBv
aW50OworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjNjMDIwMDQyODJkN2JlYTIzMmZhZWZk
ZDc1Njg1N2Q1NGZkYTRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisg
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
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGlu
ZT4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+
JiYgcGlwZWxpbmUpCit7CisgICAgaWYgKCFwaXBlbGluZSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKFdURk1v
dmUocGlwZWxpbmUpKSk7Cit9CisKK1dlYkdQVVJlbmRlclBpcGVsaW5lOjpXZWJHUFVSZW5kZXJQ
aXBlbGluZShSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCisgICAgOiBtX3Jl
bmRlclBpcGVsaW5lKHBpcGVsaW5lKQoreworICAgIFVOVVNFRF9QQVJBTShtX3JlbmRlclBpcGVs
aW5lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5k
ZXJQaXBlbGluZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiNTEwNjJjZGQyNjE5OGMwZmEwZTk3Zjg2OTJiZjc2
YzZmYWExMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVSZW5kZXJQ
aXBlbGluZS5oIgorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR1BVUmVuZGVyUGlw
ZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVSZW5kZXJQaXBlbGluZT4geworcHVibGlj
OgorICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShSZWZQdHI8
R1BVUmVuZGVyUGlwZWxpbmU+JiYpOworCitwcml2YXRlOgorICAgIFdlYkdQVVJlbmRlclBpcGVs
aW5lKFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4mJik7CisKKyAgICBSZWZQdHI8R1BVUmVuZGVy
UGlwZWxpbmU+IG1fcmVuZGVyUGlwZWxpbmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0NmQw
MWEyOTVlMWFhZGRhMTc2ZDk1NWFkMjllZTQ5MGI0MTAzZDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwKQEAg
LTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dw
dXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAorCitbCisgICAgQ29uZGl0aW9u
YWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVLAorICAgIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUKK10gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBpcGVsaW5lIHsKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2ZWVjNWQ4YjZmZWUyOTVlNWY0
MDExMDlkYTFiYWQ4MWUyZThkNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApAQCAtMCwwICsx
LDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0cnVjdCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBXZWJH
UFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKKyAgICBlbnVtIGNsYXNzIFByaW1pdGl2ZVRvcG9s
b2d5IHsKKyAgICAgICAgUG9pbnRMaXN0LAorICAgICAgICBMaW5lTGlzdCwKKyAgICAgICAgTGlu
ZVN0cmlwLAorICAgICAgICBUcmlhbmdsZUxpc3QsCisgICAgICAgIFRyaWFuZ2xlU3RyaXAKKyAg
ICB9OworCisgICAgUHJpbWl0aXZlVG9wb2xvZ3kgcHJpbWl0aXZlVG9wb2xvZ3k7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU3OGE3NjZkM2JhOTAwZTIwODgy
YTJhN2VmZGIyZjdmNWMyMzc5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwKQEAgLTAsMCAr
MSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9i
bG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAorCitlbnVtIFdlYkdQVVByaW1pdGl2ZVRv
cG9sb2d5IHsKKyAgICAicG9pbnRMaXN0IiwKKyAgICAibGluZUxpc3QiLAorICAgICJsaW5lU3Ry
aXAiLAorICAgICJ0cmlhbmdsZUxpc3QiLAorICAgICJ0cmlhbmdsZVN0cmlwIgorfTsKKworZGlj
dGlvbmFyeSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBXZWJHUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlIHsKKyAgICBXZWJHUFVQcmltaXRpdmVUb3BvbG9neSBwcmltaXRpdmVUb3Bv
bG9neTsKKyAgICAvKiBUbyBCZSBJbXBsZW1lbnRlZDoKKyAgICBzZXF1ZW5jZTxXZWJHUFVCbGVu
ZFN0YXRlPiBibGVuZFN0YXRlczsKKyAgICBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSBkZXB0aFN0
ZW5jaWxTdGF0ZTsKKyAgICBXZWJHUFVJbnB1dFN0YXRlIGlucHV0U3RhdGU7CisgICAgV2ViR1BV
QXR0YWNobWVudHNTdGF0ZSBhdHRhY2htZW50c1N0YXRlOyAqLworICAgIC8vIFRPRE8gb3RoZXIg
cHJvcGVydGllcworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMGJkMjc2NDNhZWIxZTVlZWQxNjI0
NjQ5MDYxOWZkNjExY2RlNGM3Yy4uZWMzZTA3NmQ1YjJkMDM0MTljMTg3MWQwNjY0MWU0M2ZlOWVl
YjI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMyLDEzICszMiwxOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJHUFVSZW5kZXJpbmdDb250ZXh0PiBXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoQ2FudmFzQmFzZSYgY2FudmFzKQogewotICAgIGF1dG8g
Y29udGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJHUFVSZW5kZXJpbmdDb250ZXh0PihuZXcgV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dChjYW52YXMpKTsKKyAgICBhdXRvIHN3YXBDaGFpbiA9IEdQVVN3
YXBDaGFpbjo6Y3JlYXRlKCk7CisKKyAgICBpZiAoIXN3YXBDaGFpbikKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBhdXRvIGNvbnRleHQgPSBzdGQ6OnVuaXF1ZV9wdHI8V2ViR1BVUmVu
ZGVyaW5nQ29udGV4dD4obmV3IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQoY2FudmFzLCBXVEZNb3Zl
KHN3YXBDaGFpbikpKTsKICAgICBjb250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1
cm4gY29udGV4dDsKIH0KIAotV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6V2ViR1BVUmVuZGVyaW5n
Q29udGV4dChDYW52YXNCYXNlJiBjYW52YXMpCi0gICAgOiBXZWJHUFVTd2FwQ2hhaW4oY2FudmFz
KQorV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6V2ViR1BVUmVuZGVyaW5nQ29udGV4dChDYW52YXNC
YXNlJiBjYW52YXMsIFJlZlB0cjxHUFVTd2FwQ2hhaW4+JiYgc3dhcENoYWluKQorICAgIDogV2Vi
R1BVU3dhcENoYWluKGNhbnZhcywgV1RGTW92ZShzd2FwQ2hhaW4pKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0
LmgKaW5kZXggNDlhN2RhZjEzODZhMzE4NjY5YWI5MzJjYWEzZmIyMmI1ZjkxZWU2Ny4uNmYxYTdk
OTdkODM0ZjNiZjM4ZTBkYjA2YmIzOWMwMTEzYTdjMjJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaApAQCAtMzYs
NyArMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFzZSYpOwogCiBwcml2YXRlOgotICAgIFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYpOworICAgIFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQoQ2FudmFzQmFzZSYsIFJlZlB0cjxHUFVTd2FwQ2hhaW4+JiYpOwogICAgIC8vIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQKICAgICBib29sIGlzV2ViR1BVKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIC8vIEFjdGl2ZURPTU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaAppbmRleCA5Nzk4MjkwOTVlNDlmZGNi
YTVmMDkwNTliY2IyMTNhMWJkMjAxMjIyLi41MDYwZDU2YThjNTk3MDliYTEwOWFmYjhlZDkyNzcx
MTgyYWQ1ZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVTaGFkZXJNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVTaGFkZXJNb2R1bGUuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJHUFUpCiAK
ICNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9B
cnJheUJ1ZmZlci5oPgorCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAKQEAgLTM4LDYgKzM4LDggQEAgY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxlIDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU2hhZGVyTW9kdWxlPiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZShSZWZQdHI8R1BVU2hhZGVyTW9k
dWxlPiYmKTsKIAorICAgIGNvbnN0IEdQVVNoYWRlck1vZHVsZSYgbW9kdWxlKCkgY29uc3QgeyBy
ZXR1cm4gKm1fbW9kdWxlOyB9CisKIHByaXZhdGU6CiAgICAgV2ViR1BVU2hhZGVyTW9kdWxlKFJl
ZlB0cjxHUFVTaGFkZXJNb2R1bGU+JiYpOwogCkBAIC00NywzICs0OSw0IEBAIHByaXZhdGU6CiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MTdkNDJmNTk2OGE5ODc4N2E5Zjk2OTk4NzdlMDc1ZjUwNDJiYzI2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3Rh
Z2UuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBXZWJHUFVTaGFkZXJTdGFnZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkdQVVNoYWRlclN0YWdlPiB7CitwdWJsaWM6CisgICAgZW51bSB7CisgICAgICAgIFZFUlRF
WCA9IDAsCisgICAgICAgIEZSQUdNRU5UID0gMSwKKyAgICAgICAgQ09NUFVURSA9IDIKKyAgICB9
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
clN0YWdlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0
YWdlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jYTM3YTM3NDEyZDQ5MzAxYmJmNTc4MTdlODU2Yzk2ZDA2MzRj
ZTZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU2hhZGVyU3RhZ2UuaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8gaHR0cHM6
Ly9naXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWduL3NrZXRjaC53ZWJp
ZGwKKwordHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKKworWworICAgIENvbmRpdGlvbmFsPVdF
QkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVSwKKyAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlCitdIGludGVyZmFjZSBXZWJHUFVTaGFkZXJTdGFnZSB7CisgICAgY29uc3QgdTMy
IFZFUlRFWCA9IDA7CisgICAgY29uc3QgdTMyIEZSQUdNRU5UID0gMTsKKyAgICBjb25zdCB1MzIg
Q09NUFVURSA9IDI7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVU3dhcENoYWluLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVN3YXBDaGFpbi5jcHAKaW5kZXggMDM4MmFlN2JkZmM3NWI1YTUyMDhlM2I1ZTcwNWFmZWVh
YjlmOGU0OS4uOGFhNmE2ODJiZTQ3OTk0ZWRiODhlNjFlOGZiMzI0ZGJmMDRjMTBkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwCkBA
IC0yOCwxMiArMjgsMTcgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNpbmNsdWRlICJXZWJH
UFVEZXZpY2UuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXZWJHUFVTd2FwQ2hhaW46On5X
ZWJHUFVTd2FwQ2hhaW4oKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViR1BVU3dhcENoYWluOjpjb25m
aWd1cmUoY29uc3QgRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3ZvaWQgV2ViR1BVU3dhcENoYWlu
Ojpjb25maWd1cmUoRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCiB7CisgICAgaWYgKGRlc2NyaXB0
b3IuZGV2aWNlKQorICAgICAgICBtX3N3YXBDaGFpbi0+c2V0RGV2aWNlKGRlc2NyaXB0b3IuZGV2
aWNlLT5kZXZpY2UoKSk7CisKICAgICByZXNoYXBlKGRlc2NyaXB0b3Iud2lkdGgsIGRlc2NyaXB0
b3IuaGVpZ2h0KTsKIH0KIApAQCAtNDQsMTMgKzQ5LDEyIEBAIHZvaWQgV2ViR1BVU3dhcENoYWlu
OjpwcmVzZW50KCkKIAogdm9pZCBXZWJHUFVTd2FwQ2hhaW46OnJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KQogewotICAgIG1fd2lkdGggPSB3aWR0aDsKLSAgICBtX2hlaWdodCA9IGhlaWdo
dDsKKyAgICBtX3N3YXBDaGFpbi0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCBX
ZWJHUFVTd2FwQ2hhaW46Om1hcmtMYXllckNvbXBvc2l0ZWQoKQogewotICAgIC8vIEZJWE1FOiBV
bmltcGxlbWVudGVkIHN0dWIuCisgICAgbV9zd2FwQ2hhaW4tPnByZXNlbnQoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTd2FwQ2hhaW4uaAppbmRleCBmNTZkMzYxZjg1ZDRiYmIwNGI3MDYwOTMwMDRjODk0ZjJm
MDMzODQ3Li4wNjc5NTA2MjE1YmJmMmU4MThiNTMxZWYxNmRjNGJlMjI4MmYwNDM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaApAQCAtMjgs
MjUgKzI4LDI5IEBACiAjaWYgRU5BQkxFKFdFQkdQVSkKIAogI2luY2x1ZGUgIkdQVUJhc2VkQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkdQVVN3YXBDaGFpbi5oIgorI2luY2x1
ZGUgIldlYkdQVURldmljZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQ
VVN3YXBDaGFpbiA6IHB1YmxpYyBHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQgewogcHVi
bGljOgogICAgIHN0cnVjdCBEZXNjcmlwdG9yIHsKKyAgICAgICAgY29uc3QgV2ViR1BVRGV2aWNl
KiBkZXZpY2UgPSBudWxscHRyOwogICAgICAgICAvLyBGSVhNRTogTW9yZSB0ZXh0dXJlIHByb3Bl
cnRpZXMuCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgd2lkdGg7CiAgICAgICAgIHVuc2lnbmVkIGxv
bmcgaGVpZ2h0OwogICAgIH07CiAKICAgICB2aXJ0dWFsIH5XZWJHUFVTd2FwQ2hhaW4oKSA9IDA7
Ci0gICAgdm9pZCBjb25maWd1cmUoY29uc3QgRGVzY3JpcHRvciYpOworICAgIHZvaWQgY29uZmln
dXJlKERlc2NyaXB0b3ImJik7CiAgICAgLy8gRklYTUU6IFdlYkdQVVRleHR1cmUgZ2V0TmV4dFRl
eHR1cmUoKTsKICAgICB2b2lkIHByZXNlbnQoKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdQVVN3
YXBDaGFpbihDYW52YXNCYXNlJiBjYW52YXMpCisgICAgV2ViR1BVU3dhcENoYWluKENhbnZhc0Jh
c2UmIGNhbnZhcywgUmVmUHRyPEdQVVN3YXBDaGFpbj4mJiBzd2FwQ2hhaW4pCiAgICAgICAgIDog
R1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0KGNhbnZhcykKKyAgICAgICAgLCBtX3N3YXBD
aGFpbihXVEZNb3ZlKHN3YXBDaGFpbikpCiAgICAgewogICAgIH0KIApAQCAtNjMsOCArNjcsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlIHsgfQogICAgIGJvb2wgY2FuU3Vz
cGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICB1bnNpZ25lZCBsb25nIG1fd2lkdGg7Ci0gICAgdW5zaWduZWQgbG9uZyBtX2hl
aWdodDsKKyAgICBSZWZQdHI8R1BVU3dhcENoYWluPiBtX3N3YXBDaGFpbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTd2FwQ2hhaW4uaWRsCmluZGV4IDk5Y2E5MGU0M2NhNjIzNjhlMWY5YWFlYmExMzQzZmY0
M2UyYWNmMjAuLmVlZjg1ZWJjNWJkMjc0MDBhNzY1ODM5Njg4ZDVhOWNjYjkwMTdiZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbApA
QCAtMzYsNyArMzYsMTEgQEAKIAogdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKIAotZGljdGlv
bmFyeSBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIHsKK1sKKyAgICBDb25kaXRpb25hbD1XRUJH
UFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZGljdGlvbmFyeSBXZWJHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yIHsKKyAgICBXZWJHUFVEZXZpY2UgZGV2aWNlOyAvLyBGSVhNRTogUHJv
cG9zZSB0aGlzIGFkZGl0aW9uIHRvIElETC4KICAgICAvLyBXZWJHUFVUZXh0dXJlVXNhZ2VGbGFn
cyB1c2FnZTsKICAgICAvLyBXZWJHUFVUZXh0dXJlRm9ybWF0RW51bSBmb3JtYXQ7CiAgICAgdTMy
IHdpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2Ev
R1BVUmVuZGVyUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29h
L0dQVVJlbmRlclBpcGVsaW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc5MmE5MzE0MDhmMjY1YzlkYjRiYjRi
YTBiNGEyNTAxOTJhOWY3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lLmgKQEAgLTAsMCArMSw2NiBAQAorLyoK
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
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKworI2lmIFVTRShNRVRBTCkKK09CSkNfUFJPVE9DT0woTVRMUmVuZGVy
UGlwZWxpbmVTdGF0ZSk7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBH
UFVEZXZpY2U7CisKK3N0cnVjdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7CisKKyNpZiBV
U0UoTUVUQUwpCit1c2luZyBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lID0gTVRMUmVuZGVyUGlwZWxp
bmVTdGF0ZTsKK3VzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciA9IFJldGFpblB0
cjxNVExSZW5kZXJQaXBlbGluZVN0YXRlPjsKKyNlbHNlCit1c2luZyBQbGF0Zm9ybVJlbmRlclBp
cGVsaW5lID0gdm9pZDsKK3VzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciA9IFJl
ZlB0cjx2b2lkPjsKKyNlbmRpZgorCitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPEdQVVJlbmRlclBpcGVsaW5lPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0
cjxHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlKGNvbnN0IEdQVURldmljZSYsIEdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciYmKTsKKworICAgIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmUgKnBsYXRm
b3JtUmVuZGVyUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtUmVuZGVyUGlwZWxp
bmUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBHUFVSZW5kZXJQaXBlbGluZShQbGF0Zm9ybVJl
bmRlclBpcGVsaW5lU21hcnRQdHImJik7CisKKyAgICBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21h
cnRQdHIgbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM2NGQyZjFhN2RlOTgwYzk5YTExMzNjNzJhYTdiZGJjYWVlMDI5MjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVS
ZW5kZXJQaXBlbGluZU1ldGFsLm1tCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVSZW5kZXJQaXBlbGluZS5oIgorCisjaWYgRU5B
QkxFKFdFQkdQVSkKKworI2ltcG9ydCAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCisj
aW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJXZWJHUFVTaGFkZXJTdGFnZS5oIgorCisjaW1w
b3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgYm9vbCBzZXRGdW5jdGlvbnNGb3JQaXBl
bGluZURlc2NyaXB0b3IoY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lLCBNVExSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IgKm10bERlc2NyaXB0b3IsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciYmIGRlc2NyaXB0b3IpCit7CisjaWYgTE9HX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFN
KGZ1bmN0aW9uTmFtZSk7CisjZW5kaWYKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHN0YWdlRGVzY3Jp
cHRvciA6IGRlc2NyaXB0b3Iuc3RhZ2VzKSB7CisgICAgICAgIGF1dG8gbXRsTGlicmFyeSA9IHJl
dGFpblB0cihzdGFnZURlc2NyaXB0b3IubW9kdWxlLnBsYXRmb3JtU2hhZGVyTW9kdWxlKCkpOwor
CisgICAgICAgIGlmICghbXRsTGlicmFyeSkgeworICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVz
OiBNVExMaWJyYXJ5IGRvZXMgbm90IGV4aXN0ISIsIGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGZ1bmN0aW9uID0gYWRv
cHROUyhbbXRsTGlicmFyeSBuZXdGdW5jdGlvbldpdGhOYW1lOnN0YWdlRGVzY3JpcHRvci5lbnRy
eVBvaW50XSk7CisKKyAgICAgICAgaWYgKCFmdW5jdGlvbikgeworICAgICAgICAgICAgTE9HKFdl
YkdQVSwgIiVzOiBNVExGdW5jdGlvbiAlcyBub3QgZm91bmQhIiwgZnVuY3Rpb25OYW1lLCBzdGFn
ZURlc2NyaXB0b3IuZW50cnlQb2ludC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoc3RhZ2VEZXNjcmlwdG9yLnN0
YWdlKSB7CisgICAgICAgIGNhc2UgV2ViR1BVU2hhZGVyU3RhZ2U6OlZFUlRFWDoKKyAgICAgICAg
ICAgIFttdGxEZXNjcmlwdG9yIHNldFZlcnRleEZ1bmN0aW9uOmZ1bmN0aW9uLmdldCgpXTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkdQVVNoYWRlclN0YWdlOjpGUkFHTUVO
VDoKKyAgICAgICAgICAgIFttdGxEZXNjcmlwdG9yIHNldEZyYWdtZW50RnVuY3Rpb246ZnVuY3Rp
b24uZ2V0KCldOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgc2hhZGVyIHN0YWdlIHNwZWNpZmllZCEiLCBm
dW5jdGlvbk5hbWUpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmUHRyPEdQ
VVJlbmRlclBpcGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKGNvbnN0IEdQVURldmlj
ZSYgZGV2aWNlLCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQorewor
ICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVSZW5kZXJQaXBlbGluZTo6
Y3JlYXRlKCkiOworCisgICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgeworICAgICAg
ICBMT0coV2ViR1BVLCAiJXM6IE1UTERldmljZSBkb2VzIG5vdCBleGlzdCEiLCBmdW5jdGlvbk5h
bWUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8TVRM
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBtdGxEZXNjcmlwdG9yOworCisgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOworCisgICAgbXRsRGVzY3JpcHRvciA9IGFkb3B0TlMoW01UTFJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciBuZXddKTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CisKKyAgICBpZiAoIW10bERlc2NyaXB0b3IpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBFcnJvciBjcmVhdGluZyBNVExEZXNjcmlwdG9yISIsIGZ1bmN0aW9uTmFtZSk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmICghc2V0RnVuY3Rpb25zRm9yUGlw
ZWxpbmVEZXNjcmlwdG9yKGZ1bmN0aW9uTmFtZSwgbXRsRGVzY3JpcHRvci5nZXQoKSwgV1RGTW92
ZShkZXNjcmlwdG9yKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gRklYTUU6
IEdldCB0aGUgcGl4ZWxGb3JtYXQgYXMgY29uZmlndXJlZCBmb3IgdGhlIGNvbnRleHQvQ0FNZXRh
bExheWVyLgorICAgIG10bERlc2NyaXB0b3IuZ2V0KCkuY29sb3JBdHRhY2htZW50c1swXS5waXhl
bEZvcm1hdCA9IE1UTFBpeGVsRm9ybWF0QkdSQThVbm9ybTsKKworICAgIFBsYXRmb3JtUmVuZGVy
UGlwZWxpbmVTbWFydFB0ciBwaXBlbGluZTsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKKworICAgIGlmIChbbXRsRGVzY3JpcHRvciB2ZXJ0ZXhGdW5jdGlvbl0pCisgICAgICAg
IHBpcGVsaW5lID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3UmVuZGVyUGlw
ZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm10bERlc2NyaXB0b3IuZ2V0KCkgZXJyb3I6bmlsXSk7
CisgICAgZWxzZQorICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE5vIHZlcnRleCBmdW5jdGlvbiBh
c3NpZ25lZCBmb3IgTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yISIsIGZ1bmN0aW9uTmFtZSk7
CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgaWYgKCFwaXBlbGluZSkg
eworICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEVycm9yIGNyZWF0aW5nIE1UTFJlbmRlclBpcGVs
aW5lU3RhdGUhIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVSZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBp
cGVsaW5lKSkpOworfQorCitHUFVSZW5kZXJQaXBlbGluZTo6R1BVUmVuZGVyUGlwZWxpbmUoUGxh
dGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyJiYgcGlwZWxpbmUpCisgICAgOiBtX3BsYXRmb3Jt
UmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpCit7CisgICAgVU5VU0VEX1BBUkFNKG1f
cGxhdGZvcm1SZW5kZXJQaXBlbGluZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiZTYyZTM5OGVhMTYwZjRi
NGM2Nzk5YjE4N2Q0YmVmZDIxODgzNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW4uaApAQCAtMCwwICsxLDY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFVTRShN
RVRBTCkKK09CSkNfQ0xBU1MgQ0FNZXRhbExheWVyOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgR1BVRGV2aWNlOworCisjaWYgVVNFKE1FVEFMKQordXNpbmcgUGxhdGZv
cm1Td2FwTGF5ZXIgPSBDQU1ldGFsTGF5ZXI7Cit1c2luZyBQbGF0Zm9ybVN3YXBMYXllclNtYXJ0
UHRyID0gUmV0YWluUHRyPENBTWV0YWxMYXllcj47CisjZWxzZQordXNpbmcgUGxhdGZvcm1Td2Fw
TGF5ZXIgPSB2b2lkOwordXNpbmcgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciA9IFJlZlB0cjx2
b2lkPjsKKyNlbmRpZgorCitjbGFzcyBHUFVTd2FwQ2hhaW4gOiBwdWJsaWMgUmVmQ291bnRlZDxH
UFVTd2FwQ2hhaW4+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVVN3YXBDaGFpbj4g
Y3JlYXRlKCk7CisKKyAgICB2b2lkIHNldERldmljZShjb25zdCBHUFVEZXZpY2UmKTsKKyAgICB2
b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIHByZXNlbnQoKTsK
KworICAgIFBsYXRmb3JtU3dhcExheWVyICpwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybVN3YXBMYXllci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIEdQVVN3YXBDaGFp
bihQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRyJiYpOworCisgICAgUGxhdGZvcm1Td2FwTGF5ZXJT
bWFydFB0ciBtX3BsYXRmb3JtU3dhcExheWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2RmZDE2MmViYjgyMzE3N2U0MzVjYjk2N2EyYzYzY2Y3YjU1ZGI5NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFs
Lm1tCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIkdQVVN3YXBDaGFpbi5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2ltcG9ydCAi
R1BVRGV2aWNlLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisKKyNpbXBvcnQgPE1ldGFsL01ldGFs
Lmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHd0Zi9CbG9j
a09iakNFeGNlcHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPEdQVVN3
YXBDaGFpbj4gR1BVU3dhcENoYWluOjpjcmVhdGUoKQoreworICAgIFBsYXRmb3JtU3dhcExheWVy
U21hcnRQdHIgcGxhdGZvcm1MYXllcjsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKKworICAgIHBsYXRmb3JtTGF5ZXIgPSBhZG9wdE5TKFtbQ0FNZXRhbExheWVyIGFsbG9jXSBp
bml0XSk7CisKKyAgICBbcGxhdGZvcm1MYXllciBzZXRPcGFxdWU6MF07CisgICAgW3BsYXRmb3Jt
TGF5ZXIgc2V0TmFtZTpAIldlYkdQVSBMYXllciJdOworCisgICAgLy8gRklYTUU6IEZvciBub3cs
IGRlZmF1bHQgdG8gdGhlc2Ugc2V0dGluZ3MuCisgICAgW3BsYXRmb3JtTGF5ZXIgc2V0UGl4ZWxG
b3JtYXQ6TVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtXTsKKyAgICBbcGxhdGZvcm1MYXllciBzZXRG
cmFtZWJ1ZmZlck9ubHk6WUVTXTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisK
KyAgICBpZiAoIXBsYXRmb3JtTGF5ZXIpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBD
aGFpbjo6Y3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgQ0FNZXRhbExheWVyISIpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVN3
YXBDaGFpbihXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKSk7Cit9CisKK0dQVVN3YXBDaGFpbjo6R1BV
U3dhcENoYWluKFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHImJiBwbGF0Zm9ybUxheWVyKQorICAg
IDogbV9wbGF0Zm9ybVN3YXBMYXllcihXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKQoreworfQorCit2
b2lkIEdQVVN3YXBDaGFpbjo6c2V0RGV2aWNlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQorewor
ICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwg
IkdQVVN3YXBDaGFpbjo6c2V0RGV2aWNlKCk6IE1UTERldmljZSBkb2VzIG5vdCBleGlzdCEiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFttX3BsYXRmb3JtU3dhcExheWVyIHNldERl
dmljZTpkZXZpY2UucGxhdGZvcm1EZXZpY2UoKV07Cit9CisKK3ZvaWQgR1BVU3dhcENoYWluOjpy
ZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBbbV9wbGF0Zm9ybVN3YXBMYXll
ciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCB3aWR0aCwgaGVpZ2h0KV07CisgICAgW21fcGxh
dGZvcm1Td2FwTGF5ZXIgc2V0RHJhd2FibGVTaXplOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCld
OworfQorCit2b2lkIEdQVVN3YXBDaGFpbjo6cHJlc2VudCgpCit7CisgICAgLy8gRklYTUU6IFVu
aW1wbGVtZW50ZWQgc3R1Yi4KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZDUwMjc3NzJiMWU2ZmFjNmJmOTQ4
ZmUyZjcwMmQ4YTVkMmYxOGI5MC4uZWEzZThmZTE5ZGIwZTFmMWQ2YzE0NDkyOGVhMmI3NDNlMjc5
MzQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTMwMiw2ICszMDIsNyBAQCBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4
dC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAogTW9kdWxlcy93
ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENo
YWluLmNwcAogCkBAIC0zMTk1LDkgKzMxOTYsMTQgQEAgSlNXZWJHUFUuY3BwCiBKU1dlYkdQVUFk
YXB0ZXIuY3BwCiBKU1dlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmNwcAogSlNXZWJHUFVEZXZpY2Uu
Y3BwCitKU1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuY3BwCitKU1dlYkdQVVBpcGVsaW5l
U3RhZ2VEZXNjcmlwdG9yLmNwcAogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcAorSlNXZWJH
UFVSZW5kZXJQaXBlbGluZS5jcHAKK0pTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNw
cAogSlNXZWJHUFVTaGFkZXJNb2R1bGUuY3BwCiBKU1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0
b3IuY3BwCitKU1dlYkdQVVNoYWRlclN0YWdlLmNwcAogSlNXZWJHUFVTd2FwQ2hhaW4uY3BwCiBK
U1dlYk1ldGFsQnVmZmVyLmNwcAogSlNXZWJNZXRhbENvbW1hbmRCdWZmZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAppbmRleCAxNDc0ZTU5MjU5NTA0OTM3YWI4Y2NlNTJmNTY0N2JkODdmOGUw
YTc0Li4zMjlmYTg2MDYzODAzNjBlNGVlOWJlZGEwNzAwNzY5MWU4NTdhZGZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKQEAgLTI4LDcgKzI4LDkgQEAgTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQ
bHVnaW5SZXBsYWNlbWVudC5jcHAKIE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VN
YW5hZ2VyQ29jb2EubW0KIAogTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0K
K01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KIE1vZHVsZXMv
d2ViZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tCitNb2R1bGVzL3dlYmdwdS9jb2Nv
YS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQogCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5
T2JqZWN0SU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NjkwNTczOTMxNTVlMDJhOWVmNTJlNmRiMmI5YmU3MDA1MTdjZTY1Yy4uMTNhNjg1NGU3Mjg3YjNm
YTA5M2VkMDJiNTgwNjNlZTI5ODE4MmUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM3NzksNiArMTM3NzksOSBAQAogCQlE
MDQ1QUQyMTIxNjgyNDc0MDAwQTZFOUIgLyogV2ViTWV0YWxCdWZmZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViTWV0YWxCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEMDQ1QUQyMjIxNjgyNDc0MDAwQTZFOUIgLyogV2ViTWV0YWxDb21tYW5kQnVmZmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMDQ1QUQyMzIxNjgyNDc1MDAwQTZFOUIgLyogV2ViTWV0YWxDb21tYW5kUXVl
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWV0YWxDb21tYW5kUXVldWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDQ2RkI2NTIxOEQwNzNDMDBDQjhGNjIgLyogR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDQ2RkI2NzIx
OEQxODAzMDBDQjhGNjIgLyogR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRDA0NkZCNjgyMThEMThDRDAwQ0I4RjYyIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRv
ckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDU3M0Q0MjIxN0VCODFFMDBEMUJFOTEgLyogR1BV
TGVnYWN5VGV4dHVyZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gR1BVTGVnYWN5VGV4dHVyZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEMDVDRUQyNzBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXRCbG9ja0NvbW1hbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDVDRUQyODBBNDBCQjJDMDBDNUFG
MzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGb3JtYXRCbG9ja0NvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEzODAyLDYgKzEzODA1LDggQEAKIAkJRDA5M0QyMjUyMTc5NTFENDAwMzI5MjE3IC8qIFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyaW5nQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDkzRDIyNzIxNzk1MUQ0MDAzMjky
MTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwOTNEMjI5MjE3OTU0MTYw
MDMyOTIxNyAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlEMDk3MjdCNTIxODdGNDQzMDA5NDJGM0EgLyogR1BVU3dhcENoYWluLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEdQVVN3YXBDaGFpbi5oOyBwYXRoID0gY29jb2EvR1BVU3dhcENoYWluLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwOTcyN0I2MjE4N0Y0NDMwMDk0MkYzQSAvKiBHUFVTd2Fw
Q2hhaW5NZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVN3YXBDaGFpbk1ldGFsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDk3MjdDMjIxOEE0NzI5MDA5NDJGM0Eg
LyogR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwOTcyN0NB
MjE4QkQ3QTUwMDk0MkYzQSAvKiBHUFVEZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BV
RGV2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBBMjBENTQyMDkyQTBB
NjAwRTBDMjU5IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzgxMiw2ICsxMzgxNywxOSBAQAogCQlEMEJDNTQ0ODE0
NDNBQzRBMDBFMTA1REEgLyogQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwQkQ0RjVBMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25D
b21tYW5kSU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3Rh
dGlvbkNvbW1hbmRJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEJENEY1
QjE0MDg4NTBGMDA2ODM5QjYgLyogRGljdGF0aW9uQ29tbWFuZElPUy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEaWN0YXRpb25Db21tYW5kSU9TLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUQwQzQxOUVCMjE4M0NGQTIwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGlu
ZVN0YWdlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVQaXBlbGluZVN0YWdlRGVz
Y3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlFQzIxODNDRkEy
MDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQ
VVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRDBDNDE5RUUyMTgzRDlDODAwOUVDMURFIC8qIFdlYkdQVVNoYWRlclN0YWdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkdQVVNoYWRlclN0YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUQwQzQxOUVGMjE4M0Q5QzgwMDlFQzFERSAvKiBXZWJHUFVTaGFkZXJTdGFnZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViR1BVU2hhZGVyU3RhZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlE
MEM0MTlGMDIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUYxMjE4M0VCMzEwMDlFQzFERSAvKiBXZWJHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JC
YXNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RjIyMTgzRUZFQzAw
OUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRDBDNDE5RjMyMTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RjcyMTg0MDREQTAwOUVDMURFIC8q
IFdlYkdQVVJlbmRlclBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVs
aW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUY4MjE4NDA0REEwMDlF
QzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJH
UFVSZW5kZXJQaXBlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQx
OUY5MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0
MTlGQTIxODQwRjZDMDA5RUMxREUgLyogR1BVUmVuZGVyUGlwZWxpbmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gR1BVUmVuZGVyUGlwZWxpbmUuaDsgcGF0aCA9IGNvY29hL0dQVVJlbmRlclBpcGVsaW5lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUZCMjE4NDBGNkMwMDlFQzFERSAv
KiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVu
ZGVyUGlwZWxpbmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBDQUFF
OTgyMTY4MjRBNjAwMUM5MUM3IC8qIFdlYk1ldGFsQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJNZXRhbEJ1
ZmZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTlBMjE2ODI0QTYw
MDFDOTFDNyAvKiBXZWJNZXRhbENvbW1hbmRCdWZmZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFu
ZEJ1ZmZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTlCMjE2ODI0
QTcwMDFDOTFDNyAvKiBXZWJNZXRhbENvbW1hbmRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJN
ZXRhbENvbW1hbmRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU0NDgs
OCArMjU0NjYsMTMgQEAKIAkJCQlEMDBGNTk0MjIxNkVDQzdBMDAwRDcxREIgLyogRE9NV2luZG93
V2ViR1BVLmlkbCAqLywKIAkJCQlEMDk3MjdDQTIxOEJEN0E1MDA5NDJGM0EgLyogR1BVRGV2aWNl
LmNwcCAqLywKIAkJCQlEMDYxNUZDRjIxN0ZGMTg1MDA4QTQ4QTggLyogR1BVRGV2aWNlLmggKi8s
CisJCQkJRDA0NkZCNjgyMThEMThDRDAwQ0I4RjYyIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UuaCAqLywKKwkJCQlEMDQ2RkI2NzIxOEQxODAzMDBDQjhGNjIgLyogR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IuaCAqLywKKwkJCQlEMEM0MTlGQTIxODQwRjZDMDA5RUMxREUgLyogR1BVUmVu
ZGVyUGlwZWxpbmUuaCAqLywKKwkJCQlEMDQ2RkI2NTIxOEQwNzNDMDBDQjhGNjIgLyogR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCiAJCQkJRDA2MEQ4ODgyMTgyODBDMTAwMzM5MzE4
IC8qIEdQVVNoYWRlck1vZHVsZS5oICovLAogCQkJCUQwOTcyN0MyMjE4QTQ3MjkwMDk0MkYzQSAv
KiBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8sCisJCQkJRDA5NzI3QjUyMTg3RjQ0MzAw
OTQyRjNBIC8qIEdQVVN3YXBDaGFpbi5oICovLAogCQkJCUQwMEY1OTQ3MjE2RUZFNTQwMDBENzFE
QiAvKiBXZWJHUFUuY3BwICovLAogCQkJCUQwMEY1OTQ2MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJH
UFUuaCAqLywKIAkJCQlEMDBGNTk0ODIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmlkbCAqLywK
QEAgLTI1NDYxLDE0ICsyNTQ4NCwyNSBAQAogCQkJCUQwMEY1OTUzMjE3MDFEOEMwMDBENzFEQiAv
KiBXZWJHUFVEZXZpY2UuY3BwICovLAogCQkJCUQwMEY1OTUyMjE3MDFEOEMwMDBENzFEQiAvKiBX
ZWJHUFVEZXZpY2UuaCAqLywKIAkJCQlEMDBGNTk1NDIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BV
RGV2aWNlLmlkbCAqLywKKwkJCQlEMEM0MTlGMDIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovLAorCQkJCUQwQzQxOUYxMjE4M0VCMzEwMDlFQzFERSAv
KiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbCAqLywKKwkJCQlEMEM0MTlFQjIxODND
RkEyMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCAqLywKKwkJCQlE
MEM0MTlFQzIxODNDRkEyMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3Iu
aWRsICovLAogCQkJCUQwOTNEMjI5MjE3OTU0MTYwMDMyOTIxNyAvKiBXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmNwcCAqLywKIAkJCQlEMDkzRDIyNTIxNzk1MUQ0MDAzMjkyMTcgLyogV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dC5oICovLAogCQkJCUQwOTNEMjI3MjE3OTUxRDQwMDMyOTIxNyAvKiBXZWJH
UFVSZW5kZXJpbmdDb250ZXh0LmlkbCAqLywKKwkJCQlEMEM0MTlGODIxODQwNERBMDA5RUMxREUg
LyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwICovLAorCQkJCUQwQzQxOUY3MjE4NDA0REEwMDlF
QzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5oICovLAorCQkJCUQwQzQxOUY5MjE4NDA0REEw
MDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgKi8sCisJCQkJRDBDNDE5RjIyMTgz
RUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovLAorCQkJ
CUQwQzQxOUYzMjE4M0VGRUMwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuaWRsICovLAogCQkJCUQwNjE1RkNEMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJN
b2R1bGUuY3BwICovLAogCQkJCUQwNjE1RkNDMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFk
ZXJNb2R1bGUuaCAqLywKIAkJCQlEMDYxNUZDRTIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hh
ZGVyTW9kdWxlLmlkbCAqLywKIAkJCQlEMDYwRDg4NzIxODI2OTcwMDAzMzkzMTggLyogV2ViR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovLAogCQkJCUQwNjBEODg0MjE4MjVENUYwMDMzOTMx
OCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCAqLywKKwkJCQlEMEM0MTlFRTIx
ODNEOUM4MDA5RUMxREUgLyogV2ViR1BVU2hhZGVyU3RhZ2UuaCAqLywKKwkJCQlEMEM0MTlFRjIx
ODNEOUM4MDA5RUMxREUgLyogV2ViR1BVU2hhZGVyU3RhZ2UuaWRsICovLAogCQkJCUQwREEwQkU1
MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uY3BwICovLAogCQkJCUQwREEwQkU0
MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uaCAqLywKIAkJCQlEMERBMEJFNjIx
NzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmlkbCAqLywKQEAgLTI1NDgwLDcgKzI1
NTE0LDkgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRDA2MTVG
RDEyMTdGRjFFMTAwOEE0OEE4IC8qIEdQVURldmljZU1ldGFsLm1tICovLAorCQkJCUQwQzQxOUZC
MjE4NDBGNkMwMDlFQzFERSAvKiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICovLAogCQkJCUQw
NjBEODg5MjE4MjgwQzEwMDMzOTMxOCAvKiBHUFVTaGFkZXJNb2R1bGVNZXRhbC5tbSAqLywKKwkJ
CQlEMDk3MjdCNjIxODdGNDQzMDA5NDJGM0EgLyogR1BVU3dhcENoYWluTWV0YWwubW0gKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCBk
MjlkYmJkNTdjNDgyZGZhYTAyMzM4NjAxYjEwZjA4NmM0YTQ2MzZlLi4wYjg4ODNjZGVmYjY1MjVh
Nzc2OTYxOGI3ODNlNzM1ZTdiNjMzYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0xNzgsNiArMTc4LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIG1hY3JvKFdlYkdQVUFkYXB0ZXIpIFwKICAgICBtYWNybyhXZWJHUFVE
ZXZpY2UpIFwKICAgICBtYWNybyhXZWJHUFVSZW5kZXJpbmdDb250ZXh0KSBcCisgICAgbWFjcm8o
V2ViR1BVUmVuZGVyUGlwZWxpbmUpIFwKKyAgICBtYWNybyhXZWJHUFVTaGFkZXJTdGFnZSkgXAog
ICAgIG1hY3JvKFdlYkdQVVNoYWRlck1vZHVsZSkgXAogICAgIG1hY3JvKFdlYkdQVVN3YXBDaGFp
bikgXAogICAgIG1hY3JvKFdlYk1ldGFsQnVmZmVyKSBcCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTcxODYwNTIwYzBiMGQ5
N2EzNWJkNTA1ZjM1ZDI5M2E1OGU2MTU5ZC4uMTYxZTBmMmQyNmYzMzM2NjQzY2E4Mzc5NTUzNDU1
YzQ4ZDhjYjIyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE4LTExLTA2ICBKdXN0aW4gRmFu
ICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRXhwZXJpbWVudGFs
IHByb3RvdHlwZSBmb3IgTVNMIHNoYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MTI5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd2ViZ3B1L2pzL3NldC11cC13ZWJncHUtY29udGV4dHMuanM6
IEFkZGVkIGhlbHBlciBzY3JpcHQgZm9yIHJ1bm5pbmcgZGlmZmVyZW50IHdlYmdwdSB0ZXN0cy4K
KyAgICAgICAgKHJ1bldlYkdQVVRlc3RzKToKKyAgICAgICAgKGFzeW5jLnJ1bldlYkdQVVRlc3Rz
T25DYW52YXMpOgorICAgICAgICAoYXN5bmMuc2V0VXBDb250ZXh0cyk6CisgICAgICAgICogd2Vi
Z3B1L3JlbmRlci1waXBlbGluZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJn
cHUvcmVuZGVyLXBpcGVsaW5lcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvc2hhZGVy
LW1vZHVsZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmdwdS9zaGFkZXItbW9kdWxlcy5o
dG1sOiBVcGRhdGVkIHRvIHVzZSBmdW5jdGlvbnMgaW4gc2V0LXVwLXdlYmdwdS1jb250ZXh0cy5q
cy4KKyAgICAgICAgKiB3ZWJncHUvd2ViZ3B1LWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViZ3B1L3dlYmdwdS1iYXNpY3MuaHRtbDogVXBkYXRlZCB0aHJvdWdoIGNyZWF0aW5nIGEg
V2ViR1BVUmVuZGVyUGlwZWxpbmUuCisKIDIwMTgtMTEtMDEgIEp1c3RpbiBGYW4gIDxqdXN0aW5f
ZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBFeHBlcmltZW50YWwgcHJvdG90eXBl
IGZvciBNU0wgc2hhZGVycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2pzL3NldC11
cC13ZWJncHUtY29udGV4dHMuanMgYi9MYXlvdXRUZXN0cy93ZWJncHUvanMvc2V0LXVwLXdlYmdw
dS1jb250ZXh0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODMwNTYwNGRhZWUzZmJhNTc1YzNiNDk4ZmQ4ZThi
Y2NiMmQzMGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2pzL3NldC11
cC13ZWJncHUtY29udGV4dHMuanMKQEAgLTAsMCArMSw0NiBAQAorJ3VzZSBzdHJpY3QnOworCits
ZXQgY29udGV4dCwgYWRhcHRlciwgZGVmYXVsdERldmljZTsKKworZnVuY3Rpb24gcnVuV2ViR1BV
VGVzdHModGVzdHMpIHsKKyAgICBydW5XZWJHUFVUZXN0c09uQ2FudmFzKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImNhbnZhcyIpLCB0ZXN0cyk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJ1bldlYkdQ
VVRlc3RzT25DYW52YXMoY2FudmFzLCB0ZXN0cykgeworICAgIHRyeSB7CisgICAgICAgIGF3YWl0
IHNldFVwQ29udGV4dHMoY2FudmFzKTsKKworICAgICAgICBmb3IgKGxldCB0ZXN0IG9mIHRlc3Rz
KQorICAgICAgICAgICAgdGVzdCgpOworCisgICAgICAgIGRlYnVnKCJBbGwgdGVzdHMgY29tcGxl
dGUuIik7CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgY29uc29sZS5lcnJvcihlcnJv
cik7CisgICAgICAgIHRlc3RGYWlsZWQoYFske2Vycm9yfV06IFNlZSBjb25zb2xlIWApOworICAg
IH0KK30KKworYXN5bmMgZnVuY3Rpb24gc2V0VXBDb250ZXh0cyhjYW52YXMpIHsKKyAgICBjb250
ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIndlYmdwdSIpOworICAgIGlmICghY29udGV4dCkKKyAg
ICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFUgY29udGV4dCEiKTsKKwor
ICAgIHNob3VsZEJlRGVmaW5lZCh3aW5kb3cud2ViZ3B1KTsKKyAgICAKKyAgICAvLyBGSVhNRTog
cmVxdWVzdEFkYXB0ZXIgc2hvdWxkIHRha2UgYSBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvci4KKyAg
ICBhZGFwdGVyID0gYXdhaXQgd2luZG93LndlYmdwdS5yZXF1ZXN0QWRhcHRlcih7fSk7CisgICAg
aWYgKCFhZGFwdGVyKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgZGVm
YXVsdCBXZWJHUFVBZGFwdGVyISIpCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBG
SVhNRTogcmVxdWVzdERldmljZSBzaG91bGQgdGFrZSBhIFdlYkdQVURldmljZURlc2NyaXB0b3Iu
CisgICAgZGVmYXVsdERldmljZSA9IGFkYXB0ZXIuY3JlYXRlRGV2aWNlKCk7CisgICAgaWYgKCFk
ZWZhdWx0RGV2aWNlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2Vi
R1BVRGV2aWNlISIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IERl
ZmF1bHQgdG8gIkI4RzhSOEE4VW5vcm0iIGZvcm1hdCBmb3Igbm93LgorICAgIGNvbnRleHQuY29u
ZmlndXJlKHsgZGV2aWNlOiBkZWZhdWx0RGV2aWNlLCB3aWR0aDogY2FudmFzLndpZHRoLCBoZWln
aHQ6IGNhbnZhcy5oZWlnaHQgfSk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMyNWI0N2Y5ZGY1YzI1NmVjYzlkMmE5NWI2NmUwYzU2ZjM5MDY3ZjYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMiBAQAorUEFTUyBbb2JqZWN0IFdlYkdQVV0gaXMgZGVmaW5lZC4KK1BB
U1MgU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgV2ViR1BVUmVuZGVyUGlwZWxpbmUuCitQQVNTIFdlYkdQ
VVJlbmRlclBpcGVsaW5lIHdpdGggaW52YWxpZCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3Igd2FzIG5vdCBjcmVhdGVkLgorUEFTUyBXZWJHUFVSZW5kZXJQaXBlbGluZSB3aXRoIGludmFs
aWQgc2hhZGVyIG1vZHVsZSB3YXMgbm90IGNyZWF0ZWQuCitQQVNTIFdlYkdQVVJlbmRlclBpcGVs
aW5lIHdpdGggaW52YWxpZCB2ZXJ0ZXggc2hhZGVyIHN0YWdlIHdhcyBub3QgY3JlYXRlZC4KK1BB
U1MgV2ViR1BVUmVuZGVyUGlwZWxpbmUgd2l0aCBpbnZhbGlkIHZlcnRleCBzaGFkZXIgZW50cnkg
cG9pbnQgd2FzIG5vdCBjcmVhdGVkLgorUEFTUyBXZWJHUFVSZW5kZXJQaXBlbGluZSB3aXRoIGlu
dmFsaWQgV2ViR1BVU2hhZGVyU3RhZ2VFbnVtIHdhcyBub3QgY3JlYXRlZC4KK0FsbCB0ZXN0cyBj
b21wbGV0ZS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
NWQ0YzBhM2NjNjQ5YmM0MDM2NDg2ZmFmZjQ1YmE2MGEzNmI0Mzg4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMuaHRtbApAQCAtMCwwICsxLDEz
OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImpzL3NldC11cC13ZWJncHUt
Y29udGV4dHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0ibGlicmFyeSIgdHlwZT0ieC1zaGFk
ZXIveC1tZXRhbCI+CisgICAgI2luY2x1ZGUgPG1ldGFsX3N0ZGxpYj4KKyAgICAKKyAgICB1c2lu
ZyBuYW1lc3BhY2UgbWV0YWw7CisgICAgCisgICAgc3RydWN0IFZlcnRleAorICAgIHsKKyAgICAg
ICAgZmxvYXQ0IHBvc2l0aW9uIFtbcG9zaXRpb25dXTsKKyAgICB9OworICAgIAorICAgIHZlcnRl
eCBWZXJ0ZXggdmVydGV4X21haW4odWludCB2aWQgW1t2ZXJ0ZXhfaWRdXSkKKyAgICB7CisgICAg
ICAgIFZlcnRleCB2OworICAgICAgICBzd2l0Y2ggKHZpZCkgeworICAgICAgICBjYXNlIDA6Cisg
ICAgICAgICAgICB2LnBvc2l0aW9uID0gZmxvYXQ0KC0uNzUsIC0uNzUsIDAsIDEpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHYucG9zaXRpb24gPSBm
bG9hdDQoLjc1LCAtLjc1LCAwLCAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IDI6CisgICAgICAgICAgICB2LnBvc2l0aW9uID0gZmxvYXQ0KDAsIC43NSwgMCwgMSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHYucG9zaXRpb24g
PSBmbG9hdDQoMCwgMCwgMCwgMSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHY7CisgICAg
fQorICAgIAorICAgIGZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKFZlcnRleCB2ZXJ0ZXhJ
biBbW3N0YWdlX2luXV0pCisgICAgeworICAgICAgICByZXR1cm4gZmxvYXQ0KDEuMCwgMC4wLCAw
LjAsIDEuMCk7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCitp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworCitsZXQgc2hhZGVyRGVzY3JpcHRvciwgc2hhZGVyTW9kdWxlLCB2ZXJ0ZXhTdGFnZURlc2Ny
aXB0b3IsIGZyYWdtZW50U3RhZ2VEZXNjcmlwdG9yOworCitmdW5jdGlvbiBzZXRVcFBpcGVsaW5l
KCkgeworICAgIHNoYWRlckRlc2NyaXB0b3IgPSB7CisgICAgICAgIGNvZGU6IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJsaWJyYXJ5IikudGV4dAorICAgIH07CisKKyAgICBzaGFkZXJNb2R1bGUg
PSBkZWZhdWx0RGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZShzaGFkZXJEZXNjcmlwdG9yKTsKKyAg
ICBpZiAoIXNoYWRlck1vZHVsZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3Jl
YXRlIFdlYkdQVVNoYWRlck1vZHVsZSEiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHZlcnRleFN0YWdlRGVzY3JpcHRvciA9IHsgCisgICAgICAgIG1vZHVsZTogc2hhZGVyTW9kdWxl
LCAKKyAgICAgICAgc3RhZ2U6IFdlYkdQVVNoYWRlclN0YWdlLlZFUlRFWCwgCisgICAgICAgIGVu
dHJ5UG9pbnQ6ICJ2ZXJ0ZXhfbWFpbiIgCisgICAgfTsKKworICAgIGZyYWdtZW50U3RhZ2VEZXNj
cmlwdG9yID0geworICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwKKyAgICAgICAgc3RhZ2U6
IFdlYkdQVVNoYWRlclN0YWdlLkZSQUdNRU5ULAorICAgICAgICBlbnRyeVBvaW50OiAiZnJhZ21l
bnRfbWFpbiIKKyAgICB9OworCisgICAgbGV0IHBpcGVsaW5lRGVzY3JpcHRvciA9IHsKKyAgICAg
ICAgc3RhZ2VzOiBbdmVydGV4U3RhZ2VEZXNjcmlwdG9yLCBmcmFnbWVudFN0YWdlRGVzY3JpcHRv
cl0sCisgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAidHJpYW5nbGVMaXN0IgorICAgIH07CisK
KyAgICBsZXQgcmVuZGVyUGlwZWxpbmUgPSBkZWZhdWx0RGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVs
aW5lKHBpcGVsaW5lRGVzY3JpcHRvcik7CisgICAgaWYgKHJlbmRlclBpcGVsaW5lKQorICAgICAg
ICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgY3JlYXRlZCBXZWJHUFVSZW5kZXJQaXBlbGluZS4i
KQorICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFVS
ZW5kZXJQaXBlbGluZSEiKTsKK30KKworZnVuY3Rpb24gY2hlY2tCYWRSZW5kZXJQaXBlbGluZShk
ZXNjcmlwdG9yLCB0ZXN0U3ViamVjdE5hbWUpIHsKKyAgICBsZXQgcGlwZWxpbmUgPSBkZWZhdWx0
RGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKGRlc2NyaXB0b3IpOworCisgICAgaWYgKHBpcGVs
aW5lKQorICAgICAgICB0ZXN0RmFpbGVkKGBXZWJHUFVSZW5kZXJQaXBlbGluZSB3YXMgY3JlYXRl
ZCB3aXRoIGFuIGludmFsaWQgJHt0ZXN0U3ViamVjdE5hbWV9IWApOworICAgIGVsc2UKKyAgICAg
ICAgdGVzdFBhc3NlZChgV2ViR1BVUmVuZGVyUGlwZWxpbmUgd2l0aCBpbnZhbGlkICR7dGVzdFN1
YmplY3ROYW1lfSB3YXMgbm90IGNyZWF0ZWQuYCk7Cit9CisKK2Z1bmN0aW9uIHNldFVwQmFkUGlw
ZWxpbmVzKCkgeworICAgIGNoZWNrQmFkUmVuZGVyUGlwZWxpbmUoe30sICJXZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IiKTsKKworICAgIGxldCBub01vZHVsZVZlcnRleERlc2NyaXB0b3Ig
PSB7CisgICAgICAgIHN0YWdlOiBXZWJHUFVTaGFkZXJTdGFnZS5WRVJURVgsCisgICAgICAgIGVu
dHJ5UG9pbnQ6ICJ2ZXJ0ZXhfbWFpbiIKKyAgICB9CisgICAgbGV0IG5vTW9kdWxlUGlwZWxpbmVE
ZXNjcmlwdG9yID0geworICAgICAgICBzdGFnZXM6IFtub01vZHVsZVZlcnRleERlc2NyaXB0b3Is
IGZyYWdtZW50U3RhZ2VEZXNjcmlwdG9yXSwKKyAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6ICJ0
cmlhbmdsZUxpc3QiCisgICAgfQorICAgIGNoZWNrQmFkUmVuZGVyUGlwZWxpbmUobm9Nb2R1bGVQ
aXBlbGluZURlc2NyaXB0b3IsICJzaGFkZXIgbW9kdWxlIik7CisKKyAgICAvLyBBIChNZXRhbCkg
cmVuZGVycGlwZWxpbmUgbXVzdCBoYXZlIGEgdmVydGV4IGZ1bmN0aW9uLgorICAgIGxldCBub1Zl
cnRleFBpcGVsaW5lRGVzY3JpcHRvciA9IHsKKyAgICAgICAgc3RhZ2VzOiBbZnJhZ21lbnRTdGFn
ZURlc2NyaXB0b3JdLAorICAgICAgICBwcmltaXRpdmVUb3BvbG9neTogInRyaWFuZ2xlTGlzdCIK
KyAgICB9CisgICAgY2hlY2tCYWRSZW5kZXJQaXBlbGluZShub1ZlcnRleFBpcGVsaW5lRGVzY3Jp
cHRvciwgInZlcnRleCBzaGFkZXIgc3RhZ2UiKQorCisgICAgbGV0IGJhZEVudHJ5UG9pbnREZXNj
cmlwdG9yID0geyAKKyAgICAgICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUsIAorICAgICAgICBzdGFn
ZTogV2ViR1BVU2hhZGVyU3RhZ2UuVkVSVEVYLCAKKyAgICAgICAgZW50cnlQb2ludDogIlZlcnRl
eF9NYWluIiAKKyAgICB9OworICAgIGxldCBiYWRFbnRyeVBvaW50UGlwZWxpbmVEZXNjc3JpcHRv
ciA9IHsKKyAgICAgICAgc3RhZ2VzOiBbYmFkRW50cnlQb2ludERlc2NyaXB0b3IsIGZyYWdtZW50
U3RhZ2VEZXNjcmlwdG9yXSwKKyAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6ICJ0cmlhbmdsZUxp
c3QiCisgICAgfQorICAgIGNoZWNrQmFkUmVuZGVyUGlwZWxpbmUoYmFkRW50cnlQb2ludFBpcGVs
aW5lRGVzY3NyaXB0b3IsICJ2ZXJ0ZXggc2hhZGVyIGVudHJ5IHBvaW50Iik7CisKKyAgICBsZXQg
YmFkU3RhZ2VFbnVtRGVzY3JpcHRvciA9IHsgCisgICAgICAgIG1vZHVsZTogc2hhZGVyTW9kdWxl
LCAKKyAgICAgICAgc3RhZ2U6IFdlYkdQVVNoYWRlclN0YWdlLkNPTVBVVEUsIAorICAgICAgICBl
bnRyeVBvaW50OiAidmVydGV4X21haW4iIAorICAgIH07CisgICAgbGV0IGJhZFN0YWdlRW51bVBp
cGVsaW5lRGVzY3JpcHRvciA9IHsKKyAgICAgICAgc3RhZ2VzOiBbYmFkU3RhZ2VFbnVtRGVzY3Jp
cHRvciwgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3JdLAorICAgICAgICBwcmltaXRpdmVUb3BvbG9n
eTogInRyaWFuZ2xlTGlzdCIKKyAgICB9CisgICAgY2hlY2tCYWRSZW5kZXJQaXBlbGluZShiYWRT
dGFnZUVudW1QaXBlbGluZURlc2NyaXB0b3IsICJXZWJHUFVTaGFkZXJTdGFnZUVudW0iKTsKK30K
KworcnVuV2ViR1BVVGVzdHMoW3NldFVwUGlwZWxpbmUsIHNldFVwQmFkUGlwZWxpbmVzXSk7CisK
K3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvc2hhZGVyLW1v
ZHVsZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4
cGVjdGVkLnR4dAppbmRleCBmYTk0YjMzMDc1ZThkOWMwNjBlZWViMWYxNzMwMTMzN2ExMTBjZjA2
Li4wZjg0ZWRiNjMxZWI4OGU5NmM0MDU4NGU3NmQ4YWQ1MGZiMGU2Y2NmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvc2hhZGVyLW1vZHVsZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw4IEBA
CitQQVNTIFtvYmplY3QgV2ViR1BVXSBpcyBkZWZpbmVkLgogUEFTUyBCYWQgc2hhZGVyIGNvZGUg
c2hvdWxkIG5vdCBjcmVhdGUgYSBtb2R1bGUuCiBQQVNTIEluY29tcGxldGUgc2hhZGVyIGNvZGUg
c2hvdWxkIG5vdCBjcmVhdGUgYSBtb2R1bGUuCiBQQVNTIFNoYWRlciBtb2R1bGUgY3JlYXRlZCBz
dWNjZXNzZnVsbHkuCitBbGwgdGVzdHMgY29tcGxldGUuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS9zaGFkZXItbW9kdWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVz
Lmh0bWwKaW5kZXggODIzYmU5MmQ5ZTQ5YTlkYjQ5YzUzMzAxYjNiYWVkODU2Mjc2MDQ4OC4uMjY3
YzgwMjcwYjJjZWFmYjQ1YmY1N2JlZGYwN2Q1Y2QzM2VkZjFmMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3NoYWRlci1tb2R1bGVzLmh0bWwKQEAgLTEsNiArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxo
dG1sPgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0ianMvc2V0LXVwLXdlYmdwdS1jb250ZXh0cy5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IGlkPSJsaWJyYXJ5X2Z1bGwiIHR5cGU9Ingtc2hhZGVyL3gtbWV0YWwiPgogICAgICNp
bmNsdWRlIDxtZXRhbF9zdGRsaWI+CiAgICAgCkBAIC03MCwyMCArNzEsNiBAQAogaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQogICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAotbGV0
IGNhbnZhczsKLWxldCBjb250ZXh0OwotbGV0IGFkYXB0ZXI7Ci1sZXQgZGVmYXVsdERldmljZTsK
LQotYXN5bmMgZnVuY3Rpb24gc2V0VXBDb250ZXh0cygpIHsKLSAgICBjYW52YXMgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKLSAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRl
eHQoIndlYmdwdSIpOwotICAgIGFkYXB0ZXIgPSBhd2FpdCB3aW5kb3cud2ViZ3B1LnJlcXVlc3RB
ZGFwdGVyKHt9KTsKLSAgICBkZWZhdWx0RGV2aWNlID0gYWRhcHRlci5jcmVhdGVEZXZpY2UoKTsK
LQotICAgIHNldFVwU2hhZGVycygpOwotfQotCiBmdW5jdGlvbiBzZXRVcFNoYWRlcnMoKSB7CiAg
ICAgbGV0IHNoYWRlckRlc2NyaXB0b3IwID0gewogICAgICAgICBjb2RlIDogIkhlbGxvIFdvcmxk
IgpAQCAtMTE1LDkgKzEwMiw5IEBAIGZ1bmN0aW9uIHNldFVwU2hhZGVycygpIHsKICAgICAgICAg
dGVzdEZhaWxlZCgiU2hhZGVyIG1vZHVsZSBub3QgY3JlYXRlZCBzdWNjZXNzZnVsbHkhIik7CiB9
CiAKLXNldFVwQ29udGV4dHMoKTsKK3J1bldlYkdQVVRlc3RzKFtzZXRVcFNoYWRlcnNdKTsKIAot
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dlYmdwdS1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4IGViMWU1MjQxMjAx
Yzg0MWM3MThjMDNlY2VmNjRlNjlhMDE4YjhjODAuLjQwZDUyZWQ2YmMwNDhmNmVmYjQyNzk1MTc2
MTVhMmVjNzBiYmNlOGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93ZWJncHUtYmFz
aWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy1l
eHBlY3RlZC50eHQKQEAgLTEsNCArMSw1IEBACiBQQVNTIFtvYmplY3QgV2ViR1BVXSBpcyBkZWZp
bmVkLgorQWxsIHRlc3RzIGNvbXBsZXRlLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1
LWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1iYXNpY3MuaHRtbAppbmRl
eCBmN2M3NjcyZmQ1YzExOWFhMjg1YTUzNDYxMGNlMGU0MTNjNGI3YzViLi4zMDg0ZjZkMGQ5YjY1
YjQ0Njk2NTg3YzJkYmNjNTBiOTA5OWMyOWI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2ViZ3B1LWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS93ZWJncHUtYmFz
aWNzLmh0bWwKQEAgLTEsNiArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0ianMvc2V0LXVwLXdlYmdwdS1jb250ZXh0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IGlkPSJs
aWJyYXJ5IiB0eXBlPSJ4LXNoYWRlci94LW1ldGFsIj4KICAgICAjaW5jbHVkZSA8bWV0YWxfc3Rk
bGliPgogICAgIApAQCAtNDEsNDYgKzQyLDk2IEBACiBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAg
ICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCi1sZXQgY2FudmFzOwotbGV0IGNv
bnRleHQ7Ci1sZXQgYWRhcHRlcjsKLWxldCBkZWZhdWx0RGV2aWNlOworbGV0IHJlbmRlclBpcGVs
aW5lOwogCi1hc3luYyBmdW5jdGlvbiBzZXRVcENvbnRleHRzKCkgewotICAgIGNhbnZhcyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0
Q29udGV4dCgid2ViZ3B1Iik7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICB0ZXN0RmFpbGVk
KCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVSBjb250ZXh0ISIpOworZnVuY3Rpb24gc2V0VXBQaXBl
bGluZSgpIHsKKyAgICBsZXQgc2hhZGVyRGVzY3JpcHRvciA9IHsKKyAgICAgICAgY29kZTogZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpYnJhcnkiKS50ZXh0CisgICAgfTsKKyAgICBsZXQgc2hh
ZGVyTW9kdWxlID0gZGVmYXVsdERldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoc2hhZGVyRGVzY3Jp
cHRvcik7CisgICAgaWYgKCFzaGFkZXJNb2R1bGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291
bGQgbm90IGNyZWF0ZSBXZWJHUFVTaGFkZXJNb2R1bGUhIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKLSAgICBzaG91bGRCZURlZmluZWQod2luZG93LndlYmdwdSk7Ci0gICAgCi0gICAgYWRh
cHRlciA9IGF3YWl0IHdpbmRvdy53ZWJncHUucmVxdWVzdEFkYXB0ZXIoe30pOwotICAgIGlmICgh
YWRhcHRlcikgewotICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIGRlZmF1bHQg
V2ViR1BVQWRhcHRlciEiKQorICAgIGxldCB2ZXJ0ZXhTdGFnZURlc2NyaXB0b3IgPSB7IAorICAg
ICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwgCisgICAgICAgIHN0YWdlOiBXZWJHUFVTaGFkZXJT
dGFnZS5WRVJURVgsIAorICAgICAgICBlbnRyeVBvaW50OiAidmVydGV4X21haW4iIAorICAgIH07
CisKKyAgICBsZXQgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3IgPSB7CisgICAgICAgIG1vZHVsZTog
c2hhZGVyTW9kdWxlLAorICAgICAgICBzdGFnZTogV2ViR1BVU2hhZGVyU3RhZ2UuRlJBR01FTlQs
CisgICAgICAgIGVudHJ5UG9pbnQ6ICJmcmFnbWVudF9tYWluIgorICAgIH07CisKKyAgICBpZiAo
IXZlcnRleFN0YWdlRGVzY3JpcHRvciB8fCAhZnJhZ21lbnRTdGFnZURlc2NyaXB0b3IpIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFVQaXBlbGluZVN0YWdlRGVz
Y3JpcHRvciEiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRlZmF1bHREZXZpY2Ug
PSBhZGFwdGVyLmNyZWF0ZURldmljZSgpOwotICAgIGlmICghZGVmYXVsdERldmljZSkgewotICAg
ICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVURldmljZSEiKTsKKyAgICBs
ZXQgcGlwZWxpbmVEZXNjcmlwdG9yID0geworICAgICAgICBzdGFnZXM6IFt2ZXJ0ZXhTdGFnZURl
c2NyaXB0b3IsIGZyYWdtZW50U3RhZ2VEZXNjcmlwdG9yXSwKKyAgICAgICAgcHJpbWl0aXZlVG9w
b2xvZ3k6ICJ0cmlhbmdsZUxpc3QiCisgICAgfTsKKworICAgIGlmICghcGlwZWxpbmVEZXNjcmlw
dG9yKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yISIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2V0
VXBTaGFkZXJzKCk7CisgICAgcmVuZGVyUGlwZWxpbmUgPSBkZWZhdWx0RGV2aWNlLmNyZWF0ZVJl
bmRlclBpcGVsaW5lKHBpcGVsaW5lRGVzY3JpcHRvcik7CisgICAgaWYgKCFyZW5kZXJQaXBlbGlu
ZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVVJlbmRlclBp
cGVsaW5lISIpOworICAgICAgICByZXR1cm47CisgICAgfQogfQogCi1mdW5jdGlvbiBzZXRVcFNo
YWRlcnMoKSB7Ci0gICAgbGV0IHNoYWRlckRlc2NyaXB0b3IgPSB7Ci0gICAgICAgIGNvZGU6IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaWJyYXJ5IikudGV4dAotICAgIH07Ci0gICAgbGV0IHNo
YWRlck1vZHVsZSA9IGRlZmF1bHREZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHNoYWRlckRlc2Ny
aXB0b3IpOwotICAgIGlmICghc2hhZGVyTW9kdWxlKQotICAgICAgICB0ZXN0RmFpbGVkKCJDb3Vs
ZCBub3QgY3JlYXRlIFdlYkdQVVNoYWRlck1vZHVsZSEiKTsKK2Z1bmN0aW9uIHJlbmRlcigpIHsK
KyAgICAvLyBsZXQgY29tbWFuZEJ1ZmZlciA9IGRlZmF1bHREZXZpY2UuY3JlYXRlQ29tbWFuZEJ1
ZmZlcigpOworICAgIC8vIGlmICghY29tbWFuZEJ1ZmZlcikgeworICAgIC8vICAgICB0ZXN0RmFp
bGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVUNvbW1hbmRCdWZmZXIhIik7CisgICAgLy8gICAg
IHJldHVybjsKKyAgICAvLyB9CisKKyAgICAvLyBsZXQgdGV4dHVyZSA9IGNvbnRleHQuZ2V0TmV4
dFRleHR1cmUoKTsKKyAgICAvLyBpZiAoIXRleHR1cmUpIHsKKyAgICAvLyAgICAgdGVzdEZhaWxl
ZCgiQ291bGQgbm90IGdldCBuZXh0IFdlYkdQVVRleHR1cmUhIik7CisgICAgLy8gICAgIHJldHVy
bjsKKyAgICAvLyB9CisKKyAgICAvLyBsZXQgdGV4dHVyZVZpZXcgPSBjb250ZXh0LmNyZWF0ZVRl
eHR1cmVWaWV3KCk7CisgICAgLy8gaWYgKCF0ZXh0dXJlVmlldykgeworICAgIC8vICAgICB0ZXN0
RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVVRleHR1cmVWaWV3ISIpOworICAgIC8vICAg
ICByZXR1cm47CisgICAgLy8gfQorCisgICAgLy8gLy8gRklYTUU6IEZsZXNoIG91dCB0aGUgcmVz
dCBvZiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci4gRGVmYXVsdCBsb2FkT3AsIHN0b3JlT3As
IGNsZWFyQ29sb3IgZm9yIG5vdy4KKyAgICAvLyBsZXQgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7
CisgICAgLy8gICAgIGF0dGFjaG1lbnQgOiB0ZXh0dXJlVmlldworICAgIC8vIH07CisKKyAgICAv
LyBsZXQgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kQnVmZmVyLmJlZ2luUmVuZGVyUGFzcyhy
ZW5kZXJQYXNzRGVzY3JpcHRvcik7CisgICAgLy8gcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxp
bmUocmVuZGVyUGlwZWxpbmUpOworCisgICAgLy8gLy8gTm90ZSB0aGF0IHdlIGRpZG4ndCBhdHRh
Y2ggYW55IGJ1ZmZlcnMgLSB0aGUgc2hhZGVyIGlzIGdlbmVyYXRpbmcgdGhlIHZlcnRpY2VzIGZv
ciB1cy4KKyAgICAvLyByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDMsIDEsIDAsIDApOworICAgIC8v
IHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKKworICAgIC8vIGxldCBxdWV1ZSA9IGRldmlj
ZS5nZXRRdWV1ZSgpOworICAgIC8vIGlmICghcXVldWUpIHsKKyAgICAvLyAgICAgdGVzdEZhaWxl
ZCgiVW5hYmxlIHRvIGNyZWF0ZSBkZWZhdWx0IFdlYkdQVVF1ZXVlISIpOworICAgIC8vICAgICBy
ZXR1cm47CisgICAgLy8gfQorICAgIC8vIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwor
CisgICAgLy8gY29udGV4dC5wcmVzZW50KCk7CiB9CiAKLXNldFVwQ29udGV4dHMoKTsKK3J1bldl
YkdQVVRlc3RzKFtzZXRVcFBpcGVsaW5lLCByZW5kZXJdKTsKIAotdmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354018</attachid>
            <date>2018-11-06 15:32:33 -0800</date>
            <delta_ts>2018-11-06 15:40:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191291-20181106153232.patch</filename>
            <type>text/plain</type>
            <size>88265</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3ODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM0NWVjODFlOTM1MDQx
ZGZkMmM5MTU2OThlMWM0NjIwNzNlOWZmMy4uNzNlMDJlZmI1YzU0OTc2ZWNiODlkM2E2ZjhmMjQ5
MzJlZDJkYzllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE4LTExLTA2ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRXhwZXJp
bWVudGFsIHByb3RvdHlwZSBmb3IgTVNMIHNoYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTI5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHdlYmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0
bWwKKyAgICAgICAgQWxzbyB1cGRhdGUgdGVzdCB3ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sIHRv
IGNyZWF0ZSBhIFdlYkdQVVJlbmRlclBpcGVsaW5lLgorCisgICAgICAgIEJlZ2luIGltcGxlbWVu
dGF0aW9uIG9mIFdlYkdQVVJlbmRlclBpcGVsaW5lIGFuZCBXZWJHUFVTd2FwQ2hhaW4uIEEgV2Vi
R1BVUmVuZGVyUGlwZWxpbmUgaXMgYmFja2VkIGJ5IGEKKyAgICAgICAgR1BVUmVuZGVyUGlwZWxp
bmUsIGNyZWF0ZWQgbGF6aWx5IHVzaW5nIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBwYXNzZWQtaW4g
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLgorICAgICAgICBPbiBNZXRhbC1zdXBwb3J0
ZWQgc3lzdGVtcywgR1BVUmVuZGVyUGlwZWxpbmUgaXMgYW4gaW50ZXJmYWNlIHRvIGEgTVRMUmVu
ZGVyUGlwZWxpbmVTdGF0ZS4KKyAgICAgICAgVGhlIE1UTFJlbmRlclBpcGVsaW5lU3RhdGUgaXMg
Y3JlYXRlZCB3aXRoIHRoZSBXZWJHUFVEZXZpY2UgY3VycmVudGx5IGNvbmZpZ3VyZWQgb24gdGhl
IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQ
VURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBp
cGVsaW5lIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6R1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6cHJpbWl0aXZlVG9wb2xvZ3kpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRl
clBpcGVsaW5lIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6YWRhcHRlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmRldmljZSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5pZGw6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5k
ZXJQaXBlbGluZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVuZGVyaW5n
Q29udGV4dDo6V2ViR1BVUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVNoYWRlck1vZHVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxl
Ojptb2R1bGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0
YWdlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVTd2FwQ2hhaW46OmNvbmZpZ3VyZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVTd2FwQ2hhaW46OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU3dhcENo
YWluOjptYXJrTGF5ZXJDb21wb3NpdGVkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVTd2FwQ2hhaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVN3YXBDaGFpbjo6V2ViR1BV
U3dhcENoYWluKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRs
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6cGxhdGZvcm1SZW5kZXJQaXBlbGlu
ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxp
bmVNZXRhbC5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRGdW5jdGlvbnNGb3JQaXBl
bGluZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGlwZWxpbmU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6R1BVUmVuZGVyUGlw
ZWxpbmUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkdQVVN3YXBDaGFpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQ
VVN3YXBDaGFpbjo6R1BVU3dhcENoYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVN3YXBDaGFp
bjo6c2V0RGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVN3YXBDaGFpbjo6cmVzaGFwZSk6
CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OnByZXNlbnQpOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNv
cmVCdWlsdGluTmFtZXMuaDoKKwogMjAxOC0xMS0wMSAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEV4cGVyaW1lbnRhbCBwcm90b3R5cGUgZm9y
IE1TTCBzaGFkZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA2ZTI4MzdhMWU5ZDBhMzUxNjNjN2ZjYjNhMGRl
YzZhOGM3ODUxZGFhLi5kODM1N2YyYWZmN2JmMmY1ZGVlNzJjODY5ODBjNTkxMjAwNzU0M2NmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKQEAgLTEzODIsNiArMTM4Miw2IEBACiAjZGVmaW5lIFVTRV9JT1NVUkZBQ0Vf
Q0FOVkFTX0JBQ0tJTkdfU1RPUkUgMQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYg
IVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQotI2RlZmluZSBFTkFCTEVfV0VCR1BVIDEK
KyNpZiAhUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQor
I2RlZmluZSBFTkFCTEVfV0VCR1BVIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5
YWViMmRkY2NkOWIwYTg2MjI2NzUzMzU3NjY2NjdjNWI3YWZkNjZjLi4yMTE0MTA5NTg3N2M5NThl
OWU5NWEzOTEwNTAyNDY5MDUwNjEwZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDUzLDkg
KzQ1MywxNCBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUFkYXB0ZXIuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlckRl
c2NyaXB0b3IuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAorICAgIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsCisgICAgTW9kdWxl
cy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsCisgICAgTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCisgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlcmluZ0NvbnRleHQuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxl
LmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRs
CisgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRsCiAgICAgTW9kdWxlcy93
ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbAogCiAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3Nl
RXZlbnQuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkY2M3NzJjNjY2Yjdm
OWEwMGQ4ZTcwZGRhYjhjODhkYWM2YzQ0MDMxLi5mOTU5MDkwMzA4YzI1NTEyMWM0ZmZlOTUzNDc0
NjAxMDI0NjYyNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTM3Myw5ICsz
NzMsMTQgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQWRhcHRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlckRlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVURldmljZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5p
ZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuY3BwCmluZGV4IGU4NTExNDQwNThkYjM3MmYw
YzRkMTM2NWMwMmY1ODZiYTk3MTVlNjAuLjA0Yzk2N2YyYmRlNDhmYWFmNTU4Y2Y3OTQ3NDVkN2U1
ODk0ODlmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURl
dmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmNw
cApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorI2luY2x1ZGUgIkdQ
VVJlbmRlclBpcGVsaW5lLmgiCisjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmgiCiAjaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlLmgiCiAjaW5jbHVkZSAiR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5oIgogCkBAIC0zOCw2ICs0MCwxMSBAQCBSZWZQdHI8R1BVU2hhZGVyTW9k
dWxlPiBHUFVEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yJgogICAgIHJldHVybiBHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShk
ZXNjcmlwdG9yKSk7CiB9CiAKK1JlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gR1BVRGV2aWNlOjpj
cmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBkZXNjcmlw
dG9yKSBjb25zdAoreworICAgIHJldHVybiBHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKCp0aGlz
LCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
RGV2aWNlLmgKaW5kZXggYzE5ZTFlY2ZmNWI3ZjhkMDNkNzVmM2M4NzE5MWNkODc5MTg3YjFhYi4u
ODhiMGNkMmJlZGQ1YThiZDdlZTAxYzc4ODlkNjg3Zjc3MzUwZDY0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmgKQEAgLTQ2LDE0ICs0NiwxNyBAQCB1c2luZyBQ
bGF0Zm9ybURldmljZVNtYXJ0UHRyID0gUmVmUHRyPHZvaWQ+OwogI2VuZGlmCiAKIGNsYXNzIEdQ
VVNoYWRlck1vZHVsZTsKK2NsYXNzIEdQVVJlbmRlclBpcGVsaW5lOwogCiBzdHJ1Y3QgR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvcjsKK3N0cnVjdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7
CiAKIGNsYXNzIEdQVURldmljZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVURldmljZT4gewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWZQdHI8R1BVRGV2aWNlPiBjcmVhdGUoKTsKIAogICAgIFJlZlB0
cjxHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yJiYpIGNvbnN0OworICAgIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVu
ZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYpIGNvbnN0OwogCiAgICAg
UGxhdGZvcm1EZXZpY2UgKnBsYXRmb3JtRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9y
bURldmljZS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmUyNzU1Yjll
MjY2YTJlOGIzOGZhNWQ0YjA4ZmQ3ZTE0ZTI4MTI2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaApAQCAt
MCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisjaW5jbHVkZSAiR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKKworI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZSB7CisgICAgVmVjdG9yPEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlw
dG9yPiBzdGFnZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBjZGQ0OGQwYmIx
NGM5M2RmZDI5Y2EyMjA5Y2QwZTc0Y2FlOWE3NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgKQEAgLTAs
MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQ
VSkKKworI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdQVVBpcGVsaW5l
U3RhZ2VEZXNjcmlwdG9yIHsKKyAgICBjb25zdCBHUFVTaGFkZXJNb2R1bGUmIG1vZHVsZTsKKyAg
ICB1bnNpZ25lZCBsb25nIHN0YWdlOworICAgIFN0cmluZyBlbnRyeVBvaW50OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAzNWVhNjIyMTU4ZDM0NjhlMzdmZDFkNTZkODMyMzVj
ZDNhNTRjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlLmgiCisjaW5jbHVkZSAiR1BVUGlwZWxpbmVTdGFnZURlc2Ny
aXB0b3IuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDogR1BVUGlwZWxpbmVEZXNj
cmlwdG9yQmFzZSB7CisgICAgZW51bSB7CisgICAgICAgIFBvaW50TGlzdCwKKyAgICAgICAgTGlu
ZUxpc3QsCisgICAgICAgIExpbmVTdHJpcCwKKyAgICAgICAgVHJpYW5nbGVMaXN0LAorICAgICAg
ICBUcmlhbmdsZVN0cmlwCisgICAgfTsKKworICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cihWZWN0b3I8R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I+JiYgc3RhZ2VzLCBpbnQgdG9wb2xv
Z3kpCisgICAgICAgIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7IFdURk1vdmUoc3RhZ2Vz
KSB9CisgICAgICAgICwgcHJpbWl0aXZlVG9wb2xvZ3kodG9wb2xvZ3kpCisgICAgeworICAgIH0K
KworICAgIGludCBwcmltaXRpdmVUb3BvbG9neTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAppbmRleCAxMGI5YmYzZGY1ODFhOTVhZTM3NmI2MmQ4
YWRkMWEyYWVjYTlhNzc0Li5jYzA0ZGZjZmJjNWIyYjZlZTMxMzc1OGIxMGVkYTQwOTU5ZTZkZTVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAK
QEAgLTI4LDkgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCi0jaW5jbHVkZSAiV2Vi
R1BVQWRhcHRlci5oIgotCisjaW5jbHVkZSAiR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIK
KyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
IldlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVy
UGlwZWxpbmUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIK
ICNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKICNpbmNsdWRlICJXZWJHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmgiCiAKQEAgLTU3LDYgKzYxLDIwIEBAIFJlZlB0cjxXZWJHUFVTaGFk
ZXJNb2R1bGU+IFdlYkdQVURldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1v
ZHVsZURlCiAgICAgcmV0dXJuIFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKG1fZGV2aWNlLT5j
cmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7IGRlc2NyaXB0b3Iu
Y29kZSB9KSk7CiB9CiAKK1JlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVRGV2aWNl
OjpjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBk
ZXNjcmlwdG9yKSBjb25zdAoreworICAgIFZlY3RvcjxHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRv
cj4gc3RhZ2VzOworICAgIGZvciAoY29uc3QgYXV0byYgc3RhZ2VEZXNjcmlwdG9yIDogZGVzY3Jp
cHRvci5zdGFnZXMpIHsKKyAgICAgICAgaWYgKCFzdGFnZURlc2NyaXB0b3IubW9kdWxlKSB7Cisg
ICAgICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGlu
ZSgpOiBXZWJHUFVTaGFkZXJNb2R1bGUgbm90IGZvdW5kISIpOworICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgc3RhZ2VzLmFwcGVuZCh7IHN0YWdlRGVzY3Jp
cHRvci5tb2R1bGUtPm1vZHVsZSgpLCBzdGFnZURlc2NyaXB0b3Iuc3RhZ2UsIHN0YWdlRGVzY3Jp
cHRvci5lbnRyeVBvaW50IH0pOworICAgIH0KKworICAgIHJldHVybiBXZWJHUFVSZW5kZXJQaXBl
bGluZTo6Y3JlYXRlKG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKHN0YWdlcyksIHN0YXRpY19jYXN0PGludD4oZGVzY3Jp
cHRvci5wcmltaXRpdmVUb3BvbG9neSkgfSkpOworfQorCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2
aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAppbmRl
eCA0ZDViMGJhYzE3NTk2MWE4ZGVlN2U5MjE4NjZiZmJhNzBmYTEzNzMxLi43YzI3ZTBiOTcyMzJk
MjhhNjA1YTA0ZWJlMzFiNjY4OTQ4ZjBiZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVEZXZpY2UuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJH
UFUpCiAKICNpbmNsdWRlICJHUFVEZXZpY2UuaCIKKyNpbmNsdWRlICJXZWJHUFVBZGFwdGVyLmgi
CiAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAg
LTM3LDE3ICszOCwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiBjbGFzcyBXZWJHUFVBZGFwdGVyOworY2xhc3MgV2ViR1BVUmVuZGVyUGlw
ZWxpbmU7CiBjbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGU7CiAKK3N0cnVjdCBXZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I7CiBzdHJ1Y3QgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsK
IAogY2xhc3MgV2ViR1BVRGV2aWNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVRGV2aWNlPiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxXZWJHUFVEZXZpY2U+IGNyZWF0ZShSZWY8V2Vi
R1BVQWRhcHRlcj4mJik7CiAKLSAgICBXZWJHUFVBZGFwdGVyJiBhZGFwdGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9hZGFwdGVyLmdldCgpOyB9CisgICAgY29uc3QgV2ViR1BVQWRhcHRlciYgYWRhcHRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYWRhcHRlci5nZXQoKTsgfQorICAgIGNvbnN0IEdQVURldmlj
ZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gKm1fZGV2aWNlOyB9CiAKICAgICBSZWZQdHI8V2Vi
R1BVU2hhZGVyTW9kdWxlPiBjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvciYmKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0
ZVJlbmRlclBpcGVsaW5lKFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmKSBjb25zdDsK
IAogcHJpdmF0ZToKICAgICBXZWJHUFVEZXZpY2UoUmVmPFdlYkdQVUFkYXB0ZXI+JiYsIFJlZlB0
cjxHUFVEZXZpY2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5pZGwKaW5kZXggZDFhOWYxYTJjOWMzM2Q1NzMwMmFkMjk3NDg2MTg1Y2I2YmUyN2Nl
Yy4uNjAzZTM3NmNiMzhlMTA0NWVkODkxYzAyZDMxZjY5NTkxYzgzYzcyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCkBAIC0zNCw2ICszNCw3
IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVUFkYXB0ZXIgYWRhcHRlcjsKIAogICAg
IFdlYkdQVVNoYWRlck1vZHVsZSBjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKKyAgICBXZWJHUFVSZW5kZXJQaXBlbGluZSBjcmVhdGVS
ZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7
CiAKIC8qIFRvIEJlIEltcGxlbWVudGVkOgogICAgIFdlYkdQVUJ1ZmZlciBjcmVhdGVCdWZmZXIo
V2ViR1BVQnVmZmVyRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKQEAgLTQ5LDggKzUwLDYgQEAKICAg
ICBXZWJHUFVJbnB1dFN0YXRlIGNyZWF0ZUlucHV0U3RhdGUoV2ViR1BVSW5wdXRTdGF0ZURlc2Ny
aXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BVQXR0YWNobWVudFN0YXRlIGNyZWF0ZUF0dGFj
aG1lbnRTdGF0ZShXZWJHUFVBdHRhY2htZW50U3RhdGVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwog
ICAgIFdlYkdQVUNvbXB1dGVQaXBlbGluZSBjcmVhdGVDb21wdXRlUGlwZWxpbmUoV2ViR1BVQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVSZW5kZXJQaXBl
bGluZSBjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Ig
ZGVzY3JpcHRvcik7Ci0KICAgICBXZWJHUFVDb21tYW5kQnVmZmVyIGNyZWF0ZUNvbW1hbmRCdWZm
ZXIoV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BV
RmVuY2UgY3JlYXRlRmVuY2UoV2ViR1BVRmVuY2VEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZURlc2NyaXB0b3JCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzEyMWE5YmE1NjgzNzQwMTQzY2VjMzA1
OTA4MmJjODJjYTU0MTU5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaApAQCAtMCwwICsxLDQxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFdlYkdQVVBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UgeworICAgIFZlY3RvcjxXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcj4g
c3RhZ2VzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGlu
ZURlc2NyaXB0b3JCYXNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZjdhNzY2MTdhYjE5NTlm
MjA3MTg4NjliNTk3ZTdmNWMyZTQ5MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbApAQCAtMCww
ICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2Vi
L2Jsb2IvbWFzdGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCisKK1sKKyAgICBDb25kaXRpb25hbD1X
RUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZGljdGlvbmFyeSBXZWJHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlIHsKKyAgICAvLyBXZWJHUFVQaXBlbGluZUxheW91dCBsYXlv
dXQ7CisgICAgc2VxdWVuY2U8V2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I+IHN0YWdlczsK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZVN0YWdlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2YzYWUwOTU2NTAwZDRm
N2IzN2M1ZTUwN2QwODdhZGYwYWRhMTY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaApAQCAtMCww
ICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BV
KQorCisjaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBXZWJHUFVTaGFk
ZXJTdGFnZUVudW0gPSB1bnNpZ25lZCBsb25nOworCitzdHJ1Y3QgV2ViR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IgeworICAgIGNvbnN0IFdlYkdQVVNoYWRlck1vZHVsZSogbW9kdWxlID0gbnVs
bHB0cjsKKyAgICBXZWJHUFVTaGFkZXJTdGFnZUVudW0gc3RhZ2U7CisgICAgU3RyaW5nIGVudHJ5
UG9pbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNmIwODgx
N2Q5MmRhN2JjY2QwMjhhYzdmZTNlY2MxMTIyMzU5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5p
ZGwKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1
d2ViL2dwdXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAorCit0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgV2ViR1BVU2hhZGVyU3RhZ2VFbnVtOworCitbCisgICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGRpY3Rpb25hcnkgV2ViR1BV
UGlwZWxpbmVTdGFnZURlc2NyaXB0b3IgeworICAgIFdlYkdQVVNoYWRlck1vZHVsZSBtb2R1bGU7
CisgICAgV2ViR1BVU2hhZGVyU3RhZ2VFbnVtIHN0YWdlOworICAgIERPTVN0cmluZyBlbnRyeVBv
aW50OworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjNjMDIwMDQyODJkN2JlYTIzMmZhZWZk
ZDc1Njg1N2Q1NGZkYTRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisg
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
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGlu
ZT4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+
JiYgcGlwZWxpbmUpCit7CisgICAgaWYgKCFwaXBlbGluZSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKFdURk1v
dmUocGlwZWxpbmUpKSk7Cit9CisKK1dlYkdQVVJlbmRlclBpcGVsaW5lOjpXZWJHUFVSZW5kZXJQ
aXBlbGluZShSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCisgICAgOiBtX3Jl
bmRlclBpcGVsaW5lKHBpcGVsaW5lKQoreworICAgIFVOVVNFRF9QQVJBTShtX3JlbmRlclBpcGVs
aW5lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5k
ZXJQaXBlbGluZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiNTEwNjJjZGQyNjE5OGMwZmEwZTk3Zjg2OTJiZjc2
YzZmYWExMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVSZW5kZXJQ
aXBlbGluZS5oIgorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR1BVUmVuZGVyUGlw
ZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVSZW5kZXJQaXBlbGluZT4geworcHVibGlj
OgorICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShSZWZQdHI8
R1BVUmVuZGVyUGlwZWxpbmU+JiYpOworCitwcml2YXRlOgorICAgIFdlYkdQVVJlbmRlclBpcGVs
aW5lKFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4mJik7CisKKyAgICBSZWZQdHI8R1BVUmVuZGVy
UGlwZWxpbmU+IG1fcmVuZGVyUGlwZWxpbmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0NmQw
MWEyOTVlMWFhZGRhMTc2ZDk1NWFkMjllZTQ5MGI0MTAzZDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwKQEAg
LTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dw
dXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAorCitbCisgICAgQ29uZGl0aW9u
YWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVLAorICAgIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUKK10gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBpcGVsaW5lIHsKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2ZWVjNWQ4YjZmZWUyOTVlNWY0
MDExMDlkYTFiYWQ4MWUyZThkNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApAQCAtMCwwICsx
LDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0cnVjdCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBXZWJH
UFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKKyAgICBlbnVtIGNsYXNzIFByaW1pdGl2ZVRvcG9s
b2d5IHsKKyAgICAgICAgUG9pbnRMaXN0LAorICAgICAgICBMaW5lTGlzdCwKKyAgICAgICAgTGlu
ZVN0cmlwLAorICAgICAgICBUcmlhbmdsZUxpc3QsCisgICAgICAgIFRyaWFuZ2xlU3RyaXAKKyAg
ICB9OworCisgICAgUHJpbWl0aXZlVG9wb2xvZ3kgcHJpbWl0aXZlVG9wb2xvZ3k7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU3OGE3NjZkM2JhOTAwZTIwODgy
YTJhN2VmZGIyZjdmNWMyMzc5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwKQEAgLTAsMCAr
MSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9i
bG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAorCitlbnVtIFdlYkdQVVByaW1pdGl2ZVRv
cG9sb2d5IHsKKyAgICAicG9pbnRMaXN0IiwKKyAgICAibGluZUxpc3QiLAorICAgICJsaW5lU3Ry
aXAiLAorICAgICJ0cmlhbmdsZUxpc3QiLAorICAgICJ0cmlhbmdsZVN0cmlwIgorfTsKKworZGlj
dGlvbmFyeSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBXZWJHUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlIHsKKyAgICBXZWJHUFVQcmltaXRpdmVUb3BvbG9neSBwcmltaXRpdmVUb3Bv
bG9neTsKKyAgICAvKiBUbyBCZSBJbXBsZW1lbnRlZDoKKyAgICBzZXF1ZW5jZTxXZWJHUFVCbGVu
ZFN0YXRlPiBibGVuZFN0YXRlczsKKyAgICBXZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZSBkZXB0aFN0
ZW5jaWxTdGF0ZTsKKyAgICBXZWJHUFVJbnB1dFN0YXRlIGlucHV0U3RhdGU7CisgICAgV2ViR1BV
QXR0YWNobWVudHNTdGF0ZSBhdHRhY2htZW50c1N0YXRlOyAqLworICAgIC8vIFRPRE8gb3RoZXIg
cHJvcGVydGllcworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMGJkMjc2NDNhZWIxZTVlZWQxNjI0
NjQ5MDYxOWZkNjExY2RlNGM3Yy4uZWMzZTA3NmQ1YjJkMDM0MTljMTg3MWQwNjY0MWU0M2ZlOWVl
YjI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMyLDEzICszMiwxOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJHUFVSZW5kZXJpbmdDb250ZXh0PiBXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoQ2FudmFzQmFzZSYgY2FudmFzKQogewotICAgIGF1dG8g
Y29udGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJHUFVSZW5kZXJpbmdDb250ZXh0PihuZXcgV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dChjYW52YXMpKTsKKyAgICBhdXRvIHN3YXBDaGFpbiA9IEdQVVN3
YXBDaGFpbjo6Y3JlYXRlKCk7CisKKyAgICBpZiAoIXN3YXBDaGFpbikKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBhdXRvIGNvbnRleHQgPSBzdGQ6OnVuaXF1ZV9wdHI8V2ViR1BVUmVu
ZGVyaW5nQ29udGV4dD4obmV3IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQoY2FudmFzLCBXVEZNb3Zl
KHN3YXBDaGFpbikpKTsKICAgICBjb250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1
cm4gY29udGV4dDsKIH0KIAotV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6V2ViR1BVUmVuZGVyaW5n
Q29udGV4dChDYW52YXNCYXNlJiBjYW52YXMpCi0gICAgOiBXZWJHUFVTd2FwQ2hhaW4oY2FudmFz
KQorV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6V2ViR1BVUmVuZGVyaW5nQ29udGV4dChDYW52YXNC
YXNlJiBjYW52YXMsIFJlZlB0cjxHUFVTd2FwQ2hhaW4+JiYgc3dhcENoYWluKQorICAgIDogV2Vi
R1BVU3dhcENoYWluKGNhbnZhcywgV1RGTW92ZShzd2FwQ2hhaW4pKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0
LmgKaW5kZXggNDlhN2RhZjEzODZhMzE4NjY5YWI5MzJjYWEzZmIyMmI1ZjkxZWU2Ny4uNmYxYTdk
OTdkODM0ZjNiZjM4ZTBkYjA2YmIzOWMwMTEzYTdjMjJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaApAQCAtMzYs
NyArMzYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0PiBjcmVhdGUoQ2FudmFzQmFzZSYpOwogCiBwcml2YXRlOgotICAgIFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYpOworICAgIFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQoQ2FudmFzQmFzZSYsIFJlZlB0cjxHUFVTd2FwQ2hhaW4+JiYpOwogICAgIC8vIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQKICAgICBib29sIGlzV2ViR1BVKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIC8vIEFjdGl2ZURPTU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaAppbmRleCA5Nzk4MjkwOTVlNDlmZGNi
YTVmMDkwNTliY2IyMTNhMWJkMjAxMjIyLi41MDYwZDU2YThjNTk3MDliYTEwOWFmYjhlZDkyNzcx
MTgyYWQ1ZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVTaGFkZXJNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVTaGFkZXJNb2R1bGUuaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJHUFUpCiAK
ICNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9B
cnJheUJ1ZmZlci5oPgorCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAKQEAgLTM4LDYgKzM4LDggQEAgY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxlIDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU2hhZGVyTW9kdWxlPiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZShSZWZQdHI8R1BVU2hhZGVyTW9k
dWxlPiYmKTsKIAorICAgIGNvbnN0IEdQVVNoYWRlck1vZHVsZSYgbW9kdWxlKCkgY29uc3QgeyBy
ZXR1cm4gKm1fbW9kdWxlOyB9CisKIHByaXZhdGU6CiAgICAgV2ViR1BVU2hhZGVyTW9kdWxlKFJl
ZlB0cjxHUFVTaGFkZXJNb2R1bGU+JiYpOwogCkBAIC00NywzICs0OSw0IEBAIHByaXZhdGU6CiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MTdkNDJmNTk2OGE5ODc4N2E5Zjk2OTk4NzdlMDc1ZjUwNDJiYzI2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3Rh
Z2UuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBXZWJHUFVTaGFkZXJTdGFnZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkdQVVNoYWRlclN0YWdlPiB7CitwdWJsaWM6CisgICAgZW51bSB7CisgICAgICAgIFZFUlRF
WCA9IDAsCisgICAgICAgIEZSQUdNRU5UID0gMSwKKyAgICAgICAgQ09NUFVURSA9IDIKKyAgICB9
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
clN0YWdlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0
YWdlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jYTM3YTM3NDEyZDQ5MzAxYmJmNTc4MTdlODU2Yzk2ZDA2MzRj
ZTZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU2hhZGVyU3RhZ2UuaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworLy8gaHR0cHM6
Ly9naXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWduL3NrZXRjaC53ZWJp
ZGwKKwordHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKKworWworICAgIENvbmRpdGlvbmFsPVdF
QkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVSwKKyAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlCitdIGludGVyZmFjZSBXZWJHUFVTaGFkZXJTdGFnZSB7CisgICAgY29uc3QgdTMy
IFZFUlRFWCA9IDA7CisgICAgY29uc3QgdTMyIEZSQUdNRU5UID0gMTsKKyAgICBjb25zdCB1MzIg
Q09NUFVURSA9IDI7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVU3dhcENoYWluLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVN3YXBDaGFpbi5jcHAKaW5kZXggMDM4MmFlN2JkZmM3NWI1YTUyMDhlM2I1ZTcwNWFmZWVh
YjlmOGU0OS4uOGFhNmE2ODJiZTQ3OTk0ZWRiODhlNjFlOGZiMzI0ZGJmMDRjMTBkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwCkBA
IC0yOCwxMiArMjgsMTcgQEAKIAogI2lmIEVOQUJMRShXRUJHUFUpCiAKKyNpbmNsdWRlICJXZWJH
UFVEZXZpY2UuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXZWJHUFVTd2FwQ2hhaW46On5X
ZWJHUFVTd2FwQ2hhaW4oKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViR1BVU3dhcENoYWluOjpjb25m
aWd1cmUoY29uc3QgRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3ZvaWQgV2ViR1BVU3dhcENoYWlu
Ojpjb25maWd1cmUoRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCiB7CisgICAgaWYgKGRlc2NyaXB0
b3IuZGV2aWNlKQorICAgICAgICBtX3N3YXBDaGFpbi0+c2V0RGV2aWNlKGRlc2NyaXB0b3IuZGV2
aWNlLT5kZXZpY2UoKSk7CisKICAgICByZXNoYXBlKGRlc2NyaXB0b3Iud2lkdGgsIGRlc2NyaXB0
b3IuaGVpZ2h0KTsKIH0KIApAQCAtNDQsMTMgKzQ5LDEyIEBAIHZvaWQgV2ViR1BVU3dhcENoYWlu
OjpwcmVzZW50KCkKIAogdm9pZCBXZWJHUFVTd2FwQ2hhaW46OnJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KQogewotICAgIG1fd2lkdGggPSB3aWR0aDsKLSAgICBtX2hlaWdodCA9IGhlaWdo
dDsKKyAgICBtX3N3YXBDaGFpbi0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCBX
ZWJHUFVTd2FwQ2hhaW46Om1hcmtMYXllckNvbXBvc2l0ZWQoKQogewotICAgIC8vIEZJWE1FOiBV
bmltcGxlbWVudGVkIHN0dWIuCisgICAgbV9zd2FwQ2hhaW4tPnByZXNlbnQoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTd2FwQ2hhaW4uaAppbmRleCBmNTZkMzYxZjg1ZDRiYmIwNGI3MDYwOTMwMDRjODk0ZjJm
MDMzODQ3Li4wNjc5NTA2MjE1YmJmMmU4MThiNTMxZWYxNmRjNGJlMjI4MmYwNDM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaApAQCAtMjgs
MjUgKzI4LDI5IEBACiAjaWYgRU5BQkxFKFdFQkdQVSkKIAogI2luY2x1ZGUgIkdQVUJhc2VkQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkdQVVN3YXBDaGFpbi5oIgorI2luY2x1
ZGUgIldlYkdQVURldmljZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdQ
VVN3YXBDaGFpbiA6IHB1YmxpYyBHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQgewogcHVi
bGljOgogICAgIHN0cnVjdCBEZXNjcmlwdG9yIHsKKyAgICAgICAgY29uc3QgV2ViR1BVRGV2aWNl
KiBkZXZpY2UgPSBudWxscHRyOwogICAgICAgICAvLyBGSVhNRTogTW9yZSB0ZXh0dXJlIHByb3Bl
cnRpZXMuCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgd2lkdGg7CiAgICAgICAgIHVuc2lnbmVkIGxv
bmcgaGVpZ2h0OwogICAgIH07CiAKICAgICB2aXJ0dWFsIH5XZWJHUFVTd2FwQ2hhaW4oKSA9IDA7
Ci0gICAgdm9pZCBjb25maWd1cmUoY29uc3QgRGVzY3JpcHRvciYpOworICAgIHZvaWQgY29uZmln
dXJlKERlc2NyaXB0b3ImJik7CiAgICAgLy8gRklYTUU6IFdlYkdQVVRleHR1cmUgZ2V0TmV4dFRl
eHR1cmUoKTsKICAgICB2b2lkIHByZXNlbnQoKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdQVVN3
YXBDaGFpbihDYW52YXNCYXNlJiBjYW52YXMpCisgICAgV2ViR1BVU3dhcENoYWluKENhbnZhc0Jh
c2UmIGNhbnZhcywgUmVmUHRyPEdQVVN3YXBDaGFpbj4mJiBzd2FwQ2hhaW4pCiAgICAgICAgIDog
R1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0KGNhbnZhcykKKyAgICAgICAgLCBtX3N3YXBD
aGFpbihXVEZNb3ZlKHN3YXBDaGFpbikpCiAgICAgewogICAgIH0KIApAQCAtNjMsOCArNjcsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlIHsgfQogICAgIGJvb2wgY2FuU3Vz
cGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICB1bnNpZ25lZCBsb25nIG1fd2lkdGg7Ci0gICAgdW5zaWduZWQgbG9uZyBtX2hl
aWdodDsKKyAgICBSZWZQdHI8R1BVU3dhcENoYWluPiBtX3N3YXBDaGFpbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTd2FwQ2hhaW4uaWRsCmluZGV4IDk5Y2E5MGU0M2NhNjIzNjhlMWY5YWFlYmExMzQzZmY0
M2UyYWNmMjAuLmVlZjg1ZWJjNWJkMjc0MDBhNzY1ODM5Njg4ZDVhOWNjYjkwMTdiZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbApA
QCAtMzYsNyArMzYsMTEgQEAKIAogdHlwZWRlZiB1bnNpZ25lZCBsb25nIHUzMjsKIAotZGljdGlv
bmFyeSBXZWJHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yIHsKK1sKKyAgICBDb25kaXRpb25hbD1XRUJH
UFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZGljdGlvbmFyeSBXZWJHUFVTd2Fw
Q2hhaW5EZXNjcmlwdG9yIHsKKyAgICBXZWJHUFVEZXZpY2UgZGV2aWNlOyAvLyBGSVhNRTogUHJv
cG9zZSB0aGlzIGFkZGl0aW9uIHRvIElETC4KICAgICAvLyBXZWJHUFVUZXh0dXJlVXNhZ2VGbGFn
cyB1c2FnZTsKICAgICAvLyBXZWJHUFVUZXh0dXJlRm9ybWF0RW51bSBmb3JtYXQ7CiAgICAgdTMy
IHdpZHRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2Ev
R1BVUmVuZGVyUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29h
L0dQVVJlbmRlclBpcGVsaW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc5MmE5MzE0MDhmMjY1YzlkYjRiYjRi
YTBiNGEyNTAxOTJhOWY3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lLmgKQEAgLTAsMCArMSw2NiBAQAorLyoK
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
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKworI2lmIFVTRShNRVRBTCkKK09CSkNfUFJPVE9DT0woTVRMUmVuZGVy
UGlwZWxpbmVTdGF0ZSk7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBH
UFVEZXZpY2U7CisKK3N0cnVjdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7CisKKyNpZiBV
U0UoTUVUQUwpCit1c2luZyBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lID0gTVRMUmVuZGVyUGlwZWxp
bmVTdGF0ZTsKK3VzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciA9IFJldGFpblB0
cjxNVExSZW5kZXJQaXBlbGluZVN0YXRlPjsKKyNlbHNlCit1c2luZyBQbGF0Zm9ybVJlbmRlclBp
cGVsaW5lID0gdm9pZDsKK3VzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciA9IFJl
ZlB0cjx2b2lkPjsKKyNlbmRpZgorCitjbGFzcyBHUFVSZW5kZXJQaXBlbGluZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPEdQVVJlbmRlclBpcGVsaW5lPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0
cjxHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlKGNvbnN0IEdQVURldmljZSYsIEdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciYmKTsKKworICAgIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmUgKnBsYXRm
b3JtUmVuZGVyUGlwZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtUmVuZGVyUGlwZWxp
bmUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBHUFVSZW5kZXJQaXBlbGluZShQbGF0Zm9ybVJl
bmRlclBpcGVsaW5lU21hcnRQdHImJik7CisKKyAgICBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21h
cnRQdHIgbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM2NGQyZjFhN2RlOTgwYzk5YTExMzNjNzJhYTdiZGJjYWVlMDI5MjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVS
ZW5kZXJQaXBlbGluZU1ldGFsLm1tCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVSZW5kZXJQaXBlbGluZS5oIgorCisjaWYgRU5B
QkxFKFdFQkdQVSkKKworI2ltcG9ydCAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCisj
aW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJXZWJHUFVTaGFkZXJTdGFnZS5oIgorCisjaW1w
b3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgYm9vbCBzZXRGdW5jdGlvbnNGb3JQaXBl
bGluZURlc2NyaXB0b3IoY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lLCBNVExSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IgKm10bERlc2NyaXB0b3IsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciYmIGRlc2NyaXB0b3IpCit7CisjaWYgTE9HX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFN
KGZ1bmN0aW9uTmFtZSk7CisjZW5kaWYKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHN0YWdlRGVzY3Jp
cHRvciA6IGRlc2NyaXB0b3Iuc3RhZ2VzKSB7CisgICAgICAgIGF1dG8gbXRsTGlicmFyeSA9IHJl
dGFpblB0cihzdGFnZURlc2NyaXB0b3IubW9kdWxlLnBsYXRmb3JtU2hhZGVyTW9kdWxlKCkpOwor
CisgICAgICAgIGlmICghbXRsTGlicmFyeSkgeworICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVz
OiBNVExMaWJyYXJ5IGRvZXMgbm90IGV4aXN0ISIsIGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGZ1bmN0aW9uID0gYWRv
cHROUyhbbXRsTGlicmFyeSBuZXdGdW5jdGlvbldpdGhOYW1lOnN0YWdlRGVzY3JpcHRvci5lbnRy
eVBvaW50XSk7CisKKyAgICAgICAgaWYgKCFmdW5jdGlvbikgeworICAgICAgICAgICAgTE9HKFdl
YkdQVSwgIiVzOiBNVExGdW5jdGlvbiAlcyBub3QgZm91bmQhIiwgZnVuY3Rpb25OYW1lLCBzdGFn
ZURlc2NyaXB0b3IuZW50cnlQb2ludC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoc3RhZ2VEZXNjcmlwdG9yLnN0
YWdlKSB7CisgICAgICAgIGNhc2UgV2ViR1BVU2hhZGVyU3RhZ2U6OlZFUlRFWDoKKyAgICAgICAg
ICAgIFttdGxEZXNjcmlwdG9yIHNldFZlcnRleEZ1bmN0aW9uOmZ1bmN0aW9uLmdldCgpXTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYkdQVVNoYWRlclN0YWdlOjpGUkFHTUVO
VDoKKyAgICAgICAgICAgIFttdGxEZXNjcmlwdG9yIHNldEZyYWdtZW50RnVuY3Rpb246ZnVuY3Rp
b24uZ2V0KCldOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgc2hhZGVyIHN0YWdlIHNwZWNpZmllZCEiLCBm
dW5jdGlvbk5hbWUpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworUmVmUHRyPEdQ
VVJlbmRlclBpcGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKGNvbnN0IEdQVURldmlj
ZSYgZGV2aWNlLCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQorewor
ICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVSZW5kZXJQaXBlbGluZTo6
Y3JlYXRlKCkiOworCisgICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgeworICAgICAg
ICBMT0coV2ViR1BVLCAiJXM6IE1UTERldmljZSBkb2VzIG5vdCBleGlzdCEiLCBmdW5jdGlvbk5h
bWUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8TVRM
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBtdGxEZXNjcmlwdG9yOworCisgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOworCisgICAgbXRsRGVzY3JpcHRvciA9IGFkb3B0TlMoW01UTFJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciBuZXddKTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CisKKyAgICBpZiAoIW10bERlc2NyaXB0b3IpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBFcnJvciBjcmVhdGluZyBNVExEZXNjcmlwdG9yISIsIGZ1bmN0aW9uTmFtZSk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmICghc2V0RnVuY3Rpb25zRm9yUGlw
ZWxpbmVEZXNjcmlwdG9yKGZ1bmN0aW9uTmFtZSwgbXRsRGVzY3JpcHRvci5nZXQoKSwgV1RGTW92
ZShkZXNjcmlwdG9yKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gRklYTUU6
IEdldCB0aGUgcGl4ZWxGb3JtYXQgYXMgY29uZmlndXJlZCBmb3IgdGhlIGNvbnRleHQvQ0FNZXRh
bExheWVyLgorICAgIG10bERlc2NyaXB0b3IuZ2V0KCkuY29sb3JBdHRhY2htZW50c1swXS5waXhl
bEZvcm1hdCA9IE1UTFBpeGVsRm9ybWF0QkdSQThVbm9ybTsKKworICAgIFBsYXRmb3JtUmVuZGVy
UGlwZWxpbmVTbWFydFB0ciBwaXBlbGluZTsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKKworICAgIGlmIChbbXRsRGVzY3JpcHRvciB2ZXJ0ZXhGdW5jdGlvbl0pCisgICAgICAg
IHBpcGVsaW5lID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3UmVuZGVyUGlw
ZWxpbmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm10bERlc2NyaXB0b3IuZ2V0KCkgZXJyb3I6bmlsXSk7
CisgICAgZWxzZQorICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE5vIHZlcnRleCBmdW5jdGlvbiBh
c3NpZ25lZCBmb3IgTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yISIsIGZ1bmN0aW9uTmFtZSk7
CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgaWYgKCFwaXBlbGluZSkg
eworICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEVycm9yIGNyZWF0aW5nIE1UTFJlbmRlclBpcGVs
aW5lU3RhdGUhIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVSZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBp
cGVsaW5lKSkpOworfQorCitHUFVSZW5kZXJQaXBlbGluZTo6R1BVUmVuZGVyUGlwZWxpbmUoUGxh
dGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyJiYgcGlwZWxpbmUpCisgICAgOiBtX3BsYXRmb3Jt
UmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpCit7CisgICAgVU5VU0VEX1BBUkFNKG1f
cGxhdGZvcm1SZW5kZXJQaXBlbGluZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiZTYyZTM5OGVhMTYwZjRi
NGM2Nzk5YjE4N2Q0YmVmZDIxODgzNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW4uaApAQCAtMCwwICsxLDY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFVTRShN
RVRBTCkKK09CSkNfQ0xBU1MgQ0FNZXRhbExheWVyOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgR1BVRGV2aWNlOworCisjaWYgVVNFKE1FVEFMKQordXNpbmcgUGxhdGZv
cm1Td2FwTGF5ZXIgPSBDQU1ldGFsTGF5ZXI7Cit1c2luZyBQbGF0Zm9ybVN3YXBMYXllclNtYXJ0
UHRyID0gUmV0YWluUHRyPENBTWV0YWxMYXllcj47CisjZWxzZQordXNpbmcgUGxhdGZvcm1Td2Fw
TGF5ZXIgPSB2b2lkOwordXNpbmcgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciA9IFJlZlB0cjx2
b2lkPjsKKyNlbmRpZgorCitjbGFzcyBHUFVTd2FwQ2hhaW4gOiBwdWJsaWMgUmVmQ291bnRlZDxH
UFVTd2FwQ2hhaW4+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVVN3YXBDaGFpbj4g
Y3JlYXRlKCk7CisKKyAgICB2b2lkIHNldERldmljZShjb25zdCBHUFVEZXZpY2UmKTsKKyAgICB2
b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIHByZXNlbnQoKTsK
KworICAgIFBsYXRmb3JtU3dhcExheWVyICpwbGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybVN3YXBMYXllci5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIEdQVVN3YXBDaGFp
bihQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRyJiYpOworCisgICAgUGxhdGZvcm1Td2FwTGF5ZXJT
bWFydFB0ciBtX3BsYXRmb3JtU3dhcExheWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2RmZDE2MmViYjgyMzE3N2U0MzVjYjk2N2EyYzYzY2Y3YjU1ZGI5NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFs
Lm1tCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIkdQVVN3YXBDaGFpbi5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2ltcG9ydCAi
R1BVRGV2aWNlLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCisKKyNpbXBvcnQgPE1ldGFsL01ldGFs
Lmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPHd0Zi9CbG9j
a09iakNFeGNlcHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPEdQVVN3
YXBDaGFpbj4gR1BVU3dhcENoYWluOjpjcmVhdGUoKQoreworICAgIFBsYXRmb3JtU3dhcExheWVy
U21hcnRQdHIgcGxhdGZvcm1MYXllcjsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKKworICAgIHBsYXRmb3JtTGF5ZXIgPSBhZG9wdE5TKFtbQ0FNZXRhbExheWVyIGFsbG9jXSBp
bml0XSk7CisKKyAgICBbcGxhdGZvcm1MYXllciBzZXRPcGFxdWU6MF07CisgICAgW3BsYXRmb3Jt
TGF5ZXIgc2V0TmFtZTpAIldlYkdQVSBMYXllciJdOworCisgICAgLy8gRklYTUU6IEZvciBub3cs
IGRlZmF1bHQgdG8gdGhlc2Ugc2V0dGluZ3MuCisgICAgW3BsYXRmb3JtTGF5ZXIgc2V0UGl4ZWxG
b3JtYXQ6TVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtXTsKKyAgICBbcGxhdGZvcm1MYXllciBzZXRG
cmFtZWJ1ZmZlck9ubHk6WUVTXTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisK
KyAgICBpZiAoIXBsYXRmb3JtTGF5ZXIpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVN3YXBD
aGFpbjo6Y3JlYXRlKCk6IFVuYWJsZSB0byBjcmVhdGUgQ0FNZXRhbExheWVyISIpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVN3
YXBDaGFpbihXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKSk7Cit9CisKK0dQVVN3YXBDaGFpbjo6R1BV
U3dhcENoYWluKFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHImJiBwbGF0Zm9ybUxheWVyKQorICAg
IDogbV9wbGF0Zm9ybVN3YXBMYXllcihXVEZNb3ZlKHBsYXRmb3JtTGF5ZXIpKQoreworfQorCit2
b2lkIEdQVVN3YXBDaGFpbjo6c2V0RGV2aWNlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQorewor
ICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwg
IkdQVVN3YXBDaGFpbjo6c2V0RGV2aWNlKCk6IE1UTERldmljZSBkb2VzIG5vdCBleGlzdCEiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFttX3BsYXRmb3JtU3dhcExheWVyIHNldERl
dmljZTpkZXZpY2UucGxhdGZvcm1EZXZpY2UoKV07Cit9CisKK3ZvaWQgR1BVU3dhcENoYWluOjpy
ZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBbbV9wbGF0Zm9ybVN3YXBMYXll
ciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCB3aWR0aCwgaGVpZ2h0KV07CisgICAgW21fcGxh
dGZvcm1Td2FwTGF5ZXIgc2V0RHJhd2FibGVTaXplOkNHU2l6ZU1ha2Uod2lkdGgsIGhlaWdodCld
OworfQorCit2b2lkIEdQVVN3YXBDaGFpbjo6cHJlc2VudCgpCit7CisgICAgLy8gRklYTUU6IFVu
aW1wbGVtZW50ZWQgc3R1Yi4KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZDUwMjc3NzJiMWU2ZmFjNmJmOTQ4
ZmUyZjcwMmQ4YTVkMmYxOGI5MC4uZWEzZThmZTE5ZGIwZTFmMWQ2YzE0NDkyOGVhMmI3NDNlMjc5
MzQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTMwMiw2ICszMDIsNyBAQCBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmNwcAogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4
dC5jcHAKK01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAogTW9kdWxlcy93
ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENo
YWluLmNwcAogCkBAIC0zMTk1LDkgKzMxOTYsMTQgQEAgSlNXZWJHUFUuY3BwCiBKU1dlYkdQVUFk
YXB0ZXIuY3BwCiBKU1dlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLmNwcAogSlNXZWJHUFVEZXZpY2Uu
Y3BwCitKU1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuY3BwCitKU1dlYkdQVVBpcGVsaW5l
U3RhZ2VEZXNjcmlwdG9yLmNwcAogSlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcAorSlNXZWJH
UFVSZW5kZXJQaXBlbGluZS5jcHAKK0pTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNw
cAogSlNXZWJHUFVTaGFkZXJNb2R1bGUuY3BwCiBKU1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0
b3IuY3BwCitKU1dlYkdQVVNoYWRlclN0YWdlLmNwcAogSlNXZWJHUFVTd2FwQ2hhaW4uY3BwCiBK
U1dlYk1ldGFsQnVmZmVyLmNwcAogSlNXZWJNZXRhbENvbW1hbmRCdWZmZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAppbmRleCAxNDc0ZTU5MjU5NTA0OTM3YWI4Y2NlNTJmNTY0N2JkODdmOGUw
YTc0Li4zMjlmYTg2MDYzODAzNjBlNGVlOWJlZGEwNzAwNzY5MWU4NTdhZGZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKQEAgLTI4LDcgKzI4LDkgQEAgTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQ
bHVnaW5SZXBsYWNlbWVudC5jcHAKIE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VN
YW5hZ2VyQ29jb2EubW0KIAogTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0K
K01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KIE1vZHVsZXMv
d2ViZ3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tCitNb2R1bGVzL3dlYmdwdS9jb2Nv
YS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQogCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5
T2JqZWN0SU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NjkwNTczOTMxNTVlMDJhOWVmNTJlNmRiMmI5YmU3MDA1MTdjZTY1Yy4uMTNhNjg1NGU3Mjg3YjNm
YTA5M2VkMDJiNTgwNjNlZTI5ODE4MmUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM3NzksNiArMTM3NzksOSBAQAogCQlE
MDQ1QUQyMTIxNjgyNDc0MDAwQTZFOUIgLyogV2ViTWV0YWxCdWZmZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViTWV0YWxCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEMDQ1QUQyMjIxNjgyNDc0MDAwQTZFOUIgLyogV2ViTWV0YWxDb21tYW5kQnVmZmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMDQ1QUQyMzIxNjgyNDc1MDAwQTZFOUIgLyogV2ViTWV0YWxDb21tYW5kUXVl
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWV0YWxDb21tYW5kUXVldWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDQ2RkI2NTIxOEQwNzNDMDBDQjhGNjIgLyogR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDQ2RkI2NzIx
OEQxODAzMDBDQjhGNjIgLyogR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRDA0NkZCNjgyMThEMThDRDAwQ0I4RjYyIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRv
ckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDU3M0Q0MjIxN0VCODFFMDBEMUJFOTEgLyogR1BV
TGVnYWN5VGV4dHVyZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gR1BVTGVnYWN5VGV4dHVyZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEMDVDRUQyNzBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXRCbG9ja0NvbW1hbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDVDRUQyODBBNDBCQjJDMDBDNUFG
MzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGb3JtYXRCbG9ja0NvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEzODAyLDYgKzEzODA1LDggQEAKIAkJRDA5M0QyMjUyMTc5NTFENDAwMzI5MjE3IC8qIFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyaW5nQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDkzRDIyNzIxNzk1MUQ0MDAzMjky
MTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwOTNEMjI5MjE3OTU0MTYw
MDMyOTIxNyAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlEMDk3MjdCNTIxODdGNDQzMDA5NDJGM0EgLyogR1BVU3dhcENoYWluLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEdQVVN3YXBDaGFpbi5oOyBwYXRoID0gY29jb2EvR1BVU3dhcENoYWluLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwOTcyN0I2MjE4N0Y0NDMwMDk0MkYzQSAvKiBHUFVTd2Fw
Q2hhaW5NZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVN3YXBDaGFpbk1ldGFsLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDk3MjdDMjIxOEE0NzI5MDA5NDJGM0Eg
LyogR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwOTcyN0NB
MjE4QkQ3QTUwMDk0MkYzQSAvKiBHUFVEZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BV
RGV2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBBMjBENTQyMDkyQTBB
NjAwRTBDMjU5IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzgxMiw2ICsxMzgxNywxOSBAQAogCQlEMEJDNTQ0ODE0
NDNBQzRBMDBFMTA1REEgLyogQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwQkQ0RjVBMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25D
b21tYW5kSU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3Rh
dGlvbkNvbW1hbmRJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEJENEY1
QjE0MDg4NTBGMDA2ODM5QjYgLyogRGljdGF0aW9uQ29tbWFuZElPUy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEaWN0YXRpb25Db21tYW5kSU9TLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUQwQzQxOUVCMjE4M0NGQTIwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGlu
ZVN0YWdlRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVQaXBlbGluZVN0YWdlRGVz
Y3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlFQzIxODNDRkEy
MDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQ
VVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRDBDNDE5RUUyMTgzRDlDODAwOUVDMURFIC8qIFdlYkdQVVNoYWRlclN0YWdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkdQVVNoYWRlclN0YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUQwQzQxOUVGMjE4M0Q5QzgwMDlFQzFERSAvKiBXZWJHUFVTaGFkZXJTdGFnZS5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViR1BVU2hhZGVyU3RhZ2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlE
MEM0MTlGMDIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUYxMjE4M0VCMzEwMDlFQzFERSAvKiBXZWJHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JC
YXNlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RjIyMTgzRUZFQzAw
OUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRDBDNDE5RjMyMTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RjcyMTg0MDREQTAwOUVDMURFIC8q
IFdlYkdQVVJlbmRlclBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVs
aW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUY4MjE4NDA0REEwMDlF
QzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJH
UFVSZW5kZXJQaXBlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQx
OUY5MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0
MTlGQTIxODQwRjZDMDA5RUMxREUgLyogR1BVUmVuZGVyUGlwZWxpbmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gR1BVUmVuZGVyUGlwZWxpbmUuaDsgcGF0aCA9IGNvY29hL0dQVVJlbmRlclBpcGVsaW5lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUZCMjE4NDBGNkMwMDlFQzFERSAv
KiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVu
ZGVyUGlwZWxpbmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBDQUFF
OTgyMTY4MjRBNjAwMUM5MUM3IC8qIFdlYk1ldGFsQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJNZXRhbEJ1
ZmZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTlBMjE2ODI0QTYw
MDFDOTFDNyAvKiBXZWJNZXRhbENvbW1hbmRCdWZmZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFu
ZEJ1ZmZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTlCMjE2ODI0
QTcwMDFDOTFDNyAvKiBXZWJNZXRhbENvbW1hbmRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJN
ZXRhbENvbW1hbmRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU0NDgs
OCArMjU0NjYsMTMgQEAKIAkJCQlEMDBGNTk0MjIxNkVDQzdBMDAwRDcxREIgLyogRE9NV2luZG93
V2ViR1BVLmlkbCAqLywKIAkJCQlEMDk3MjdDQTIxOEJEN0E1MDA5NDJGM0EgLyogR1BVRGV2aWNl
LmNwcCAqLywKIAkJCQlEMDYxNUZDRjIxN0ZGMTg1MDA4QTQ4QTggLyogR1BVRGV2aWNlLmggKi8s
CisJCQkJRDA0NkZCNjgyMThEMThDRDAwQ0I4RjYyIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UuaCAqLywKKwkJCQlEMDQ2RkI2NzIxOEQxODAzMDBDQjhGNjIgLyogR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IuaCAqLywKKwkJCQlEMEM0MTlGQTIxODQwRjZDMDA5RUMxREUgLyogR1BVUmVu
ZGVyUGlwZWxpbmUuaCAqLywKKwkJCQlEMDQ2RkI2NTIxOEQwNzNDMDBDQjhGNjIgLyogR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCiAJCQkJRDA2MEQ4ODgyMTgyODBDMTAwMzM5MzE4
IC8qIEdQVVNoYWRlck1vZHVsZS5oICovLAogCQkJCUQwOTcyN0MyMjE4QTQ3MjkwMDk0MkYzQSAv
KiBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8sCisJCQkJRDA5NzI3QjUyMTg3RjQ0MzAw
OTQyRjNBIC8qIEdQVVN3YXBDaGFpbi5oICovLAogCQkJCUQwMEY1OTQ3MjE2RUZFNTQwMDBENzFE
QiAvKiBXZWJHUFUuY3BwICovLAogCQkJCUQwMEY1OTQ2MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJH
UFUuaCAqLywKIAkJCQlEMDBGNTk0ODIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmlkbCAqLywK
QEAgLTI1NDYxLDE0ICsyNTQ4NCwyNSBAQAogCQkJCUQwMEY1OTUzMjE3MDFEOEMwMDBENzFEQiAv
KiBXZWJHUFVEZXZpY2UuY3BwICovLAogCQkJCUQwMEY1OTUyMjE3MDFEOEMwMDBENzFEQiAvKiBX
ZWJHUFVEZXZpY2UuaCAqLywKIAkJCQlEMDBGNTk1NDIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BV
RGV2aWNlLmlkbCAqLywKKwkJCQlEMEM0MTlGMDIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovLAorCQkJCUQwQzQxOUYxMjE4M0VCMzEwMDlFQzFERSAv
KiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbCAqLywKKwkJCQlEMEM0MTlFQjIxODND
RkEyMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCAqLywKKwkJCQlE
MEM0MTlFQzIxODNDRkEyMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3Iu
aWRsICovLAogCQkJCUQwOTNEMjI5MjE3OTU0MTYwMDMyOTIxNyAvKiBXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmNwcCAqLywKIAkJCQlEMDkzRDIyNTIxNzk1MUQ0MDAzMjkyMTcgLyogV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dC5oICovLAogCQkJCUQwOTNEMjI3MjE3OTUxRDQwMDMyOTIxNyAvKiBXZWJH
UFVSZW5kZXJpbmdDb250ZXh0LmlkbCAqLywKKwkJCQlEMEM0MTlGODIxODQwNERBMDA5RUMxREUg
LyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwICovLAorCQkJCUQwQzQxOUY3MjE4NDA0REEwMDlF
QzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5oICovLAorCQkJCUQwQzQxOUY5MjE4NDA0REEw
MDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgKi8sCisJCQkJRDBDNDE5RjIyMTgz
RUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovLAorCQkJ
CUQwQzQxOUYzMjE4M0VGRUMwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IuaWRsICovLAogCQkJCUQwNjE1RkNEMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJN
b2R1bGUuY3BwICovLAogCQkJCUQwNjE1RkNDMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFk
ZXJNb2R1bGUuaCAqLywKIAkJCQlEMDYxNUZDRTIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hh
ZGVyTW9kdWxlLmlkbCAqLywKIAkJCQlEMDYwRDg4NzIxODI2OTcwMDAzMzkzMTggLyogV2ViR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oICovLAogCQkJCUQwNjBEODg0MjE4MjVENUYwMDMzOTMx
OCAvKiBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCAqLywKKwkJCQlEMEM0MTlFRTIx
ODNEOUM4MDA5RUMxREUgLyogV2ViR1BVU2hhZGVyU3RhZ2UuaCAqLywKKwkJCQlEMEM0MTlFRjIx
ODNEOUM4MDA5RUMxREUgLyogV2ViR1BVU2hhZGVyU3RhZ2UuaWRsICovLAogCQkJCUQwREEwQkU1
MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uY3BwICovLAogCQkJCUQwREEwQkU0
MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uaCAqLywKIAkJCQlEMERBMEJFNjIx
NzkzMEUyMDA3RkUyQUMgLyogV2ViR1BVU3dhcENoYWluLmlkbCAqLywKQEAgLTI1NDgwLDcgKzI1
NTE0LDkgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRDA2MTVG
RDEyMTdGRjFFMTAwOEE0OEE4IC8qIEdQVURldmljZU1ldGFsLm1tICovLAorCQkJCUQwQzQxOUZC
MjE4NDBGNkMwMDlFQzFERSAvKiBHUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICovLAogCQkJCUQw
NjBEODg5MjE4MjgwQzEwMDMzOTMxOCAvKiBHUFVTaGFkZXJNb2R1bGVNZXRhbC5tbSAqLywKKwkJ
CQlEMDk3MjdCNjIxODdGNDQzMDA5NDJGM0EgLyogR1BVU3dhcENoYWluTWV0YWwubW0gKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCBk
MjlkYmJkNTdjNDgyZGZhYTAyMzM4NjAxYjEwZjA4NmM0YTQ2MzZlLi4wYjg4ODNjZGVmYjY1MjVh
Nzc2OTYxOGI3ODNlNzM1ZTdiNjMzYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0xNzgsNiArMTc4LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIG1hY3JvKFdlYkdQVUFkYXB0ZXIpIFwKICAgICBtYWNybyhXZWJHUFVE
ZXZpY2UpIFwKICAgICBtYWNybyhXZWJHUFVSZW5kZXJpbmdDb250ZXh0KSBcCisgICAgbWFjcm8o
V2ViR1BVUmVuZGVyUGlwZWxpbmUpIFwKKyAgICBtYWNybyhXZWJHUFVTaGFkZXJTdGFnZSkgXAog
ICAgIG1hY3JvKFdlYkdQVVNoYWRlck1vZHVsZSkgXAogICAgIG1hY3JvKFdlYkdQVVN3YXBDaGFp
bikgXAogICAgIG1hY3JvKFdlYk1ldGFsQnVmZmVyKSBcCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTcxODYwNTIwYzBiMGQ5
N2EzNWJkNTA1ZjM1ZDI5M2E1OGU2MTU5ZC4uMTYxZTBmMmQyNmYzMzM2NjQzY2E4Mzc5NTUzNDU1
YzQ4ZDhjYjIyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE4LTExLTA2ICBKdXN0aW4gRmFu
ICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRXhwZXJpbWVudGFs
IHByb3RvdHlwZSBmb3IgTVNMIHNoYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MTI5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd2ViZ3B1L2pzL3NldC11cC13ZWJncHUtY29udGV4dHMuanM6
IEFkZGVkIGhlbHBlciBzY3JpcHQgZm9yIHJ1bm5pbmcgZGlmZmVyZW50IHdlYmdwdSB0ZXN0cy4K
KyAgICAgICAgKHJ1bldlYkdQVVRlc3RzKToKKyAgICAgICAgKGFzeW5jLnJ1bldlYkdQVVRlc3Rz
T25DYW52YXMpOgorICAgICAgICAoYXN5bmMuc2V0VXBDb250ZXh0cyk6CisgICAgICAgICogd2Vi
Z3B1L3JlbmRlci1waXBlbGluZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJn
cHUvcmVuZGVyLXBpcGVsaW5lcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvc2hhZGVy
LW1vZHVsZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmdwdS9zaGFkZXItbW9kdWxlcy5o
dG1sOiBVcGRhdGVkIHRvIHVzZSBmdW5jdGlvbnMgaW4gc2V0LXVwLXdlYmdwdS1jb250ZXh0cy5q
cy4KKyAgICAgICAgKiB3ZWJncHUvd2ViZ3B1LWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViZ3B1L3dlYmdwdS1iYXNpY3MuaHRtbDogVXBkYXRlZCB0aHJvdWdoIGNyZWF0aW5nIGEg
V2ViR1BVUmVuZGVyUGlwZWxpbmUuCisKIDIwMTgtMTEtMDEgIEp1c3RpbiBGYW4gIDxqdXN0aW5f
ZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBFeHBlcmltZW50YWwgcHJvdG90eXBl
IGZvciBNU0wgc2hhZGVycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L2pzL3NldC11
cC13ZWJncHUtY29udGV4dHMuanMgYi9MYXlvdXRUZXN0cy93ZWJncHUvanMvc2V0LXVwLXdlYmdw
dS1jb250ZXh0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODMwNTYwNGRhZWUzZmJhNTc1YzNiNDk4ZmQ4ZThi
Y2NiMmQzMGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2pzL3NldC11
cC13ZWJncHUtY29udGV4dHMuanMKQEAgLTAsMCArMSw0NiBAQAorJ3VzZSBzdHJpY3QnOworCits
ZXQgY29udGV4dCwgYWRhcHRlciwgZGVmYXVsdERldmljZTsKKworZnVuY3Rpb24gcnVuV2ViR1BV
VGVzdHModGVzdHMpIHsKKyAgICBydW5XZWJHUFVUZXN0c09uQ2FudmFzKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImNhbnZhcyIpLCB0ZXN0cyk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJ1bldlYkdQ
VVRlc3RzT25DYW52YXMoY2FudmFzLCB0ZXN0cykgeworICAgIHRyeSB7CisgICAgICAgIGF3YWl0
IHNldFVwQ29udGV4dHMoY2FudmFzKTsKKworICAgICAgICBmb3IgKGxldCB0ZXN0IG9mIHRlc3Rz
KQorICAgICAgICAgICAgdGVzdCgpOworCisgICAgICAgIGRlYnVnKCJBbGwgdGVzdHMgY29tcGxl
dGUuIik7CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgY29uc29sZS5lcnJvcihlcnJv
cik7CisgICAgICAgIHRlc3RGYWlsZWQoYFske2Vycm9yfV06IFNlZSBjb25zb2xlIWApOworICAg
IH0KK30KKworYXN5bmMgZnVuY3Rpb24gc2V0VXBDb250ZXh0cyhjYW52YXMpIHsKKyAgICBjb250
ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIndlYmdwdSIpOworICAgIGlmICghY29udGV4dCkKKyAg
ICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFUgY29udGV4dCEiKTsKKwor
ICAgIHNob3VsZEJlRGVmaW5lZCh3aW5kb3cud2ViZ3B1KTsKKyAgICAKKyAgICAvLyBGSVhNRTog
cmVxdWVzdEFkYXB0ZXIgc2hvdWxkIHRha2UgYSBXZWJHUFVBZGFwdGVyRGVzY3JpcHRvci4KKyAg
ICBhZGFwdGVyID0gYXdhaXQgd2luZG93LndlYmdwdS5yZXF1ZXN0QWRhcHRlcih7fSk7CisgICAg
aWYgKCFhZGFwdGVyKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgZGVm
YXVsdCBXZWJHUFVBZGFwdGVyISIpCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBG
SVhNRTogcmVxdWVzdERldmljZSBzaG91bGQgdGFrZSBhIFdlYkdQVURldmljZURlc2NyaXB0b3Iu
CisgICAgZGVmYXVsdERldmljZSA9IGFkYXB0ZXIuY3JlYXRlRGV2aWNlKCk7CisgICAgaWYgKCFk
ZWZhdWx0RGV2aWNlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2Vi
R1BVRGV2aWNlISIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IERl
ZmF1bHQgdG8gIkI4RzhSOEE4VW5vcm0iIGZvcm1hdCBmb3Igbm93LgorICAgIGNvbnRleHQuY29u
ZmlndXJlKHsgZGV2aWNlOiBkZWZhdWx0RGV2aWNlLCB3aWR0aDogY2FudmFzLndpZHRoLCBoZWln
aHQ6IGNhbnZhcy5oZWlnaHQgfSk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMyNWI0N2Y5ZGY1YzI1NmVjYzlkMmE5NWI2NmUwYzU2ZjM5MDY3ZjYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMiBAQAorUEFTUyBbb2JqZWN0IFdlYkdQVV0gaXMgZGVmaW5lZC4KK1BB
U1MgU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgV2ViR1BVUmVuZGVyUGlwZWxpbmUuCitQQVNTIFdlYkdQ
VVJlbmRlclBpcGVsaW5lIHdpdGggaW52YWxpZCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3Igd2FzIG5vdCBjcmVhdGVkLgorUEFTUyBXZWJHUFVSZW5kZXJQaXBlbGluZSB3aXRoIGludmFs
aWQgc2hhZGVyIG1vZHVsZSB3YXMgbm90IGNyZWF0ZWQuCitQQVNTIFdlYkdQVVJlbmRlclBpcGVs
aW5lIHdpdGggaW52YWxpZCB2ZXJ0ZXggc2hhZGVyIHN0YWdlIHdhcyBub3QgY3JlYXRlZC4KK1BB
U1MgV2ViR1BVUmVuZGVyUGlwZWxpbmUgd2l0aCBpbnZhbGlkIHZlcnRleCBzaGFkZXIgZW50cnkg
cG9pbnQgd2FzIG5vdCBjcmVhdGVkLgorUEFTUyBXZWJHUFVSZW5kZXJQaXBlbGluZSB3aXRoIGlu
dmFsaWQgV2ViR1BVU2hhZGVyU3RhZ2VFbnVtIHdhcyBub3QgY3JlYXRlZC4KK0FsbCB0ZXN0cyBj
b21wbGV0ZS4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
NWQ0YzBhM2NjNjQ5YmM0MDM2NDg2ZmFmZjQ1YmE2MGEzNmI0Mzg4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMuaHRtbApAQCAtMCwwICsxLDEz
OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImpzL3NldC11cC13ZWJncHUt
Y29udGV4dHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0ibGlicmFyeSIgdHlwZT0ieC1zaGFk
ZXIveC1tZXRhbCI+CisgICAgI2luY2x1ZGUgPG1ldGFsX3N0ZGxpYj4KKyAgICAKKyAgICB1c2lu
ZyBuYW1lc3BhY2UgbWV0YWw7CisgICAgCisgICAgc3RydWN0IFZlcnRleAorICAgIHsKKyAgICAg
ICAgZmxvYXQ0IHBvc2l0aW9uIFtbcG9zaXRpb25dXTsKKyAgICB9OworICAgIAorICAgIHZlcnRl
eCBWZXJ0ZXggdmVydGV4X21haW4odWludCB2aWQgW1t2ZXJ0ZXhfaWRdXSkKKyAgICB7CisgICAg
ICAgIFZlcnRleCB2OworICAgICAgICBzd2l0Y2ggKHZpZCkgeworICAgICAgICBjYXNlIDA6Cisg
ICAgICAgICAgICB2LnBvc2l0aW9uID0gZmxvYXQ0KC0uNzUsIC0uNzUsIDAsIDEpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHYucG9zaXRpb24gPSBm
bG9hdDQoLjc1LCAtLjc1LCAwLCAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IDI6CisgICAgICAgICAgICB2LnBvc2l0aW9uID0gZmxvYXQ0KDAsIC43NSwgMCwgMSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHYucG9zaXRpb24g
PSBmbG9hdDQoMCwgMCwgMCwgMSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHY7CisgICAg
fQorICAgIAorICAgIGZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKFZlcnRleCB2ZXJ0ZXhJ
biBbW3N0YWdlX2luXV0pCisgICAgeworICAgICAgICByZXR1cm4gZmxvYXQ0KDEuMCwgMC4wLCAw
LjAsIDEuMCk7CisgICAgfQorPC9zY3JpcHQ+Cis8c2NyaXB0PgorJ3VzZSBzdHJpY3QnOworCitp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworCitsZXQgc2hhZGVyRGVzY3JpcHRvciwgc2hhZGVyTW9kdWxlLCB2ZXJ0ZXhTdGFnZURlc2Ny
aXB0b3IsIGZyYWdtZW50U3RhZ2VEZXNjcmlwdG9yOworCitmdW5jdGlvbiBzZXRVcFBpcGVsaW5l
KCkgeworICAgIHNoYWRlckRlc2NyaXB0b3IgPSB7CisgICAgICAgIGNvZGU6IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJsaWJyYXJ5IikudGV4dAorICAgIH07CisKKyAgICBzaGFkZXJNb2R1bGUg
PSBkZWZhdWx0RGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZShzaGFkZXJEZXNjcmlwdG9yKTsKKyAg
ICBpZiAoIXNoYWRlck1vZHVsZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3Jl
YXRlIFdlYkdQVVNoYWRlck1vZHVsZSEiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHZlcnRleFN0YWdlRGVzY3JpcHRvciA9IHsgCisgICAgICAgIG1vZHVsZTogc2hhZGVyTW9kdWxl
LCAKKyAgICAgICAgc3RhZ2U6IFdlYkdQVVNoYWRlclN0YWdlLlZFUlRFWCwgCisgICAgICAgIGVu
dHJ5UG9pbnQ6ICJ2ZXJ0ZXhfbWFpbiIgCisgICAgfTsKKworICAgIGZyYWdtZW50U3RhZ2VEZXNj
cmlwdG9yID0geworICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwKKyAgICAgICAgc3RhZ2U6
IFdlYkdQVVNoYWRlclN0YWdlLkZSQUdNRU5ULAorICAgICAgICBlbnRyeVBvaW50OiAiZnJhZ21l
bnRfbWFpbiIKKyAgICB9OworCisgICAgbGV0IHBpcGVsaW5lRGVzY3JpcHRvciA9IHsKKyAgICAg
ICAgc3RhZ2VzOiBbdmVydGV4U3RhZ2VEZXNjcmlwdG9yLCBmcmFnbWVudFN0YWdlRGVzY3JpcHRv
cl0sCisgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAidHJpYW5nbGVMaXN0IgorICAgIH07CisK
KyAgICBsZXQgcmVuZGVyUGlwZWxpbmUgPSBkZWZhdWx0RGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVs
aW5lKHBpcGVsaW5lRGVzY3JpcHRvcik7CisgICAgaWYgKHJlbmRlclBpcGVsaW5lKQorICAgICAg
ICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgY3JlYXRlZCBXZWJHUFVSZW5kZXJQaXBlbGluZS4i
KQorICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFVS
ZW5kZXJQaXBlbGluZSEiKTsKK30KKworZnVuY3Rpb24gY2hlY2tCYWRSZW5kZXJQaXBlbGluZShk
ZXNjcmlwdG9yLCB0ZXN0U3ViamVjdE5hbWUpIHsKKyAgICBsZXQgcGlwZWxpbmUgPSBkZWZhdWx0
RGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKGRlc2NyaXB0b3IpOworCisgICAgaWYgKHBpcGVs
aW5lKQorICAgICAgICB0ZXN0RmFpbGVkKGBXZWJHUFVSZW5kZXJQaXBlbGluZSB3YXMgY3JlYXRl
ZCB3aXRoIGFuIGludmFsaWQgJHt0ZXN0U3ViamVjdE5hbWV9IWApOworICAgIGVsc2UKKyAgICAg
ICAgdGVzdFBhc3NlZChgV2ViR1BVUmVuZGVyUGlwZWxpbmUgd2l0aCBpbnZhbGlkICR7dGVzdFN1
YmplY3ROYW1lfSB3YXMgbm90IGNyZWF0ZWQuYCk7Cit9CisKK2Z1bmN0aW9uIHNldFVwQmFkUGlw
ZWxpbmVzKCkgeworICAgIGNoZWNrQmFkUmVuZGVyUGlwZWxpbmUoe30sICJXZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IiKTsKKworICAgIGxldCBub01vZHVsZVZlcnRleERlc2NyaXB0b3Ig
PSB7CisgICAgICAgIHN0YWdlOiBXZWJHUFVTaGFkZXJTdGFnZS5WRVJURVgsCisgICAgICAgIGVu
dHJ5UG9pbnQ6ICJ2ZXJ0ZXhfbWFpbiIKKyAgICB9CisgICAgbGV0IG5vTW9kdWxlUGlwZWxpbmVE
ZXNjcmlwdG9yID0geworICAgICAgICBzdGFnZXM6IFtub01vZHVsZVZlcnRleERlc2NyaXB0b3Is
IGZyYWdtZW50U3RhZ2VEZXNjcmlwdG9yXSwKKyAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6ICJ0
cmlhbmdsZUxpc3QiCisgICAgfQorICAgIGNoZWNrQmFkUmVuZGVyUGlwZWxpbmUobm9Nb2R1bGVQ
aXBlbGluZURlc2NyaXB0b3IsICJzaGFkZXIgbW9kdWxlIik7CisKKyAgICAvLyBBIChNZXRhbCkg
cmVuZGVycGlwZWxpbmUgbXVzdCBoYXZlIGEgdmVydGV4IGZ1bmN0aW9uLgorICAgIGxldCBub1Zl
cnRleFBpcGVsaW5lRGVzY3JpcHRvciA9IHsKKyAgICAgICAgc3RhZ2VzOiBbZnJhZ21lbnRTdGFn
ZURlc2NyaXB0b3JdLAorICAgICAgICBwcmltaXRpdmVUb3BvbG9neTogInRyaWFuZ2xlTGlzdCIK
KyAgICB9CisgICAgY2hlY2tCYWRSZW5kZXJQaXBlbGluZShub1ZlcnRleFBpcGVsaW5lRGVzY3Jp
cHRvciwgInZlcnRleCBzaGFkZXIgc3RhZ2UiKQorCisgICAgbGV0IGJhZEVudHJ5UG9pbnREZXNj
cmlwdG9yID0geyAKKyAgICAgICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUsIAorICAgICAgICBzdGFn
ZTogV2ViR1BVU2hhZGVyU3RhZ2UuVkVSVEVYLCAKKyAgICAgICAgZW50cnlQb2ludDogIlZlcnRl
eF9NYWluIiAKKyAgICB9OworICAgIGxldCBiYWRFbnRyeVBvaW50UGlwZWxpbmVEZXNjc3JpcHRv
ciA9IHsKKyAgICAgICAgc3RhZ2VzOiBbYmFkRW50cnlQb2ludERlc2NyaXB0b3IsIGZyYWdtZW50
U3RhZ2VEZXNjcmlwdG9yXSwKKyAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6ICJ0cmlhbmdsZUxp
c3QiCisgICAgfQorICAgIGNoZWNrQmFkUmVuZGVyUGlwZWxpbmUoYmFkRW50cnlQb2ludFBpcGVs
aW5lRGVzY3NyaXB0b3IsICJ2ZXJ0ZXggc2hhZGVyIGVudHJ5IHBvaW50Iik7CisKKyAgICBsZXQg
YmFkU3RhZ2VFbnVtRGVzY3JpcHRvciA9IHsgCisgICAgICAgIG1vZHVsZTogc2hhZGVyTW9kdWxl
LCAKKyAgICAgICAgc3RhZ2U6IFdlYkdQVVNoYWRlclN0YWdlLkNPTVBVVEUsIAorICAgICAgICBl
bnRyeVBvaW50OiAidmVydGV4X21haW4iIAorICAgIH07CisgICAgbGV0IGJhZFN0YWdlRW51bVBp
cGVsaW5lRGVzY3JpcHRvciA9IHsKKyAgICAgICAgc3RhZ2VzOiBbYmFkU3RhZ2VFbnVtRGVzY3Jp
cHRvciwgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3JdLAorICAgICAgICBwcmltaXRpdmVUb3BvbG9n
eTogInRyaWFuZ2xlTGlzdCIKKyAgICB9CisgICAgY2hlY2tCYWRSZW5kZXJQaXBlbGluZShiYWRT
dGFnZUVudW1QaXBlbGluZURlc2NyaXB0b3IsICJXZWJHUFVTaGFkZXJTdGFnZUVudW0iKTsKK30K
KworcnVuV2ViR1BVVGVzdHMoW3NldFVwUGlwZWxpbmUsIHNldFVwQmFkUGlwZWxpbmVzXSk7CisK
K3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvc2hhZGVyLW1v
ZHVsZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4
cGVjdGVkLnR4dAppbmRleCBmYTk0YjMzMDc1ZThkOWMwNjBlZWViMWYxNzMwMTMzN2ExMTBjZjA2
Li4wZjg0ZWRiNjMxZWI4OGU5NmM0MDU4NGU3NmQ4YWQ1MGZiMGU2Y2NmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJncHUvc2hhZGVyLW1vZHVsZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw4IEBA
CitQQVNTIFtvYmplY3QgV2ViR1BVXSBpcyBkZWZpbmVkLgogUEFTUyBCYWQgc2hhZGVyIGNvZGUg
c2hvdWxkIG5vdCBjcmVhdGUgYSBtb2R1bGUuCiBQQVNTIEluY29tcGxldGUgc2hhZGVyIGNvZGUg
c2hvdWxkIG5vdCBjcmVhdGUgYSBtb2R1bGUuCiBQQVNTIFNoYWRlciBtb2R1bGUgY3JlYXRlZCBz
dWNjZXNzZnVsbHkuCitBbGwgdGVzdHMgY29tcGxldGUuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS9zaGFkZXItbW9kdWxlcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVz
Lmh0bWwKaW5kZXggODIzYmU5MmQ5ZTQ5YTlkYjQ5YzUzMzAxYjNiYWVkODU2Mjc2MDQ4OC4uMjY3
YzgwMjcwYjJjZWFmYjQ1YmY1N2JlZGYwN2Q1Y2QzM2VkZjFmMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3NoYWRlci1tb2R1bGVzLmh0bWwKQEAgLTEsNiArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxo
dG1sPgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0ianMvc2V0LXVwLXdlYmdwdS1jb250ZXh0cy5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IGlkPSJsaWJyYXJ5X2Z1bGwiIHR5cGU9Ingtc2hhZGVyL3gtbWV0YWwiPgogICAgICNp
bmNsdWRlIDxtZXRhbF9zdGRsaWI+CiAgICAgCkBAIC03MCwyMCArNzEsNiBAQAogaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQogICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAotbGV0
IGNhbnZhczsKLWxldCBjb250ZXh0OwotbGV0IGFkYXB0ZXI7Ci1sZXQgZGVmYXVsdERldmljZTsK
LQotYXN5bmMgZnVuY3Rpb24gc2V0VXBDb250ZXh0cygpIHsKLSAgICBjYW52YXMgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKLSAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRl
eHQoIndlYmdwdSIpOwotICAgIGFkYXB0ZXIgPSBhd2FpdCB3aW5kb3cud2ViZ3B1LnJlcXVlc3RB
ZGFwdGVyKHt9KTsKLSAgICBkZWZhdWx0RGV2aWNlID0gYWRhcHRlci5jcmVhdGVEZXZpY2UoKTsK
LQotICAgIHNldFVwU2hhZGVycygpOwotfQotCiBmdW5jdGlvbiBzZXRVcFNoYWRlcnMoKSB7CiAg
ICAgbGV0IHNoYWRlckRlc2NyaXB0b3IwID0gewogICAgICAgICBjb2RlIDogIkhlbGxvIFdvcmxk
IgpAQCAtMTE1LDkgKzEwMiw5IEBAIGZ1bmN0aW9uIHNldFVwU2hhZGVycygpIHsKICAgICAgICAg
dGVzdEZhaWxlZCgiU2hhZGVyIG1vZHVsZSBub3QgY3JlYXRlZCBzdWNjZXNzZnVsbHkhIik7CiB9
CiAKLXNldFVwQ29udGV4dHMoKTsKK3J1bldlYkdQVVRlc3RzKFtzZXRVcFNoYWRlcnNdKTsKIAot
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3dlYmdwdS1iYXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4IGViMWU1MjQxMjAx
Yzg0MWM3MThjMDNlY2VmNjRlNjlhMDE4YjhjODAuLjQwZDUyZWQ2YmMwNDhmNmVmYjQyNzk1MTc2
MTVhMmVjNzBiYmNlOGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS93ZWJncHUtYmFz
aWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy1l
eHBlY3RlZC50eHQKQEAgLTEsNCArMSw1IEBACiBQQVNTIFtvYmplY3QgV2ViR1BVXSBpcyBkZWZp
bmVkLgorQWxsIHRlc3RzIGNvbXBsZXRlLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1
LWJhc2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1iYXNpY3MuaHRtbAppbmRl
eCBmN2M3NjcyZmQ1YzExOWFhMjg1YTUzNDYxMGNlMGU0MTNjNGI3YzViLi4zMDg0ZjZkMGQ5YjY1
YjQ0Njk2NTg3YzJkYmNjNTBiOTA5OWMyOWI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJn
cHUvd2ViZ3B1LWJhc2ljcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS93ZWJncHUtYmFz
aWNzLmh0bWwKQEAgLTEsNiArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0ianMvc2V0LXVwLXdlYmdwdS1jb250ZXh0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IGlkPSJs
aWJyYXJ5IiB0eXBlPSJ4LXNoYWRlci94LW1ldGFsIj4KICAgICAjaW5jbHVkZSA8bWV0YWxfc3Rk
bGliPgogICAgIApAQCAtNDEsNDYgKzQyLDk2IEBACiBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAg
ICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCi1sZXQgY2FudmFzOwotbGV0IGNv
bnRleHQ7Ci1sZXQgYWRhcHRlcjsKLWxldCBkZWZhdWx0RGV2aWNlOworbGV0IHJlbmRlclBpcGVs
aW5lOwogCi1hc3luYyBmdW5jdGlvbiBzZXRVcENvbnRleHRzKCkgewotICAgIGNhbnZhcyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0
Q29udGV4dCgid2ViZ3B1Iik7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICB0ZXN0RmFpbGVk
KCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVSBjb250ZXh0ISIpOworZnVuY3Rpb24gc2V0VXBQaXBl
bGluZSgpIHsKKyAgICBsZXQgc2hhZGVyRGVzY3JpcHRvciA9IHsKKyAgICAgICAgY29kZTogZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpYnJhcnkiKS50ZXh0CisgICAgfTsKKyAgICBsZXQgc2hh
ZGVyTW9kdWxlID0gZGVmYXVsdERldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoc2hhZGVyRGVzY3Jp
cHRvcik7CisgICAgaWYgKCFzaGFkZXJNb2R1bGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291
bGQgbm90IGNyZWF0ZSBXZWJHUFVTaGFkZXJNb2R1bGUhIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKLSAgICBzaG91bGRCZURlZmluZWQod2luZG93LndlYmdwdSk7Ci0gICAgCi0gICAgYWRh
cHRlciA9IGF3YWl0IHdpbmRvdy53ZWJncHUucmVxdWVzdEFkYXB0ZXIoe30pOwotICAgIGlmICgh
YWRhcHRlcikgewotICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIGRlZmF1bHQg
V2ViR1BVQWRhcHRlciEiKQorICAgIGxldCB2ZXJ0ZXhTdGFnZURlc2NyaXB0b3IgPSB7IAorICAg
ICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwgCisgICAgICAgIHN0YWdlOiBXZWJHUFVTaGFkZXJT
dGFnZS5WRVJURVgsIAorICAgICAgICBlbnRyeVBvaW50OiAidmVydGV4X21haW4iIAorICAgIH07
CisKKyAgICBsZXQgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3IgPSB7CisgICAgICAgIG1vZHVsZTog
c2hhZGVyTW9kdWxlLAorICAgICAgICBzdGFnZTogV2ViR1BVU2hhZGVyU3RhZ2UuRlJBR01FTlQs
CisgICAgICAgIGVudHJ5UG9pbnQ6ICJmcmFnbWVudF9tYWluIgorICAgIH07CisKKyAgICBpZiAo
IXZlcnRleFN0YWdlRGVzY3JpcHRvciB8fCAhZnJhZ21lbnRTdGFnZURlc2NyaXB0b3IpIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFVQaXBlbGluZVN0YWdlRGVz
Y3JpcHRvciEiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRlZmF1bHREZXZpY2Ug
PSBhZGFwdGVyLmNyZWF0ZURldmljZSgpOwotICAgIGlmICghZGVmYXVsdERldmljZSkgewotICAg
ICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVURldmljZSEiKTsKKyAgICBs
ZXQgcGlwZWxpbmVEZXNjcmlwdG9yID0geworICAgICAgICBzdGFnZXM6IFt2ZXJ0ZXhTdGFnZURl
c2NyaXB0b3IsIGZyYWdtZW50U3RhZ2VEZXNjcmlwdG9yXSwKKyAgICAgICAgcHJpbWl0aXZlVG9w
b2xvZ3k6ICJ0cmlhbmdsZUxpc3QiCisgICAgfTsKKworICAgIGlmICghcGlwZWxpbmVEZXNjcmlw
dG9yKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yISIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2V0
VXBTaGFkZXJzKCk7CisgICAgcmVuZGVyUGlwZWxpbmUgPSBkZWZhdWx0RGV2aWNlLmNyZWF0ZVJl
bmRlclBpcGVsaW5lKHBpcGVsaW5lRGVzY3JpcHRvcik7CisgICAgaWYgKCFyZW5kZXJQaXBlbGlu
ZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVVJlbmRlclBp
cGVsaW5lISIpOworICAgICAgICByZXR1cm47CisgICAgfQogfQogCi1mdW5jdGlvbiBzZXRVcFNo
YWRlcnMoKSB7Ci0gICAgbGV0IHNoYWRlckRlc2NyaXB0b3IgPSB7Ci0gICAgICAgIGNvZGU6IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaWJyYXJ5IikudGV4dAotICAgIH07Ci0gICAgbGV0IHNo
YWRlck1vZHVsZSA9IGRlZmF1bHREZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHNoYWRlckRlc2Ny
aXB0b3IpOwotICAgIGlmICghc2hhZGVyTW9kdWxlKQotICAgICAgICB0ZXN0RmFpbGVkKCJDb3Vs
ZCBub3QgY3JlYXRlIFdlYkdQVVNoYWRlck1vZHVsZSEiKTsKK2Z1bmN0aW9uIHJlbmRlcigpIHsK
KyAgICAvLyBsZXQgY29tbWFuZEJ1ZmZlciA9IGRlZmF1bHREZXZpY2UuY3JlYXRlQ29tbWFuZEJ1
ZmZlcigpOworICAgIC8vIGlmICghY29tbWFuZEJ1ZmZlcikgeworICAgIC8vICAgICB0ZXN0RmFp
bGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVUNvbW1hbmRCdWZmZXIhIik7CisgICAgLy8gICAg
IHJldHVybjsKKyAgICAvLyB9CisKKyAgICAvLyBsZXQgdGV4dHVyZSA9IGNvbnRleHQuZ2V0TmV4
dFRleHR1cmUoKTsKKyAgICAvLyBpZiAoIXRleHR1cmUpIHsKKyAgICAvLyAgICAgdGVzdEZhaWxl
ZCgiQ291bGQgbm90IGdldCBuZXh0IFdlYkdQVVRleHR1cmUhIik7CisgICAgLy8gICAgIHJldHVy
bjsKKyAgICAvLyB9CisKKyAgICAvLyBsZXQgdGV4dHVyZVZpZXcgPSBjb250ZXh0LmNyZWF0ZVRl
eHR1cmVWaWV3KCk7CisgICAgLy8gaWYgKCF0ZXh0dXJlVmlldykgeworICAgIC8vICAgICB0ZXN0
RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVVRleHR1cmVWaWV3ISIpOworICAgIC8vICAg
ICByZXR1cm47CisgICAgLy8gfQorCisgICAgLy8gLy8gRklYTUU6IEZsZXNoIG91dCB0aGUgcmVz
dCBvZiBXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci4gRGVmYXVsdCBsb2FkT3AsIHN0b3JlT3As
IGNsZWFyQ29sb3IgZm9yIG5vdy4KKyAgICAvLyBsZXQgcmVuZGVyUGFzc0Rlc2NyaXB0b3IgPSB7
CisgICAgLy8gICAgIGF0dGFjaG1lbnQgOiB0ZXh0dXJlVmlldworICAgIC8vIH07CisKKyAgICAv
LyBsZXQgcmVuZGVyUGFzc0VuY29kZXIgPSBjb21tYW5kQnVmZmVyLmJlZ2luUmVuZGVyUGFzcyhy
ZW5kZXJQYXNzRGVzY3JpcHRvcik7CisgICAgLy8gcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxp
bmUocmVuZGVyUGlwZWxpbmUpOworCisgICAgLy8gLy8gTm90ZSB0aGF0IHdlIGRpZG4ndCBhdHRh
Y2ggYW55IGJ1ZmZlcnMgLSB0aGUgc2hhZGVyIGlzIGdlbmVyYXRpbmcgdGhlIHZlcnRpY2VzIGZv
ciB1cy4KKyAgICAvLyByZW5kZXJQYXNzRW5jb2Rlci5kcmF3KDMsIDEsIDAsIDApOworICAgIC8v
IHJlbmRlclBhc3NFbmNvZGVyLmVuZFBhc3MoKTsKKworICAgIC8vIGxldCBxdWV1ZSA9IGRldmlj
ZS5nZXRRdWV1ZSgpOworICAgIC8vIGlmICghcXVldWUpIHsKKyAgICAvLyAgICAgdGVzdEZhaWxl
ZCgiVW5hYmxlIHRvIGNyZWF0ZSBkZWZhdWx0IFdlYkdQVVF1ZXVlISIpOworICAgIC8vICAgICBy
ZXR1cm47CisgICAgLy8gfQorICAgIC8vIHF1ZXVlLnN1Ym1pdChbY29tbWFuZEJ1ZmZlcl0pOwor
CisgICAgLy8gY29udGV4dC5wcmVzZW50KCk7CiB9CiAKLXNldFVwQ29udGV4dHMoKTsKK3J1bldl
YkdQVVRlc3RzKFtzZXRVcFBpcGVsaW5lLCByZW5kZXJdKTsKIAotdmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354019</attachid>
            <date>2018-11-06 15:40:26 -0800</date>
            <delta_ts>2018-11-06 17:05:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191291-20181106154025.patch</filename>
            <type>text/plain</type>
            <size>88324</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3ODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM0NWVjODFlOTM1MDQx
ZGZkMmM5MTU2OThlMWM0NjIwNzNlOWZmMy4uNzNlMDJlZmI1YzU0OTc2ZWNiODlkM2E2ZjhmMjQ5
MzJlZDJkYzllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE4LTExLTA2ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRXhwZXJp
bWVudGFsIHByb3RvdHlwZSBmb3IgTVNMIHNoYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTI5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHdlYmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0
bWwKKyAgICAgICAgQWxzbyB1cGRhdGUgdGVzdCB3ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sIHRv
IGNyZWF0ZSBhIFdlYkdQVVJlbmRlclBpcGVsaW5lLgorCisgICAgICAgIEJlZ2luIGltcGxlbWVu
dGF0aW9uIG9mIFdlYkdQVVJlbmRlclBpcGVsaW5lIGFuZCBXZWJHUFVTd2FwQ2hhaW4uIEEgV2Vi
R1BVUmVuZGVyUGlwZWxpbmUgaXMgYmFja2VkIGJ5IGEKKyAgICAgICAgR1BVUmVuZGVyUGlwZWxp
bmUsIGNyZWF0ZWQgbGF6aWx5IHVzaW5nIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBwYXNzZWQtaW4g
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLgorICAgICAgICBPbiBNZXRhbC1zdXBwb3J0
ZWQgc3lzdGVtcywgR1BVUmVuZGVyUGlwZWxpbmUgaXMgYW4gaW50ZXJmYWNlIHRvIGEgTVRMUmVu
ZGVyUGlwZWxpbmVTdGF0ZS4KKyAgICAgICAgVGhlIE1UTFJlbmRlclBpcGVsaW5lU3RhdGUgaXMg
Y3JlYXRlZCB3aXRoIHRoZSBXZWJHUFVEZXZpY2UgY3VycmVudGx5IGNvbmZpZ3VyZWQgb24gdGhl
IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQ
VURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBp
cGVsaW5lIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6R1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6cHJpbWl0aXZlVG9wb2xvZ3kpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRl
clBpcGVsaW5lIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6YWRhcHRlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmRldmljZSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5pZGw6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5k
ZXJQaXBlbGluZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVuZGVyaW5n
Q29udGV4dDo6V2ViR1BVUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVNoYWRlck1vZHVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxl
Ojptb2R1bGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0
YWdlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVTd2FwQ2hhaW46OmNvbmZpZ3VyZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVTd2FwQ2hhaW46OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU3dhcENo
YWluOjptYXJrTGF5ZXJDb21wb3NpdGVkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVTd2FwQ2hhaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVN3YXBDaGFpbjo6V2ViR1BV
U3dhcENoYWluKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRs
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6cGxhdGZvcm1SZW5kZXJQaXBlbGlu
ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxp
bmVNZXRhbC5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRGdW5jdGlvbnNGb3JQaXBl
bGluZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGlwZWxpbmU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6R1BVUmVuZGVyUGlw
ZWxpbmUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkdQVVN3YXBDaGFpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQ
VVN3YXBDaGFpbjo6R1BVU3dhcENoYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVN3YXBDaGFp
bjo6c2V0RGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVN3YXBDaGFpbjo6cmVzaGFwZSk6
CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OnByZXNlbnQpOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNv
cmVCdWlsdGluTmFtZXMuaDoKKwogMjAxOC0xMS0wMSAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEV4cGVyaW1lbnRhbCBwcm90b3R5cGUgZm9y
IE1TTCBzaGFkZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA2ZTI4MzdhMWU5ZDBhMzUxNjNjN2ZjYjNhMGRl
YzZhOGM3ODUxZGFhLi5kODM1N2YyYWZmN2JmMmY1ZGVlNzJjODY5ODBjNTkxMjAwNzU0M2NmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKQEAgLTEzODIsNiArMTM4Miw2IEBACiAjZGVmaW5lIFVTRV9JT1NVUkZBQ0Vf
Q0FOVkFTX0JBQ0tJTkdfU1RPUkUgMQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkgJiYg
IVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQotI2RlZmluZSBFTkFCTEVfV0VCR1BVIDEK
KyNpZiAhUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQor
I2RlZmluZSBFTkFCTEVfV0VCR1BVIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5
YWViMmRkY2NkOWIwYTg2MjI2NzUzMzU3NjY2NjdjNWI3YWZkNjZjLi4yMTE0MTA5NTg3N2M5NThl
OWU5NWEzOTEwNTAyNDY5MDUwNjEwZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDUzLDkg
KzQ1MywxNCBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVUFkYXB0ZXIuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlckRl
c2NyaXB0b3IuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAorICAgIE1v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsCisgICAgTW9kdWxl
cy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsCisgICAgTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCisgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlcmluZ0NvbnRleHQuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxl
LmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRs
CisgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRsCiAgICAgTW9kdWxlcy93
ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbAogCiAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3Nl
RXZlbnQuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkY2M3NzJjNjY2Yjdm
OWEwMGQ4ZTcwZGRhYjhjODhkYWM2YzQ0MDMxLi5mOTU5MDkwMzA4YzI1NTEyMWM0ZmZlOTUzNDc0
NjAxMDI0NjYyNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTM3Myw5ICsz
NzMsMTQgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQWRhcHRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVQWRhcHRlckRlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVURldmljZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5p
ZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuY3BwCmluZGV4IGU4NTExNDQwNThkYjM3MmYw
YzRkMTM2NWMwMmY1ODZiYTk3MTVlNjAuLjA0Yzk2N2YyYmRlNDhmYWFmNTU4Y2Y3OTQ3NDVkN2U1
ODk0ODlmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURl
dmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmNw
cApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorI2luY2x1ZGUgIkdQ
VVJlbmRlclBpcGVsaW5lLmgiCisjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmgiCiAjaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlLmgiCiAjaW5jbHVkZSAiR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5oIgogCkBAIC0zOCw2ICs0MCwxMSBAQCBSZWZQdHI8R1BVU2hhZGVyTW9k
dWxlPiBHUFVEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yJgogICAgIHJldHVybiBHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShk
ZXNjcmlwdG9yKSk7CiB9CiAKK1JlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gR1BVRGV2aWNlOjpj
cmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBkZXNjcmlw
dG9yKSBjb25zdAoreworICAgIHJldHVybiBHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKCp0aGlz
LCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVURldmljZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
RGV2aWNlLmgKaW5kZXggYzE5ZTFlY2ZmNWI3ZjhkMDNkNzVmM2M4NzE5MWNkODc5MTg3YjFhYi4u
ODhiMGNkMmJlZGQ1YThiZDdlZTAxYzc4ODlkNjg3Zjc3MzUwZDY0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmgKQEAgLTQ2LDE0ICs0NiwxNyBAQCB1c2luZyBQ
bGF0Zm9ybURldmljZVNtYXJ0UHRyID0gUmVmUHRyPHZvaWQ+OwogI2VuZGlmCiAKIGNsYXNzIEdQ
VVNoYWRlck1vZHVsZTsKK2NsYXNzIEdQVVJlbmRlclBpcGVsaW5lOwogCiBzdHJ1Y3QgR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvcjsKK3N0cnVjdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7
CiAKIGNsYXNzIEdQVURldmljZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVURldmljZT4gewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWZQdHI8R1BVRGV2aWNlPiBjcmVhdGUoKTsKIAogICAgIFJlZlB0
cjxHUFVTaGFkZXJNb2R1bGU+IGNyZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yJiYpIGNvbnN0OworICAgIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVu
ZGVyUGlwZWxpbmUoR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYpIGNvbnN0OwogCiAgICAg
UGxhdGZvcm1EZXZpY2UgKnBsYXRmb3JtRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9y
bURldmljZS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmUyNzU1Yjll
MjY2YTJlOGIzOGZhNWQ0YjA4ZmQ3ZTE0ZTI4MTI2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaApAQCAt
MCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VC
R1BVKQorCisjaW5jbHVkZSAiR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKKworI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZSB7CisgICAgVmVjdG9yPEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlw
dG9yPiBzdGFnZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBjZGQ0OGQwYmIx
NGM5M2RmZDI5Y2EyMjA5Y2QwZTc0Y2FlOWE3NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgKQEAgLTAs
MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQ
VSkKKworI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdQVVBpcGVsaW5l
U3RhZ2VEZXNjcmlwdG9yIHsKKyAgICBjb25zdCBHUFVTaGFkZXJNb2R1bGUmIG1vZHVsZTsKKyAg
ICB1bnNpZ25lZCBsb25nIHN0YWdlOworICAgIFN0cmluZyBlbnRyeVBvaW50OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAzNWVhNjIyMTU4ZDM0NjhlMzdmZDFkNTZkODMyMzVj
ZDNhNTRjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlLmgiCisjaW5jbHVkZSAiR1BVUGlwZWxpbmVTdGFnZURlc2Ny
aXB0b3IuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDogR1BVUGlwZWxpbmVEZXNj
cmlwdG9yQmFzZSB7CisgICAgZW51bSB7CisgICAgICAgIFBvaW50TGlzdCwKKyAgICAgICAgTGlu
ZUxpc3QsCisgICAgICAgIExpbmVTdHJpcCwKKyAgICAgICAgVHJpYW5nbGVMaXN0LAorICAgICAg
ICBUcmlhbmdsZVN0cmlwCisgICAgfTsKKworICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cihWZWN0b3I8R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I+JiYgc3RhZ2VzLCBpbnQgdG9wb2xv
Z3kpCisgICAgICAgIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7IFdURk1vdmUoc3RhZ2Vz
KSB9CisgICAgICAgICwgcHJpbWl0aXZlVG9wb2xvZ3kodG9wb2xvZ3kpCisgICAgeworICAgIH0K
KworICAgIGludCBwcmltaXRpdmVUb3BvbG9neTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAppbmRleCAxMGI5YmYzZGY1ODFhOTVhZTM3NmI2MmQ4
YWRkMWEyYWVjYTlhNzc0Li5jYzA0ZGZjZmJjNWIyYjZlZTMxMzc1OGIxMGVkYTQwOTU5ZTZkZTVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAK
QEAgLTI4LDkgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCi0jaW5jbHVkZSAiV2Vi
R1BVQWRhcHRlci5oIgotCisjaW5jbHVkZSAiR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIK
KyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJHUFVT
aGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
IldlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVy
UGlwZWxpbmUuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIK
ICNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGUuaCIKICNpbmNsdWRlICJXZWJHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmgiCiAKQEAgLTU3LDYgKzYxLDIwIEBAIFJlZlB0cjxXZWJHUFVTaGFk
ZXJNb2R1bGU+IFdlYkdQVURldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1v
ZHVsZURlCiAgICAgcmV0dXJuIFdlYkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKG1fZGV2aWNlLT5j
cmVhdGVTaGFkZXJNb2R1bGUoR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7IGRlc2NyaXB0b3Iu
Y29kZSB9KSk7CiB9CiAKK1JlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVRGV2aWNl
OjpjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBk
ZXNjcmlwdG9yKSBjb25zdAoreworICAgIFZlY3RvcjxHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRv
cj4gc3RhZ2VzOworICAgIGZvciAoY29uc3QgYXV0byYgc3RhZ2VEZXNjcmlwdG9yIDogZGVzY3Jp
cHRvci5zdGFnZXMpIHsKKyAgICAgICAgaWYgKCFzdGFnZURlc2NyaXB0b3IubW9kdWxlKSB7Cisg
ICAgICAgICAgICBMT0coV2ViR1BVLCAiV2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGlu
ZSgpOiBXZWJHUFVTaGFkZXJNb2R1bGUgbm90IGZvdW5kISIpOworICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgc3RhZ2VzLmFwcGVuZCh7IHN0YWdlRGVzY3Jp
cHRvci5tb2R1bGUtPm1vZHVsZSgpLCBzdGFnZURlc2NyaXB0b3Iuc3RhZ2UsIHN0YWdlRGVzY3Jp
cHRvci5lbnRyeVBvaW50IH0pOworICAgIH0KKworICAgIHJldHVybiBXZWJHUFVSZW5kZXJQaXBl
bGluZTo6Y3JlYXRlKG1fZGV2aWNlLT5jcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IgeyBXVEZNb3ZlKHN0YWdlcyksIHN0YXRpY19jYXN0PGludD4oZGVzY3Jp
cHRvci5wcmltaXRpdmVUb3BvbG9neSkgfSkpOworfQorCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2
aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAppbmRl
eCA0ZDViMGJhYzE3NTk2MWE4ZGVlN2U5MjE4NjZiZmJhNzBmYTEzNzMxLi43YzI3ZTBiOTcyMzJk
MjhhNjA1YTA0ZWJlMzFiNjY4OTQ4ZjBiZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVEZXZpY2UuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJH
UFUpCiAKICNpbmNsdWRlICJHUFVEZXZpY2UuaCIKKyNpbmNsdWRlICJXZWJHUFVBZGFwdGVyLmgi
CiAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAg
LTM3LDE3ICszOCwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiBjbGFzcyBXZWJHUFVBZGFwdGVyOworY2xhc3MgV2ViR1BVUmVuZGVyUGlw
ZWxpbmU7CiBjbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGU7CiAKK3N0cnVjdCBXZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3I7CiBzdHJ1Y3QgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsK
IAogY2xhc3MgV2ViR1BVRGV2aWNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVRGV2aWNlPiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxXZWJHUFVEZXZpY2U+IGNyZWF0ZShSZWY8V2Vi
R1BVQWRhcHRlcj4mJik7CiAKLSAgICBXZWJHUFVBZGFwdGVyJiBhZGFwdGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9hZGFwdGVyLmdldCgpOyB9CisgICAgY29uc3QgV2ViR1BVQWRhcHRlciYgYWRhcHRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYWRhcHRlci5nZXQoKTsgfQorICAgIGNvbnN0IEdQVURldmlj
ZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4gKm1fZGV2aWNlOyB9CiAKICAgICBSZWZQdHI8V2Vi
R1BVU2hhZGVyTW9kdWxlPiBjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvciYmKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0
ZVJlbmRlclBpcGVsaW5lKFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmKSBjb25zdDsK
IAogcHJpdmF0ZToKICAgICBXZWJHUFVEZXZpY2UoUmVmPFdlYkdQVUFkYXB0ZXI+JiYsIFJlZlB0
cjxHUFVEZXZpY2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVRGV2aWNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5pZGwKaW5kZXggZDFhOWYxYTJjOWMzM2Q1NzMwMmFkMjk3NDg2MTg1Y2I2YmUyN2Nl
Yy4uNjAzZTM3NmNiMzhlMTA0NWVkODkxYzAyZDMxZjY5NTkxYzgzYzcyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCkBAIC0zNCw2ICszNCw3
IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdlYkdQVUFkYXB0ZXIgYWRhcHRlcjsKIAogICAg
IFdlYkdQVVNoYWRlck1vZHVsZSBjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKKyAgICBXZWJHUFVSZW5kZXJQaXBlbGluZSBjcmVhdGVS
ZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7
CiAKIC8qIFRvIEJlIEltcGxlbWVudGVkOgogICAgIFdlYkdQVUJ1ZmZlciBjcmVhdGVCdWZmZXIo
V2ViR1BVQnVmZmVyRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKQEAgLTQ5LDggKzUwLDYgQEAKICAg
ICBXZWJHUFVJbnB1dFN0YXRlIGNyZWF0ZUlucHV0U3RhdGUoV2ViR1BVSW5wdXRTdGF0ZURlc2Ny
aXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BVQXR0YWNobWVudFN0YXRlIGNyZWF0ZUF0dGFj
aG1lbnRTdGF0ZShXZWJHUFVBdHRhY2htZW50U3RhdGVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwog
ICAgIFdlYkdQVUNvbXB1dGVQaXBlbGluZSBjcmVhdGVDb21wdXRlUGlwZWxpbmUoV2ViR1BVQ29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVSZW5kZXJQaXBl
bGluZSBjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Ig
ZGVzY3JpcHRvcik7Ci0KICAgICBXZWJHUFVDb21tYW5kQnVmZmVyIGNyZWF0ZUNvbW1hbmRCdWZm
ZXIoV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BV
RmVuY2UgY3JlYXRlRmVuY2UoV2ViR1BVRmVuY2VEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZURlc2NyaXB0b3JCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzEyMWE5YmE1NjgzNzQwMTQzY2VjMzA1
OTA4MmJjODJjYTU0MTU5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaApAQCAtMCwwICsxLDQxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5j
bHVkZSAiV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFdlYkdQVVBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UgeworICAgIFZlY3RvcjxXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcj4g
c3RhZ2VzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGlu
ZURlc2NyaXB0b3JCYXNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZjdhNzY2MTdhYjE5NTlm
MjA3MTg4NjliNTk3ZTdmNWMyZTQ5MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbApAQCAtMCww
ICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2Vi
L2Jsb2IvbWFzdGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCisKK1sKKyAgICBDb25kaXRpb25hbD1X
RUJHUFUsCisgICAgRW5hYmxlZEF0UnVudGltZT1XZWJHUFUKK10gZGljdGlvbmFyeSBXZWJHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlIHsKKyAgICAvLyBXZWJHUFVQaXBlbGluZUxheW91dCBsYXlv
dXQ7CisgICAgc2VxdWVuY2U8V2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I+IHN0YWdlczsK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZVN0YWdlRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zM2YzYWUwOTU2NTAwZDRm
N2IzN2M1ZTUwN2QwODdhZGYwYWRhMTY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaApAQCAtMCww
ICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BV
KQorCisjaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBXZWJHUFVTaGFk
ZXJTdGFnZUVudW0gPSB1bnNpZ25lZCBsb25nOworCitzdHJ1Y3QgV2ViR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IgeworICAgIGNvbnN0IFdlYkdQVVNoYWRlck1vZHVsZSogbW9kdWxlID0gbnVs
bHB0cjsKKyAgICBXZWJHUFVTaGFkZXJTdGFnZUVudW0gc3RhZ2U7CisgICAgU3RyaW5nIGVudHJ5
UG9pbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNmIwODgx
N2Q5MmRhN2JjY2QwMjhhYzdmZTNlY2MxMTIyMzU5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5p
ZGwKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1
d2ViL2dwdXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAorCit0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgV2ViR1BVU2hhZGVyU3RhZ2VFbnVtOworCitbCisgICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGRpY3Rpb25hcnkgV2ViR1BV
UGlwZWxpbmVTdGFnZURlc2NyaXB0b3IgeworICAgIFdlYkdQVVNoYWRlck1vZHVsZSBtb2R1bGU7
CisgICAgV2ViR1BVU2hhZGVyU3RhZ2VFbnVtIHN0YWdlOworICAgIERPTVN0cmluZyBlbnRyeVBv
aW50OworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjNjMDIwMDQyODJkN2JlYTIzMmZhZWZk
ZDc1Njg1N2Q1NGZkYTRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisg
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
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGlu
ZT4gV2ViR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+
JiYgcGlwZWxpbmUpCit7CisgICAgaWYgKCFwaXBlbGluZSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKFdURk1v
dmUocGlwZWxpbmUpKSk7Cit9CisKK1dlYkdQVVJlbmRlclBpcGVsaW5lOjpXZWJHUFVSZW5kZXJQ
aXBlbGluZShSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCisgICAgOiBtX3Jl
bmRlclBpcGVsaW5lKHBpcGVsaW5lKQoreworICAgIFVOVVNFRF9QQVJBTShtX3JlbmRlclBpcGVs
aW5lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5k
ZXJQaXBlbGluZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiNTEwNjJjZGQyNjE5OGMwZmEwZTk3Zjg2OTJiZjc2
YzZmYWExMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVSZW5kZXJQ
aXBlbGluZS5oIgorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR1BVUmVuZGVyUGlw
ZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVSZW5kZXJQaXBlbGluZT4geworcHVibGlj
OgorICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShSZWZQdHI8
R1BVUmVuZGVyUGlwZWxpbmU+JiYpOworCitwcml2YXRlOgorICAgIFdlYkdQVVJlbmRlclBpcGVs
aW5lKFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4mJik7CisKKyAgICBSZWZQdHI8R1BVUmVuZGVy
UGlwZWxpbmU+IG1fcmVuZGVyUGlwZWxpbmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0NmQw
MWEyOTVlMWFhZGRhMTc2ZDk1NWFkMjllZTQ5MGI0MTAzZDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwKQEAg
LTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dw
dXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAorCitbCisgICAgQ29uZGl0aW9u
YWw9V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVLAorICAgIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUKK10gaW50ZXJmYWNlIFdlYkdQVVJlbmRlclBpcGVsaW5lIHsKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2ZWVjNWQ4YjZmZWUyOTVlNWY0
MDExMDlkYTFiYWQ4MWUyZThkNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApAQCAtMCwwICsx
LDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0cnVjdCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBXZWJH
UFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKKyAgICBlbnVtIGNsYXNzIFByaW1pdGl2ZVRvcG9s
b2d5IHsKKyAgICAgICAgUG9pbnRMaXN0LAorICAgICAgICBMaW5lTGlzdCwKKyAgICAgICAgTGlu
ZVN0cmlwLAorICAgICAgICBUcmlhbmdsZUxpc3QsCisgICAgICAgIFRyaWFuZ2xlU3RyaXAKKyAg
ICB9OworCisgICAgUHJpbWl0aXZlVG9wb2xvZ3kgcHJpbWl0aXZlVG9wb2xvZ3k7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZhNTQ0NzQzZGYyNjlmMmNjMzhi
ODQxZjI4YTU3YTIzNTBhMTU5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwKQEAgLTAsMCAr
MSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9i
bG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAorCitlbnVtIFdlYkdQVVByaW1pdGl2ZVRv
cG9sb2d5IHsKKyAgICAicG9pbnRMaXN0IiwKKyAgICAibGluZUxpc3QiLAorICAgICJsaW5lU3Ry
aXAiLAorICAgICJ0cmlhbmdsZUxpc3QiLAorICAgICJ0cmlhbmdsZVN0cmlwIgorfTsKKworWwor
ICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBk
aWN0aW9uYXJ5IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IFdlYkdQVVBpcGVsaW5l
RGVzY3JpcHRvckJhc2UgeworICAgIFdlYkdQVVByaW1pdGl2ZVRvcG9sb2d5IHByaW1pdGl2ZVRv
cG9sb2d5OworICAgIC8qIFRvIEJlIEltcGxlbWVudGVkOgorICAgIHNlcXVlbmNlPFdlYkdQVUJs
ZW5kU3RhdGU+IGJsZW5kU3RhdGVzOworICAgIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlIGRlcHRo
U3RlbmNpbFN0YXRlOworICAgIFdlYkdQVUlucHV0U3RhdGUgaW5wdXRTdGF0ZTsKKyAgICBXZWJH
UFVBdHRhY2htZW50c1N0YXRlIGF0dGFjaG1lbnRzU3RhdGU7ICovCisgICAgLy8gVE9ETyBvdGhl
ciBwcm9wZXJ0aWVzCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAwYmQyNzY0M2FlYjFlNWVlZDE2
MjQ2NDkwNjE5ZmQ2MTFjZGU0YzdjLi5lYzNlMDc2ZDViMmQwMzQxOWMxODcxZDA2NjQxZTQzZmU5
ZWViMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzIsMTMgKzMyLDE4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+IFdlYkdQ
VVJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShDYW52YXNCYXNlJiBjYW52YXMpCiB7Ci0gICAgYXV0
byBjb250ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+KG5ldyBX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0KGNhbnZhcykpOworICAgIGF1dG8gc3dhcENoYWluID0gR1BV
U3dhcENoYWluOjpjcmVhdGUoKTsKKworICAgIGlmICghc3dhcENoYWluKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29udGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0PihuZXcgV2ViR1BVUmVuZGVyaW5nQ29udGV4dChjYW52YXMsIFdURk1v
dmUoc3dhcENoYWluKSkpOwogICAgIGNvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJl
dHVybiBjb250ZXh0OwogfQogCi1XZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpXZWJHUFVSZW5kZXJp
bmdDb250ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcykKLSAgICA6IFdlYkdQVVN3YXBDaGFpbihjYW52
YXMpCitXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpXZWJHUFVSZW5kZXJpbmdDb250ZXh0KENhbnZh
c0Jhc2UmIGNhbnZhcywgUmVmUHRyPEdQVVN3YXBDaGFpbj4mJiBzd2FwQ2hhaW4pCisgICAgOiBX
ZWJHUFVTd2FwQ2hhaW4oY2FudmFzLCBXVEZNb3ZlKHN3YXBDaGFpbikpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuaAppbmRleCA0OWE3ZGFmMTM4NmEzMTg2NjlhYjkzMmNhYTNmYjIyYjVmOTFlZTY3Li42ZjFh
N2Q5N2Q4MzRmM2JmMzhlMGRiMDZiYjM5YzAxMTNhN2MyMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0z
Niw3ICszNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQ+IGNyZWF0ZShDYW52YXNCYXNlJik7CiAKIHByaXZhdGU6Ci0gICAgV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJik7CisgICAgV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dChDYW52YXNCYXNlJiwgUmVmUHRyPEdQVVN3YXBDaGFpbj4mJik7CiAgICAgLy8gQ2FudmFz
UmVuZGVyaW5nQ29udGV4dAogICAgIGJvb2wgaXNXZWJHUFUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCmluZGV4IDk3OTgyOTA5NWU0OWZk
Y2JhNWYwOTA1OWJjYjIxM2ExYmQyMDEyMjIuLjUwNjBkNTZhOGM1OTcwOWJhMTA5YWZiOGVkOTI3
NzExODJhZDVlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVNoYWRlck1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVNoYWRlck1vZHVsZS5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdFQkdQVSkK
IAogI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0FycmF5QnVmZmVyLmg+CisKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIApAQCAtMzgsNiArMzgsOCBAQCBjbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGUg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVTaGFkZXJNb2R1bGU+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gY3JlYXRlKFJlZlB0cjxHUFVTaGFkZXJN
b2R1bGU+JiYpOwogCisgICAgY29uc3QgR1BVU2hhZGVyTW9kdWxlJiBtb2R1bGUoKSBjb25zdCB7
IHJldHVybiAqbV9tb2R1bGU7IH0KKwogcHJpdmF0ZToKICAgICBXZWJHUFVTaGFkZXJNb2R1bGUo
UmVmUHRyPEdQVVNoYWRlck1vZHVsZT4mJik7CiAKQEAgLTQ3LDMgKzQ5LDQgQEAgcHJpdmF0ZToK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0YWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgxN2Q0MmY1OTY4YTk4Nzg3YTlmOTY5OTg3N2UwNzVmNTA0MmJjMjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJT
dGFnZS5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYkdQVVNoYWRlclN0YWdlIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViR1BVU2hhZGVyU3RhZ2U+IHsKK3B1YmxpYzoKKyAgICBlbnVtIHsKKyAgICAgICAgVkVS
VEVYID0gMCwKKyAgICAgICAgRlJBR01FTlQgPSAxLAorICAgICAgICBDT01QVVRFID0gMgorICAg
IH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hh
ZGVyU3RhZ2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVy
U3RhZ2UuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhMzdhMzc0MTJkNDkzMDFiYmY1NzgxN2U4NTZjOTZkMDYz
NGNlNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTaGFkZXJTdGFnZS5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBodHRw
czovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndl
YmlkbAorCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOworCitbCisgICAgQ29uZGl0aW9uYWw9
V0VCR1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVLAorICAgIEltcGxlbWVudGF0aW9u
TGFja3NWVGFibGUKK10gaW50ZXJmYWNlIFdlYkdQVVNoYWRlclN0YWdlIHsKKyAgICBjb25zdCB1
MzIgVkVSVEVYID0gMDsKKyAgICBjb25zdCB1MzIgRlJBR01FTlQgPSAxOworICAgIGNvbnN0IHUz
MiBDT01QVVRFID0gMjsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V2ViR1BVU3dhcENoYWluLmNwcAppbmRleCAwMzgyYWU3YmRmYzc1YjVhNTIwOGUzYjVlNzA1YWZl
ZWFiOWY4ZTQ5Li44YWE2YTY4MmJlNDc5OTRlZGI4OGU2MWU4ZmIzMjRkYmYwNGMxMGQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAK
QEAgLTI4LDEyICsyOCwxNyBAQAogCiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorI2luY2x1ZGUgIldl
YkdQVURldmljZS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdlYkdQVVN3YXBDaGFpbjo6
fldlYkdQVVN3YXBDaGFpbigpID0gZGVmYXVsdDsKIAotdm9pZCBXZWJHUFVTd2FwQ2hhaW46OmNv
bmZpZ3VyZShjb25zdCBEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQordm9pZCBXZWJHUFVTd2FwQ2hh
aW46OmNvbmZpZ3VyZShEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKIHsKKyAgICBpZiAoZGVzY3Jp
cHRvci5kZXZpY2UpCisgICAgICAgIG1fc3dhcENoYWluLT5zZXREZXZpY2UoZGVzY3JpcHRvci5k
ZXZpY2UtPmRldmljZSgpKTsKKwogICAgIHJlc2hhcGUoZGVzY3JpcHRvci53aWR0aCwgZGVzY3Jp
cHRvci5oZWlnaHQpOwogfQogCkBAIC00NCwxMyArNDksMTIgQEAgdm9pZCBXZWJHUFVTd2FwQ2hh
aW46OnByZXNlbnQoKQogCiB2b2lkIFdlYkdQVVN3YXBDaGFpbjo6cmVzaGFwZShpbnQgd2lkdGgs
IGludCBoZWlnaHQpCiB7Ci0gICAgbV93aWR0aCA9IHdpZHRoOwotICAgIG1faGVpZ2h0ID0gaGVp
Z2h0OworICAgIG1fc3dhcENoYWluLT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOwogfQogCiB2b2lk
IFdlYkdQVVN3YXBDaGFpbjo6bWFya0xheWVyQ29tcG9zaXRlZCgpCiB7Ci0gICAgLy8gRklYTUU6
IFVuaW1wbGVtZW50ZWQgc3R1Yi4KKyAgICBtX3N3YXBDaGFpbi0+cHJlc2VudCgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVN3YXBDaGFpbi5oCmluZGV4IGY1NmQzNjFmODVkNGJiYjA0YjcwNjA5MzAwNGM4OTRm
MmYwMzM4NDcuLjA2Nzk1MDYyMTViYmYyZTgxOGI1MzFlZjE2ZGM0YmUyMjgyZjA0MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oCkBAIC0y
OCwyNSArMjgsMjkgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQogCiAjaW5jbHVkZSAiR1BVQmFzZWRD
YW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiR1BVU3dhcENoYWluLmgiCisjaW5j
bHVkZSAiV2ViR1BVRGV2aWNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2Vi
R1BVU3dhcENoYWluIDogcHVibGljIEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dCB7CiBw
dWJsaWM6CiAgICAgc3RydWN0IERlc2NyaXB0b3IgeworICAgICAgICBjb25zdCBXZWJHUFVEZXZp
Y2UqIGRldmljZSA9IG51bGxwdHI7CiAgICAgICAgIC8vIEZJWE1FOiBNb3JlIHRleHR1cmUgcHJv
cGVydGllcy4KICAgICAgICAgdW5zaWduZWQgbG9uZyB3aWR0aDsKICAgICAgICAgdW5zaWduZWQg
bG9uZyBoZWlnaHQ7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfldlYkdQVVN3YXBDaGFpbigpID0g
MDsKLSAgICB2b2lkIGNvbmZpZ3VyZShjb25zdCBEZXNjcmlwdG9yJik7CisgICAgdm9pZCBjb25m
aWd1cmUoRGVzY3JpcHRvciYmKTsKICAgICAvLyBGSVhNRTogV2ViR1BVVGV4dHVyZSBnZXROZXh0
VGV4dHVyZSgpOwogICAgIHZvaWQgcHJlc2VudCgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViR1BV
U3dhcENoYWluKENhbnZhc0Jhc2UmIGNhbnZhcykKKyAgICBXZWJHUFVTd2FwQ2hhaW4oQ2FudmFz
QmFzZSYgY2FudmFzLCBSZWZQdHI8R1BVU3dhcENoYWluPiYmIHN3YXBDaGFpbikKICAgICAgICAg
OiBHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQoY2FudmFzKQorICAgICAgICAsIG1fc3dh
cENoYWluKFdURk1vdmUoc3dhcENoYWluKSkKICAgICB7CiAgICAgfQogCkBAIC02Myw4ICs2Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGUgeyB9CiAgICAgYm9vbCBjYW5T
dXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KIAotICAgIHVuc2lnbmVkIGxvbmcgbV93aWR0aDsKLSAgICB1bnNpZ25lZCBsb25nIG1f
aGVpZ2h0OworICAgIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IG1fc3dhcENoYWluOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVN3YXBDaGFpbi5pZGwKaW5kZXggOTljYTkwZTQzY2E2MjM2OGUxZjlhYWViYTEzNDNm
ZjQzZTJhY2YyMC4uZWVmODVlYmM1YmQyNzQwMGE3NjU4Mzk2ODhkNWE5Y2NiOTAxN2JkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRs
CkBAIC0zNiw3ICszNiwxMSBAQAogCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwogCi1kaWN0
aW9uYXJ5IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3IgeworWworICAgIENvbmRpdGlvbmFsPVdF
QkdQVSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBkaWN0aW9uYXJ5IFdlYkdQVVN3
YXBDaGFpbkRlc2NyaXB0b3IgeworICAgIFdlYkdQVURldmljZSBkZXZpY2U7IC8vIEZJWE1FOiBQ
cm9wb3NlIHRoaXMgYWRkaXRpb24gdG8gSURMLgogICAgIC8vIFdlYkdQVVRleHR1cmVVc2FnZUZs
YWdzIHVzYWdlOwogICAgIC8vIFdlYkdQVVRleHR1cmVGb3JtYXRFbnVtIGZvcm1hdDsKICAgICB1
MzIgd2lkdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2Nv
YS9HUFVSZW5kZXJQaXBlbGluZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29j
b2EvR1BVUmVuZGVyUGlwZWxpbmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzkyYTkzMTQwOGYyNjVjOWRiNGJi
NGJhMGI0YTI1MDE5MmE5ZjdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmUuaApAQCAtMCwwICsxLDY2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKE1FVEFMKQorT0JKQ19QUk9UT0NPTChNVExSZW5k
ZXJQaXBlbGluZVN0YXRlKTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEdQVURldmljZTsKKworc3RydWN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKKworI2lm
IFVTRShNRVRBTCkKK3VzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmUgPSBNVExSZW5kZXJQaXBl
bGluZVN0YXRlOwordXNpbmcgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyID0gUmV0YWlu
UHRyPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+OworI2Vsc2UKK3VzaW5nIFBsYXRmb3JtUmVuZGVy
UGlwZWxpbmUgPSB2b2lkOwordXNpbmcgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyID0g
UmVmUHRyPHZvaWQ+OworI2VuZGlmCisKK2NsYXNzIEdQVVJlbmRlclBpcGVsaW5lIDogcHVibGlj
IFJlZkNvdW50ZWQ8R1BVUmVuZGVyUGlwZWxpbmU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
UHRyPEdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yJiYpOworCisgICAgUGxhdGZvcm1SZW5kZXJQaXBlbGluZSAqcGxh
dGZvcm1SZW5kZXJQaXBlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1SZW5kZXJQaXBl
bGluZS5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIEdQVVJlbmRlclBpcGVsaW5lKFBsYXRmb3Jt
UmVuZGVyUGlwZWxpbmVTbWFydFB0ciYmKTsKKworICAgIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVT
bWFydFB0ciBtX3BsYXRmb3JtUmVuZGVyUGlwZWxpbmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzY0ZDJmMWE3ZGU5ODBjOTlhMTEzM2M3MmFhN2JkYmNhZWUwMjkyOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQ
VVJlbmRlclBpcGVsaW5lTWV0YWwubW0KQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lLmgiCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW1wb3J0ICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIK
KyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIldlYkdQVVNoYWRlclN0YWdlLmgiCisKKyNp
bXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBib29sIHNldEZ1bmN0aW9uc0ZvclBp
cGVsaW5lRGVzY3JpcHRvcihjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIE1UTFJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciAqbXRsRGVzY3JpcHRvciwgR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yJiYgZGVzY3JpcHRvcikKK3sKKyNpZiBMT0dfRElTQUJMRUQKKyAgICBVTlVTRURfUEFS
QU0oZnVuY3Rpb25OYW1lKTsKKyNlbmRpZgorICAgIGZvciAoY29uc3QgYXV0byYgc3RhZ2VEZXNj
cmlwdG9yIDogZGVzY3JpcHRvci5zdGFnZXMpIHsKKyAgICAgICAgYXV0byBtdGxMaWJyYXJ5ID0g
cmV0YWluUHRyKHN0YWdlRGVzY3JpcHRvci5tb2R1bGUucGxhdGZvcm1TaGFkZXJNb2R1bGUoKSk7
CisKKyAgICAgICAgaWYgKCFtdGxMaWJyYXJ5KSB7CisgICAgICAgICAgICBMT0coV2ViR1BVLCAi
JXM6IE1UTExpYnJhcnkgZG9lcyBub3QgZXhpc3QhIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gZnVuY3Rpb24gPSBh
ZG9wdE5TKFttdGxMaWJyYXJ5IG5ld0Z1bmN0aW9uV2l0aE5hbWU6c3RhZ2VEZXNjcmlwdG9yLmVu
dHJ5UG9pbnRdKTsKKworICAgICAgICBpZiAoIWZ1bmN0aW9uKSB7CisgICAgICAgICAgICBMT0co
V2ViR1BVLCAiJXM6IE1UTEZ1bmN0aW9uICVzIG5vdCBmb3VuZCEiLCBmdW5jdGlvbk5hbWUsIHN0
YWdlRGVzY3JpcHRvci5lbnRyeVBvaW50LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChzdGFnZURlc2NyaXB0b3Iu
c3RhZ2UpIHsKKyAgICAgICAgY2FzZSBXZWJHUFVTaGFkZXJTdGFnZTo6VkVSVEVYOgorICAgICAg
ICAgICAgW210bERlc2NyaXB0b3Igc2V0VmVydGV4RnVuY3Rpb246ZnVuY3Rpb24uZ2V0KCldOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViR1BVU2hhZGVyU3RhZ2U6OkZSQUdN
RU5UOgorICAgICAgICAgICAgW210bERlc2NyaXB0b3Igc2V0RnJhZ21lbnRGdW5jdGlvbjpmdW5j
dGlvbi5nZXQoKV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBzaGFkZXIgc3RhZ2Ugc3BlY2lmaWVkISIs
IGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitSZWZQdHI8
R1BVUmVuZGVyUGlwZWxpbmU+IEdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoY29uc3QgR1BVRGV2
aWNlJiBkZXZpY2UsIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCit7
CisgICAgY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25OYW1lID0gIkdQVVJlbmRlclBpcGVsaW5l
OjpjcmVhdGUoKSI7CisKKyAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7CisgICAg
ICAgIExPRyhXZWJHUFUsICIlczogTVRMRGV2aWNlIGRvZXMgbm90IGV4aXN0ISIsIGZ1bmN0aW9u
TmFtZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFJldGFpblB0cjxN
VExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IG10bERlc2NyaXB0b3I7CisKKyAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBtdGxEZXNjcmlwdG9yID0gYWRvcHROUyhbTVRM
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIG5ld10pOworCisgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKKworICAgIGlmICghbXRsRGVzY3JpcHRvcikgeworICAgICAgICBMT0coV2ViR1BV
LCAiJXM6IEVycm9yIGNyZWF0aW5nIE1UTERlc2NyaXB0b3IhIiwgZnVuY3Rpb25OYW1lKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKCFzZXRGdW5jdGlvbnNGb3JQ
aXBlbGluZURlc2NyaXB0b3IoZnVuY3Rpb25OYW1lLCBtdGxEZXNjcmlwdG9yLmdldCgpLCBXVEZN
b3ZlKGRlc2NyaXB0b3IpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBGSVhN
RTogR2V0IHRoZSBwaXhlbEZvcm1hdCBhcyBjb25maWd1cmVkIGZvciB0aGUgY29udGV4dC9DQU1l
dGFsTGF5ZXIuCisgICAgbXRsRGVzY3JpcHRvci5nZXQoKS5jb2xvckF0dGFjaG1lbnRzWzBdLnBp
eGVsRm9ybWF0ID0gTVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtOworCisgICAgUGxhdGZvcm1SZW5k
ZXJQaXBlbGluZVNtYXJ0UHRyIHBpcGVsaW5lOworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TOworCisgICAgaWYgKFttdGxEZXNjcmlwdG9yIHZlcnRleEZ1bmN0aW9uXSkKKyAgICAg
ICAgcGlwZWxpbmUgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdSZW5kZXJQ
aXBlbGluZVN0YXRlV2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKSBlcnJvcjpuaWxd
KTsKKyAgICBlbHNlCisgICAgICAgIExPRyhXZWJHUFUsICIlczogTm8gdmVydGV4IGZ1bmN0aW9u
IGFzc2lnbmVkIGZvciBNVExSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IhIiwgZnVuY3Rpb25OYW1l
KTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBpZiAoIXBpcGVsaW5l
KSB7CisgICAgICAgIExPRyhXZWJHUFUsICIlczogRXJyb3IgY3JlYXRpbmcgTVRMUmVuZGVyUGlw
ZWxpbmVTdGF0ZSEiLCBmdW5jdGlvbk5hbWUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUo
cGlwZWxpbmUpKSk7Cit9CisKK0dQVVJlbmRlclBpcGVsaW5lOjpHUFVSZW5kZXJQaXBlbGluZShQ
bGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHImJiBwaXBlbGluZSkKKyAgICA6IG1fcGxhdGZv
cm1SZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVsaW5lKSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
bV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvY29jb2EvR1BVU3dhcENoYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJlNjJlMzk4ZWExNjBm
NGI0YzY3OTliMTg3ZDRiZWZkMjE4ODM2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbi5oCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNF
KE1FVEFMKQorT0JKQ19DTEFTUyBDQU1ldGFsTGF5ZXI7CisjZW5kaWYKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBHUFVEZXZpY2U7CisKKyNpZiBVU0UoTUVUQUwpCit1c2luZyBQbGF0
Zm9ybVN3YXBMYXllciA9IENBTWV0YWxMYXllcjsKK3VzaW5nIFBsYXRmb3JtU3dhcExheWVyU21h
cnRQdHIgPSBSZXRhaW5QdHI8Q0FNZXRhbExheWVyPjsKKyNlbHNlCit1c2luZyBQbGF0Zm9ybVN3
YXBMYXllciA9IHZvaWQ7Cit1c2luZyBQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRyID0gUmVmUHRy
PHZvaWQ+OworI2VuZGlmCisKK2NsYXNzIEdQVVN3YXBDaGFpbiA6IHB1YmxpYyBSZWZDb3VudGVk
PEdQVVN3YXBDaGFpbj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8R1BVU3dhcENoYWlu
PiBjcmVhdGUoKTsKKworICAgIHZvaWQgc2V0RGV2aWNlKGNvbnN0IEdQVURldmljZSYpOworICAg
IHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIHZvaWQgcHJlc2VudCgp
OworCisgICAgUGxhdGZvcm1Td2FwTGF5ZXIgKnBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVy
biBtX3BsYXRmb3JtU3dhcExheWVyLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgR1BVU3dhcENo
YWluKFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHImJik7CisKKyAgICBQbGF0Zm9ybVN3YXBMYXll
clNtYXJ0UHRyIG1fcGxhdGZvcm1Td2FwTGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZGZkMTYyZWJiODIzMTc3ZTQzNWNiOTY3YTJjNjNjZjdiNTVkYjk1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENoYWluTWV0
YWwubW0KQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiR1BVU3dhcENoYWluLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW1wb3J0
ICJHUFVEZXZpY2UuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKworI2ltcG9ydCA8TWV0YWwvTWV0
YWwuaD4KKyNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8d3RmL0Js
b2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8R1BV
U3dhcENoYWluPiBHUFVTd2FwQ2hhaW46OmNyZWF0ZSgpCit7CisgICAgUGxhdGZvcm1Td2FwTGF5
ZXJTbWFydFB0ciBwbGF0Zm9ybUxheWVyOworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOworCisgICAgcGxhdGZvcm1MYXllciA9IGFkb3B0TlMoW1tDQU1ldGFsTGF5ZXIgYWxsb2Nd
IGluaXRdKTsKKworICAgIFtwbGF0Zm9ybUxheWVyIHNldE9wYXF1ZTowXTsKKyAgICBbcGxhdGZv
cm1MYXllciBzZXROYW1lOkAiV2ViR1BVIExheWVyIl07CisKKyAgICAvLyBGSVhNRTogRm9yIG5v
dywgZGVmYXVsdCB0byB0aGVzZSBzZXR0aW5ncy4KKyAgICBbcGxhdGZvcm1MYXllciBzZXRQaXhl
bEZvcm1hdDpNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm1dOworICAgIFtwbGF0Zm9ybUxheWVyIHNl
dEZyYW1lYnVmZmVyT25seTpZRVNdOworCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
KworICAgIGlmICghcGxhdGZvcm1MYXllcikgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dh
cENoYWluOjpjcmVhdGUoKTogVW5hYmxlIHRvIGNyZWF0ZSBDQU1ldGFsTGF5ZXIhIik7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BV
U3dhcENoYWluKFdURk1vdmUocGxhdGZvcm1MYXllcikpKTsKK30KKworR1BVU3dhcENoYWluOjpH
UFVTd2FwQ2hhaW4oUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciYmIHBsYXRmb3JtTGF5ZXIpCisg
ICAgOiBtX3BsYXRmb3JtU3dhcExheWVyKFdURk1vdmUocGxhdGZvcm1MYXllcikpCit7Cit9CisK
K3ZvaWQgR1BVU3dhcENoYWluOjpzZXREZXZpY2UoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UpCit7
CisgICAgaWYgKCFkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSkgeworICAgICAgICBMT0coV2ViR1BV
LCAiR1BVU3dhcENoYWluOjpzZXREZXZpY2UoKTogTVRMRGV2aWNlIGRvZXMgbm90IGV4aXN0ISIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW21fcGxhdGZvcm1Td2FwTGF5ZXIgc2V0
RGV2aWNlOmRldmljZS5wbGF0Zm9ybURldmljZSgpXTsKK30KKwordm9pZCBHUFVTd2FwQ2hhaW46
OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIFttX3BsYXRmb3JtU3dhcExh
eWVyIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIHdpZHRoLCBoZWlnaHQpXTsKKyAgICBbbV9w
bGF0Zm9ybVN3YXBMYXllciBzZXREcmF3YWJsZVNpemU6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0
KV07Cit9CisKK3ZvaWQgR1BVU3dhcENoYWluOjpwcmVzZW50KCkKK3sKKyAgICAvLyBGSVhNRTog
VW5pbXBsZW1lbnRlZCBzdHViLgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBkNTAyNzc3MmIxZTZmYWM2YmY5
NDhmZTJmNzAyZDhhNWQyZjE4YjkwLi5lYTNlOGZlMTlkYjBlMWYxZDZjMTQ0OTI4ZWEyYjc0M2Uy
NzkzNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMzAyLDYgKzMwMiw3IEBAIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVEZXZpY2UuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250
ZXh0LmNwcAorTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwCiBNb2R1bGVz
L3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2Fw
Q2hhaW4uY3BwCiAKQEAgLTMxOTUsOSArMzE5NiwxNCBAQCBKU1dlYkdQVS5jcHAKIEpTV2ViR1BV
QWRhcHRlci5jcHAKIEpTV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuY3BwCiBKU1dlYkdQVURldmlj
ZS5jcHAKK0pTV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5jcHAKK0pTV2ViR1BVUGlwZWxp
bmVTdGFnZURlc2NyaXB0b3IuY3BwCiBKU1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwCitKU1dl
YkdQVVJlbmRlclBpcGVsaW5lLmNwcAorSlNXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
Y3BwCiBKU1dlYkdQVVNoYWRlck1vZHVsZS5jcHAKIEpTV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3Jp
cHRvci5jcHAKK0pTV2ViR1BVU2hhZGVyU3RhZ2UuY3BwCiBKU1dlYkdQVVN3YXBDaGFpbi5jcHAK
IEpTV2ViTWV0YWxCdWZmZXIuY3BwCiBKU1dlYk1ldGFsQ29tbWFuZEJ1ZmZlci5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0CmluZGV4IDE0NzRlNTkyNTk1MDQ5MzdhYjhjY2U1MmY1NjQ3YmQ4N2Y4
ZTBhNzQuLjMyOWZhODYwNjM4MDM2MGU0ZWU5YmVkYTA3MDA3NjkxZTg1N2FkZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dApAQCAtMjgsNyArMjgsOSBAQCBNb2R1bGVzL3BsdWdpbnMvWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmNwcAogTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFz
ZU1hbmFnZXJDb2NvYS5tbQogCiBNb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVEZXZpY2VNZXRhbC5t
bQorTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbQogTW9kdWxl
cy93ZWJncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0KK01vZHVsZXMvd2ViZ3B1L2Nv
Y29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCiAKIGFjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxp
dHlPYmplY3RJT1MubW0KIGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA2OTA1NzM5MzE1NWUwMmE5ZWY1MmU2ZGIyYjliZTcwMDUxN2NlNjVjLi4xM2E2ODU0ZTcyODdi
M2ZhMDkzZWQwMmI1ODA2M2VlMjk4MTgyZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzc3OSw2ICsxMzc3OSw5IEBACiAJ
CUQwNDVBRDIxMjE2ODI0NzQwMDBBNkU5QiAvKiBXZWJNZXRhbEJ1ZmZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJNZXRhbEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUQwNDVBRDIyMjE2ODI0NzQwMDBBNkU5QiAvKiBXZWJNZXRhbENvbW1hbmRCdWZmZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViTWV0YWxDb21tYW5kQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQwNDVBRDIzMjE2ODI0NzUwMDBBNkU5QiAvKiBXZWJNZXRhbENvbW1hbmRR
dWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJNZXRhbENvbW1hbmRRdWV1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwNDZGQjY1MjE4RDA3M0MwMENCOEY2MiAvKiBH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwNDZGQjY3
MjE4RDE4MDMwMENCOEY2MiAvKiBHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlEMDQ2RkI2ODIxOEQxOENEMDBDQjhGNjIgLyogR1BVUGlwZWxpbmVEZXNjcmlw
dG9yQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNTczRDQyMjE3RUI4MUUwMEQxQkU5MSAvKiBH
UFVMZWdhY3lUZXh0dXJlTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBHUFVMZWdhY3lUZXh0dXJlTWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQwNUNFRDI3MEE0MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdEJsb2NrQ29tbWFu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwNUNFRDI4MEE0MEJCMkMwMEM1
QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZvcm1hdEJsb2NrQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTM4MDIsNiArMTM4MDUsOCBAQAogCQlEMDkzRDIyNTIxNzk1MUQ0MDAzMjkyMTcgLyogV2Vi
R1BVUmVuZGVyaW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJpbmdDb250
ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwOTNEMjI3MjE3OTUxRDQwMDMy
OTIxNyAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA5M0QyMjkyMTc5NTQx
NjAwMzI5MjE3IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUQwOTcyN0I1MjE4N0Y0NDMwMDk0MkYzQSAvKiBHUFVTd2FwQ2hhaW4uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gR1BVU3dhcENoYWluLmg7IHBhdGggPSBjb2NvYS9HUFVTd2FwQ2hhaW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA5NzI3QjYyMTg3RjQ0MzAwOTQyRjNBIC8qIEdQVVN3
YXBDaGFpbk1ldGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVU3dhcENoYWluTWV0YWwu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwOTcyN0MyMjE4QTQ3MjkwMDk0MkYz
QSAvKiBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVNoYWRl
ck1vZHVsZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA5NzI3
Q0EyMThCRDdBNTAwOTQyRjNBIC8qIEdQVURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
UFVEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEEyMEQ1NDIwOTJB
MEE2MDBFMEMyNTkgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzODEyLDYgKzEzODE3LDE5IEBACiAJCUQwQkM1NDQ4
MTQ0M0FDNEEwMEUxMDVEQSAvKiBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFN0eWxlU2hlZXRDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBCRDRGNUExNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlv
bkNvbW1hbmRJT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlj
dGF0aW9uQ29tbWFuZElPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQkQ0
RjVCMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpY3RhdGlvbkNvbW1hbmRJT1MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RUIyMTgzQ0ZBMjAwOUVDMURFIC8qIFdlYkdQVVBpcGVs
aW5lU3RhZ2VEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lU3RhZ2VE
ZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUVDMjE4M0NG
QTIwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlEMEM0MTlFRTIxODNEOUM4MDA5RUMxREUgLyogV2ViR1BVU2hhZGVyU3RhZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViR1BVU2hhZGVyU3RhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRDBDNDE5RUYyMTgzRDlDODAwOUVDMURFIC8qIFdlYkdQVVNoYWRlclN0YWdlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJHUFVTaGFkZXJTdGFnZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUQwQzQxOUYwMjE4M0VCMzEwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RjEyMTgzRUIzMTAwOUVDMURFIC8qIFdlYkdQ
VVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRv
ckJhc2UuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlGMjIxODNFRkVD
MDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlEMEM0MTlGMzIxODNFRkVDMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlGNzIxODQwNERBMDA5RUMxREUg
LyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGlw
ZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RjgyMTg0MDREQTAw
OUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YkdQVVJlbmRlclBpcGVsaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBD
NDE5RjkyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJHUFVSZW5kZXJQaXBlbGluZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQw
QzQxOUZBMjE4NDBGNkMwMDlFQzFERSAvKiBHUFVSZW5kZXJQaXBlbGluZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBHUFVSZW5kZXJQaXBlbGluZS5oOyBwYXRoID0gY29jb2EvR1BVUmVuZGVyUGlwZWxpbmUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RkIyMTg0MEY2QzAwOUVDMURF
IC8qIEdQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHUFVS
ZW5kZXJQaXBlbGluZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMENB
QUU5ODIxNjgyNEE2MDAxQzkxQzcgLyogV2ViTWV0YWxCdWZmZXIuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYk1ldGFs
QnVmZmVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBDQUFFOUEyMTY4MjRB
NjAwMUM5MUM3IC8qIFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViTWV0YWxDb21t
YW5kQnVmZmVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBDQUFFOUIyMTY4
MjRBNzAwMUM5MUM3IC8qIFdlYk1ldGFsQ29tbWFuZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Yk1ldGFsQ29tbWFuZFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTQ0
OCw4ICsyNTQ2NiwxMyBAQAogCQkJCUQwMEY1OTQyMjE2RUNDN0EwMDBENzFEQiAvKiBET01XaW5k
b3dXZWJHUFUuaWRsICovLAogCQkJCUQwOTcyN0NBMjE4QkQ3QTUwMDk0MkYzQSAvKiBHUFVEZXZp
Y2UuY3BwICovLAogCQkJCUQwNjE1RkNGMjE3RkYxODUwMDhBNDhBOCAvKiBHUFVEZXZpY2UuaCAq
LywKKwkJCQlEMDQ2RkI2ODIxOEQxOENEMDBDQjhGNjIgLyogR1BVUGlwZWxpbmVEZXNjcmlwdG9y
QmFzZS5oICovLAorCQkJCUQwNDZGQjY3MjE4RDE4MDMwMENCOEY2MiAvKiBHUFVQaXBlbGluZVN0
YWdlRGVzY3JpcHRvci5oICovLAorCQkJCUQwQzQxOUZBMjE4NDBGNkMwMDlFQzFERSAvKiBHUFVS
ZW5kZXJQaXBlbGluZS5oICovLAorCQkJCUQwNDZGQjY1MjE4RDA3M0MwMENCOEY2MiAvKiBHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLywKIAkJCQlEMDYwRDg4ODIxODI4MEMxMDAzMzkz
MTggLyogR1BVU2hhZGVyTW9kdWxlLmggKi8sCiAJCQkJRDA5NzI3QzIyMThBNDcyOTAwOTQyRjNB
IC8qIEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCAqLywKKwkJCQlEMDk3MjdCNTIxODdGNDQz
MDA5NDJGM0EgLyogR1BVU3dhcENoYWluLmggKi8sCiAJCQkJRDAwRjU5NDcyMTZFRkU1NDAwMEQ3
MURCIC8qIFdlYkdQVS5jcHAgKi8sCiAJCQkJRDAwRjU5NDYyMTZFRkU1NDAwMEQ3MURCIC8qIFdl
YkdQVS5oICovLAogCQkJCUQwMEY1OTQ4MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUuaWRsICov
LApAQCAtMjU0NjEsMTQgKzI1NDg0LDI1IEBACiAJCQkJRDAwRjU5NTMyMTcwMUQ4QzAwMEQ3MURC
IC8qIFdlYkdQVURldmljZS5jcHAgKi8sCiAJCQkJRDAwRjU5NTIyMTcwMUQ4QzAwMEQ3MURCIC8q
IFdlYkdQVURldmljZS5oICovLAogCQkJCUQwMEY1OTU0MjE3MDFEOEMwMDBENzFEQiAvKiBXZWJH
UFVEZXZpY2UuaWRsICovLAorCQkJCUQwQzQxOUYwMjE4M0VCMzEwMDlFQzFERSAvKiBXZWJHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlLmggKi8sCisJCQkJRDBDNDE5RjEyMTgzRUIzMTAwOUVDMURF
IC8qIFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsICovLAorCQkJCUQwQzQxOUVCMjE4
M0NGQTIwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oICovLAorCQkJ
CUQwQzQxOUVDMjE4M0NGQTIwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRv
ci5pZGwgKi8sCiAJCQkJRDA5M0QyMjkyMTc5NTQxNjAwMzI5MjE3IC8qIFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQuY3BwICovLAogCQkJCUQwOTNEMjI1MjE3OTUxRDQwMDMyOTIxNyAvKiBXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0LmggKi8sCiAJCQkJRDA5M0QyMjcyMTc5NTFENDAwMzI5MjE3IC8qIFdl
YkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsICovLAorCQkJCUQwQzQxOUY4MjE4NDA0REEwMDlFQzFE
RSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAgKi8sCisJCQkJRDBDNDE5RjcyMTg0MDREQTAw
OUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lLmggKi8sCisJCQkJRDBDNDE5RjkyMTg0MDRE
QTAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lLmlkbCAqLywKKwkJCQlEMEM0MTlGMjIx
ODNFRkVDMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggKi8sCisJ
CQkJRDBDNDE5RjMyMTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5pZGwgKi8sCiAJCQkJRDA2MTVGQ0QyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRl
ck1vZHVsZS5jcHAgKi8sCiAJCQkJRDA2MTVGQ0MyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNo
YWRlck1vZHVsZS5oICovLAogCQkJCUQwNjE1RkNFMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVT
aGFkZXJNb2R1bGUuaWRsICovLAogCQkJCUQwNjBEODg3MjE4MjY5NzAwMDMzOTMxOCAvKiBXZWJH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmggKi8sCiAJCQkJRDA2MEQ4ODQyMTgyNUQ1RjAwMzM5
MzE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsICovLAorCQkJCUQwQzQxOUVF
MjE4M0Q5QzgwMDlFQzFERSAvKiBXZWJHUFVTaGFkZXJTdGFnZS5oICovLAorCQkJCUQwQzQxOUVG
MjE4M0Q5QzgwMDlFQzFERSAvKiBXZWJHUFVTaGFkZXJTdGFnZS5pZGwgKi8sCiAJCQkJRDBEQTBC
RTUyMTc5MzBFMjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5jcHAgKi8sCiAJCQkJRDBEQTBC
RTQyMTc5MzBFMjAwN0ZFMkFDIC8qIFdlYkdQVVN3YXBDaGFpbi5oICovLAogCQkJCUQwREEwQkU2
MjE3OTMwRTIwMDdGRTJBQyAvKiBXZWJHUFVTd2FwQ2hhaW4uaWRsICovLApAQCAtMjU0ODAsNyAr
MjU1MTQsOSBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlEMDYx
NUZEMTIxN0ZGMUUxMDA4QTQ4QTggLyogR1BVRGV2aWNlTWV0YWwubW0gKi8sCisJCQkJRDBDNDE5
RkIyMTg0MEY2QzAwOUVDMURFIC8qIEdQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0gKi8sCiAJCQkJ
RDA2MEQ4ODkyMTgyODBDMTAwMzM5MzE4IC8qIEdQVVNoYWRlck1vZHVsZU1ldGFsLm1tICovLAor
CQkJCUQwOTcyN0I2MjE4N0Y0NDMwMDk0MkYzQSAvKiBHUFVTd2FwQ2hhaW5NZXRhbC5tbSAqLywK
IAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4
IGQyOWRiYmQ1N2M0ODJkZmFhMDIzMzg2MDFiMTBmMDg2YzRhNDYzNmUuLjBiODg4M2NkZWZiNjUy
NWE3NzY5NjE4Yjc4M2U3MzVlN2I2MzNiNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTE3OCw2ICsxNzgsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oV2ViR1BVQWRhcHRlcikgXAogICAgIG1hY3JvKFdlYkdQ
VURldmljZSkgXAogICAgIG1hY3JvKFdlYkdQVVJlbmRlcmluZ0NvbnRleHQpIFwKKyAgICBtYWNy
byhXZWJHUFVSZW5kZXJQaXBlbGluZSkgXAorICAgIG1hY3JvKFdlYkdQVVNoYWRlclN0YWdlKSBc
CiAgICAgbWFjcm8oV2ViR1BVU2hhZGVyTW9kdWxlKSBcCiAgICAgbWFjcm8oV2ViR1BVU3dhcENo
YWluKSBcCiAgICAgbWFjcm8oV2ViTWV0YWxCdWZmZXIpIFwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNzE4NjA1MjBjMGIw
ZDk3YTM1YmQ1MDVmMzVkMjkzYTU4ZTYxNTlkLi4xNjFlMGYyZDI2ZjMzMzY2NDNjYTgzNzk1NTM0
NTVjNDhkOGNiMjJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTgtMTEtMDYgIEp1c3RpbiBG
YW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBFeHBlcmltZW50
YWwgcHJvdG90eXBlIGZvciBNU0wgc2hhZGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJncHUvanMvc2V0LXVwLXdlYmdwdS1jb250ZXh0cy5q
czogQWRkZWQgaGVscGVyIHNjcmlwdCBmb3IgcnVubmluZyBkaWZmZXJlbnQgd2ViZ3B1IHRlc3Rz
LgorICAgICAgICAocnVuV2ViR1BVVGVzdHMpOgorICAgICAgICAoYXN5bmMucnVuV2ViR1BVVGVz
dHNPbkNhbnZhcyk6CisgICAgICAgIChhc3luYy5zZXRVcENvbnRleHRzKToKKyAgICAgICAgKiB3
ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdl
YmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS9zaGFk
ZXItbW9kdWxlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViZ3B1L3NoYWRlci1tb2R1bGVz
Lmh0bWw6IFVwZGF0ZWQgdG8gdXNlIGZ1bmN0aW9ucyBpbiBzZXQtdXAtd2ViZ3B1LWNvbnRleHRz
LmpzLgorICAgICAgICAqIHdlYmdwdS93ZWJncHUtYmFzaWNzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiB3ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sOiBVcGRhdGVkIHRocm91Z2ggY3JlYXRpbmcg
YSBXZWJHUFVSZW5kZXJQaXBlbGluZS4KKwogMjAxOC0xMS0wMSAgSnVzdGluIEZhbiAgPGp1c3Rp
bl9mYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEV4cGVyaW1lbnRhbCBwcm90b3R5
cGUgZm9yIE1TTCBzaGFkZXJzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvanMvc2V0
LXVwLXdlYmdwdS1jb250ZXh0cy5qcyBiL0xheW91dFRlc3RzL3dlYmdwdS9qcy9zZXQtdXAtd2Vi
Z3B1LWNvbnRleHRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MzA1NjA0ZGFlZTNmYmE1NzVjM2I0OThmZDhl
OGJjY2IyZDMwYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvanMvc2V0
LXVwLXdlYmdwdS1jb250ZXh0cy5qcwpAQCAtMCwwICsxLDQ2IEBACisndXNlIHN0cmljdCc7CisK
K2xldCBjb250ZXh0LCBhZGFwdGVyLCBkZWZhdWx0RGV2aWNlOworCitmdW5jdGlvbiBydW5XZWJH
UFVUZXN0cyh0ZXN0cykgeworICAgIHJ1bldlYkdQVVRlc3RzT25DYW52YXMoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiY2FudmFzIiksIHRlc3RzKTsKK30KKworYXN5bmMgZnVuY3Rpb24gcnVuV2Vi
R1BVVGVzdHNPbkNhbnZhcyhjYW52YXMsIHRlc3RzKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdh
aXQgc2V0VXBDb250ZXh0cyhjYW52YXMpOworCisgICAgICAgIGZvciAobGV0IHRlc3Qgb2YgdGVz
dHMpCisgICAgICAgICAgICB0ZXN0KCk7CisKKyAgICAgICAgZGVidWcoIkFsbCB0ZXN0cyBjb21w
bGV0ZS4iKTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBjb25zb2xlLmVycm9yKGVy
cm9yKTsKKyAgICAgICAgdGVzdEZhaWxlZChgWyR7ZXJyb3J9XTogU2VlIGNvbnNvbGUhYCk7Cisg
ICAgfQorfQorCithc3luYyBmdW5jdGlvbiBzZXRVcENvbnRleHRzKGNhbnZhcykgeworICAgIGNv
bnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ3B1Iik7CisgICAgaWYgKCFjb250ZXh0KQor
ICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVSBjb250ZXh0ISIpOwor
CisgICAgc2hvdWxkQmVEZWZpbmVkKHdpbmRvdy53ZWJncHUpOworICAgIAorICAgIC8vIEZJWE1F
OiByZXF1ZXN0QWRhcHRlciBzaG91bGQgdGFrZSBhIFdlYkdQVUFkYXB0ZXJEZXNjcmlwdG9yLgor
ICAgIGFkYXB0ZXIgPSBhd2FpdCB3aW5kb3cud2ViZ3B1LnJlcXVlc3RBZGFwdGVyKHt9KTsKKyAg
ICBpZiAoIWFkYXB0ZXIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBk
ZWZhdWx0IFdlYkdQVUFkYXB0ZXIhIikKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8v
IEZJWE1FOiByZXF1ZXN0RGV2aWNlIHNob3VsZCB0YWtlIGEgV2ViR1BVRGV2aWNlRGVzY3JpcHRv
ci4KKyAgICBkZWZhdWx0RGV2aWNlID0gYWRhcHRlci5jcmVhdGVEZXZpY2UoKTsKKyAgICBpZiAo
IWRlZmF1bHREZXZpY2UpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBX
ZWJHUFVEZXZpY2UhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTog
RGVmYXVsdCB0byAiQjhHOFI4QThVbm9ybSIgZm9ybWF0IGZvciBub3cuCisgICAgY29udGV4dC5j
b25maWd1cmUoeyBkZXZpY2U6IGRlZmF1bHREZXZpY2UsIHdpZHRoOiBjYW52YXMud2lkdGgsIGhl
aWdodDogY2FudmFzLmhlaWdodCB9KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzI1YjQ3ZjlkZjVjMjU2ZWNjOWQyYTk1YjY2ZTBjNTZmMzkwNjdmNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEyIEBACitQQVNTIFtvYmplY3QgV2ViR1BVXSBpcyBkZWZpbmVkLgor
UEFTUyBTdWNjZXNzZnVsbHkgY3JlYXRlZCBXZWJHUFVSZW5kZXJQaXBlbGluZS4KK1BBU1MgV2Vi
R1BVUmVuZGVyUGlwZWxpbmUgd2l0aCBpbnZhbGlkIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciB3YXMgbm90IGNyZWF0ZWQuCitQQVNTIFdlYkdQVVJlbmRlclBpcGVsaW5lIHdpdGggaW52
YWxpZCBzaGFkZXIgbW9kdWxlIHdhcyBub3QgY3JlYXRlZC4KK1BBU1MgV2ViR1BVUmVuZGVyUGlw
ZWxpbmUgd2l0aCBpbnZhbGlkIHZlcnRleCBzaGFkZXIgc3RhZ2Ugd2FzIG5vdCBjcmVhdGVkLgor
UEFTUyBXZWJHUFVSZW5kZXJQaXBlbGluZSB3aXRoIGludmFsaWQgdmVydGV4IHNoYWRlciBlbnRy
eSBwb2ludCB3YXMgbm90IGNyZWF0ZWQuCitQQVNTIFdlYkdQVVJlbmRlclBpcGVsaW5lIHdpdGgg
aW52YWxpZCBXZWJHUFVTaGFkZXJTdGFnZUVudW0gd2FzIG5vdCBjcmVhdGVkLgorQWxsIHRlc3Rz
IGNvbXBsZXRlLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg1ZDRjMGEzY2M2NDliYzQwMzY0ODZmYWZmNDViYTYwYTM2YjQzODgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy5odG1sCkBAIC0wLDAgKzEs
MTM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ianMvc2V0LXVwLXdlYmdw
dS1jb250ZXh0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJsaWJyYXJ5IiB0eXBlPSJ4LXNo
YWRlci94LW1ldGFsIj4KKyAgICAjaW5jbHVkZSA8bWV0YWxfc3RkbGliPgorICAgIAorICAgIHVz
aW5nIG5hbWVzcGFjZSBtZXRhbDsKKyAgICAKKyAgICBzdHJ1Y3QgVmVydGV4CisgICAgeworICAg
ICAgICBmbG9hdDQgcG9zaXRpb24gW1twb3NpdGlvbl1dOworICAgIH07CisgICAgCisgICAgdmVy
dGV4IFZlcnRleCB2ZXJ0ZXhfbWFpbih1aW50IHZpZCBbW3ZlcnRleF9pZF1dKQorICAgIHsKKyAg
ICAgICAgVmVydGV4IHY7CisgICAgICAgIHN3aXRjaCAodmlkKSB7CisgICAgICAgIGNhc2UgMDoK
KyAgICAgICAgICAgIHYucG9zaXRpb24gPSBmbG9hdDQoLS43NSwgLS43NSwgMCwgMSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgdi5wb3NpdGlvbiA9
IGZsb2F0NCguNzUsIC0uNzUsIDAsIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgMjoKKyAgICAgICAgICAgIHYucG9zaXRpb24gPSBmbG9hdDQoMCwgLjc1LCAwLCAxKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdi5wb3NpdGlv
biA9IGZsb2F0NCgwLCAwLCAwLCAxKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdjsKKyAg
ICB9CisgICAgCisgICAgZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oVmVydGV4IHZlcnRl
eEluIFtbc3RhZ2VfaW5dXSkKKyAgICB7CisgICAgICAgIHJldHVybiBmbG9hdDQoMS4wLCAwLjAs
IDAuMCwgMS4wKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0cmljdCc7CisK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisKK2xldCBzaGFkZXJEZXNjcmlwdG9yLCBzaGFkZXJNb2R1bGUsIHZlcnRleFN0YWdlRGVz
Y3JpcHRvciwgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3I7CisKK2Z1bmN0aW9uIHNldFVwUGlwZWxp
bmUoKSB7CisgICAgc2hhZGVyRGVzY3JpcHRvciA9IHsKKyAgICAgICAgY29kZTogZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxpYnJhcnkiKS50ZXh0CisgICAgfTsKKworICAgIHNoYWRlck1vZHVs
ZSA9IGRlZmF1bHREZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHNoYWRlckRlc2NyaXB0b3IpOwor
ICAgIGlmICghc2hhZGVyTW9kdWxlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBj
cmVhdGUgV2ViR1BVU2hhZGVyTW9kdWxlISIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgdmVydGV4U3RhZ2VEZXNjcmlwdG9yID0geyAKKyAgICAgICAgbW9kdWxlOiBzaGFkZXJNb2R1
bGUsIAorICAgICAgICBzdGFnZTogV2ViR1BVU2hhZGVyU3RhZ2UuVkVSVEVYLCAKKyAgICAgICAg
ZW50cnlQb2ludDogInZlcnRleF9tYWluIiAKKyAgICB9OworCisgICAgZnJhZ21lbnRTdGFnZURl
c2NyaXB0b3IgPSB7CisgICAgICAgIG1vZHVsZTogc2hhZGVyTW9kdWxlLAorICAgICAgICBzdGFn
ZTogV2ViR1BVU2hhZGVyU3RhZ2UuRlJBR01FTlQsCisgICAgICAgIGVudHJ5UG9pbnQ6ICJmcmFn
bWVudF9tYWluIgorICAgIH07CisKKyAgICBsZXQgcGlwZWxpbmVEZXNjcmlwdG9yID0geworICAg
ICAgICBzdGFnZXM6IFt2ZXJ0ZXhTdGFnZURlc2NyaXB0b3IsIGZyYWdtZW50U3RhZ2VEZXNjcmlw
dG9yXSwKKyAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6ICJ0cmlhbmdsZUxpc3QiCisgICAgfTsK
KworICAgIGxldCByZW5kZXJQaXBlbGluZSA9IGRlZmF1bHREZXZpY2UuY3JlYXRlUmVuZGVyUGlw
ZWxpbmUocGlwZWxpbmVEZXNjcmlwdG9yKTsKKyAgICBpZiAocmVuZGVyUGlwZWxpbmUpCisgICAg
ICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIFdlYkdQVVJlbmRlclBpcGVsaW5l
LiIpCisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQ
VVJlbmRlclBpcGVsaW5lISIpOworfQorCitmdW5jdGlvbiBjaGVja0JhZFJlbmRlclBpcGVsaW5l
KGRlc2NyaXB0b3IsIHRlc3RTdWJqZWN0TmFtZSkgeworICAgIGxldCBwaXBlbGluZSA9IGRlZmF1
bHREZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoZGVzY3JpcHRvcik7CisKKyAgICBpZiAocGlw
ZWxpbmUpCisgICAgICAgIHRlc3RGYWlsZWQoYFdlYkdQVVJlbmRlclBpcGVsaW5lIHdhcyBjcmVh
dGVkIHdpdGggYW4gaW52YWxpZCAke3Rlc3RTdWJqZWN0TmFtZX0hYCk7CisgICAgZWxzZQorICAg
ICAgICB0ZXN0UGFzc2VkKGBXZWJHUFVSZW5kZXJQaXBlbGluZSB3aXRoIGludmFsaWQgJHt0ZXN0
U3ViamVjdE5hbWV9IHdhcyBub3QgY3JlYXRlZC5gKTsKK30KKworZnVuY3Rpb24gc2V0VXBCYWRQ
aXBlbGluZXMoKSB7CisgICAgY2hlY2tCYWRSZW5kZXJQaXBlbGluZSh7fSwgIldlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciIpOworCisgICAgbGV0IG5vTW9kdWxlVmVydGV4RGVzY3JpcHRv
ciA9IHsKKyAgICAgICAgc3RhZ2U6IFdlYkdQVVNoYWRlclN0YWdlLlZFUlRFWCwKKyAgICAgICAg
ZW50cnlQb2ludDogInZlcnRleF9tYWluIgorICAgIH0KKyAgICBsZXQgbm9Nb2R1bGVQaXBlbGlu
ZURlc2NyaXB0b3IgPSB7CisgICAgICAgIHN0YWdlczogW25vTW9kdWxlVmVydGV4RGVzY3JpcHRv
ciwgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3JdLAorICAgICAgICBwcmltaXRpdmVUb3BvbG9neTog
InRyaWFuZ2xlTGlzdCIKKyAgICB9CisgICAgY2hlY2tCYWRSZW5kZXJQaXBlbGluZShub01vZHVs
ZVBpcGVsaW5lRGVzY3JpcHRvciwgInNoYWRlciBtb2R1bGUiKTsKKworICAgIC8vIEEgKE1ldGFs
KSByZW5kZXJwaXBlbGluZSBtdXN0IGhhdmUgYSB2ZXJ0ZXggZnVuY3Rpb24uCisgICAgbGV0IG5v
VmVydGV4UGlwZWxpbmVEZXNjcmlwdG9yID0geworICAgICAgICBzdGFnZXM6IFtmcmFnbWVudFN0
YWdlRGVzY3JpcHRvcl0sCisgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAidHJpYW5nbGVMaXN0
IgorICAgIH0KKyAgICBjaGVja0JhZFJlbmRlclBpcGVsaW5lKG5vVmVydGV4UGlwZWxpbmVEZXNj
cmlwdG9yLCAidmVydGV4IHNoYWRlciBzdGFnZSIpCisKKyAgICBsZXQgYmFkRW50cnlQb2ludERl
c2NyaXB0b3IgPSB7IAorICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwgCisgICAgICAgIHN0
YWdlOiBXZWJHUFVTaGFkZXJTdGFnZS5WRVJURVgsIAorICAgICAgICBlbnRyeVBvaW50OiAiVmVy
dGV4X01haW4iIAorICAgIH07CisgICAgbGV0IGJhZEVudHJ5UG9pbnRQaXBlbGluZURlc2Nzcmlw
dG9yID0geworICAgICAgICBzdGFnZXM6IFtiYWRFbnRyeVBvaW50RGVzY3JpcHRvciwgZnJhZ21l
bnRTdGFnZURlc2NyaXB0b3JdLAorICAgICAgICBwcmltaXRpdmVUb3BvbG9neTogInRyaWFuZ2xl
TGlzdCIKKyAgICB9CisgICAgY2hlY2tCYWRSZW5kZXJQaXBlbGluZShiYWRFbnRyeVBvaW50UGlw
ZWxpbmVEZXNjc3JpcHRvciwgInZlcnRleCBzaGFkZXIgZW50cnkgcG9pbnQiKTsKKworICAgIGxl
dCBiYWRTdGFnZUVudW1EZXNjcmlwdG9yID0geyAKKyAgICAgICAgbW9kdWxlOiBzaGFkZXJNb2R1
bGUsIAorICAgICAgICBzdGFnZTogV2ViR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwgCisgICAgICAg
IGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhfbWFpbiIgCisgICAgfTsKKyAgICBsZXQgYmFkU3RhZ2VFbnVt
UGlwZWxpbmVEZXNjcmlwdG9yID0geworICAgICAgICBzdGFnZXM6IFtiYWRTdGFnZUVudW1EZXNj
cmlwdG9yLCBmcmFnbWVudFN0YWdlRGVzY3JpcHRvcl0sCisgICAgICAgIHByaW1pdGl2ZVRvcG9s
b2d5OiAidHJpYW5nbGVMaXN0IgorICAgIH0KKyAgICBjaGVja0JhZFJlbmRlclBpcGVsaW5lKGJh
ZFN0YWdlRW51bVBpcGVsaW5lRGVzY3JpcHRvciwgIldlYkdQVVNoYWRlclN0YWdlRW51bSIpOwor
fQorCitydW5XZWJHUFVUZXN0cyhbc2V0VXBQaXBlbGluZSwgc2V0VXBCYWRQaXBlbGluZXNdKTsK
Kworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXIt
bW9kdWxlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvc2hhZGVyLW1vZHVsZXMt
ZXhwZWN0ZWQudHh0CmluZGV4IGZhOTRiMzMwNzVlOGQ5YzA2MGVlZWIxZjE3MzAxMzM3YTExMGNm
MDYuLjBmODRlZGI2MzFlYjg4ZTk2YzQwNTg0ZTc2ZDhhZDUwZmIwZTZjY2YgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDgg
QEAKK1BBU1MgW29iamVjdCBXZWJHUFVdIGlzIGRlZmluZWQuCiBQQVNTIEJhZCBzaGFkZXIgY29k
ZSBzaG91bGQgbm90IGNyZWF0ZSBhIG1vZHVsZS4KIFBBU1MgSW5jb21wbGV0ZSBzaGFkZXIgY29k
ZSBzaG91bGQgbm90IGNyZWF0ZSBhIG1vZHVsZS4KIFBBU1MgU2hhZGVyIG1vZHVsZSBjcmVhdGVk
IHN1Y2Nlc3NmdWxseS4KK0FsbCB0ZXN0cyBjb21wbGV0ZS4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
Z3B1L3NoYWRlci1tb2R1bGVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvc2hhZGVyLW1vZHVs
ZXMuaHRtbAppbmRleCA4MjNiZTkyZDllNDlhOWRiNDljNTMzMDFiM2JhZWQ4NTYyNzYwNDg4Li4y
NjdjODAyNzBiMmNlYWZiNDViZjU3YmVkZjA3ZDVjZDMzZWRmMWYzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJncHUvc2hhZGVyLW1vZHVsZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvc2hhZGVyLW1vZHVsZXMuaHRtbApAQCAtMSw2ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgog
PGh0bWw+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJqcy9zZXQtdXAtd2ViZ3B1LWNvbnRleHRzLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgaWQ9ImxpYnJhcnlfZnVsbCIgdHlwZT0ieC1zaGFkZXIveC1tZXRhbCI+CiAgICAg
I2luY2x1ZGUgPG1ldGFsX3N0ZGxpYj4KICAgICAKQEAgLTcwLDIwICs3MSw2IEBACiBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCiAgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCi1s
ZXQgY2FudmFzOwotbGV0IGNvbnRleHQ7Ci1sZXQgYWRhcHRlcjsKLWxldCBkZWZhdWx0RGV2aWNl
OwotCi1hc3luYyBmdW5jdGlvbiBzZXRVcENvbnRleHRzKCkgewotICAgIGNhbnZhcyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29u
dGV4dCgid2ViZ3B1Iik7Ci0gICAgYWRhcHRlciA9IGF3YWl0IHdpbmRvdy53ZWJncHUucmVxdWVz
dEFkYXB0ZXIoe30pOwotICAgIGRlZmF1bHREZXZpY2UgPSBhZGFwdGVyLmNyZWF0ZURldmljZSgp
OwotCi0gICAgc2V0VXBTaGFkZXJzKCk7Ci19Ci0KIGZ1bmN0aW9uIHNldFVwU2hhZGVycygpIHsK
ICAgICBsZXQgc2hhZGVyRGVzY3JpcHRvcjAgPSB7CiAgICAgICAgIGNvZGUgOiAiSGVsbG8gV29y
bGQiCkBAIC0xMTUsOSArMTAyLDkgQEAgZnVuY3Rpb24gc2V0VXBTaGFkZXJzKCkgewogICAgICAg
ICB0ZXN0RmFpbGVkKCJTaGFkZXIgbW9kdWxlIG5vdCBjcmVhdGVkIHN1Y2Nlc3NmdWxseSEiKTsK
IH0KIAotc2V0VXBDb250ZXh0cygpOworcnVuV2ViR1BVVGVzdHMoW3NldFVwU2hhZGVyc10pOwog
Ci12YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXggZWIxZTUyNDEy
MDFjODQxYzcxOGMwM2VjZWY2NGU2OWEwMThiOGM4MC4uNDBkNTJlZDZiYzA0OGY2ZWZiNDI3OTUx
NzYxNWEyZWM3MGJiY2U4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1i
YXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS93ZWJncHUtYmFzaWNz
LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKIFBBU1MgW29iamVjdCBXZWJHUFVdIGlzIGRl
ZmluZWQuCitBbGwgdGVzdHMgY29tcGxldGUuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS93ZWJn
cHUtYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sCmlu
ZGV4IGY3Yzc2NzJmZDVjMTE5YWEyODVhNTM0NjEwY2UwZTQxM2M0YjdjNWIuLjMwODRmNmQwZDli
NjViNDQ2OTY1ODdjMmRiY2M1MGI5MDk5YzI5YjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dl
YmdwdS93ZWJncHUtYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1i
YXNpY3MuaHRtbApAQCAtMSw2ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJqcy9zZXQtdXAtd2ViZ3B1LWNvbnRleHRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgaWQ9
ImxpYnJhcnkiIHR5cGU9Ingtc2hhZGVyL3gtbWV0YWwiPgogICAgICNpbmNsdWRlIDxtZXRhbF9z
dGRsaWI+CiAgICAgCkBAIC00MSw0NiArNDIsOTYgQEAKIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
ICAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKLWxldCBjYW52YXM7Ci1sZXQg
Y29udGV4dDsKLWxldCBhZGFwdGVyOwotbGV0IGRlZmF1bHREZXZpY2U7CitsZXQgcmVuZGVyUGlw
ZWxpbmU7CiAKLWFzeW5jIGZ1bmN0aW9uIHNldFVwQ29udGV4dHMoKSB7Ci0gICAgY2FudmFzID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgY29udGV4dCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCJ3ZWJncHUiKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHRlc3RGYWls
ZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVIGNvbnRleHQhIik7CitmdW5jdGlvbiBzZXRVcFBp
cGVsaW5lKCkgeworICAgIGxldCBzaGFkZXJEZXNjcmlwdG9yID0geworICAgICAgICBjb2RlOiBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGlicmFyeSIpLnRleHQKKyAgICB9OworICAgIGxldCBz
aGFkZXJNb2R1bGUgPSBkZWZhdWx0RGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZShzaGFkZXJEZXNj
cmlwdG9yKTsKKyAgICBpZiAoIXNoYWRlck1vZHVsZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJD
b3VsZCBub3QgY3JlYXRlIFdlYkdQVVNoYWRlck1vZHVsZSEiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KIAotICAgIHNob3VsZEJlRGVmaW5lZCh3aW5kb3cud2ViZ3B1KTsKLSAgICAKLSAgICBh
ZGFwdGVyID0gYXdhaXQgd2luZG93LndlYmdwdS5yZXF1ZXN0QWRhcHRlcih7fSk7Ci0gICAgaWYg
KCFhZGFwdGVyKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgZGVmYXVs
dCBXZWJHUFVBZGFwdGVyISIpCisgICAgbGV0IHZlcnRleFN0YWdlRGVzY3JpcHRvciA9IHsgCisg
ICAgICAgIG1vZHVsZTogc2hhZGVyTW9kdWxlLCAKKyAgICAgICAgc3RhZ2U6IFdlYkdQVVNoYWRl
clN0YWdlLlZFUlRFWCwgCisgICAgICAgIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhfbWFpbiIgCisgICAg
fTsKKworICAgIGxldCBmcmFnbWVudFN0YWdlRGVzY3JpcHRvciA9IHsKKyAgICAgICAgbW9kdWxl
OiBzaGFkZXJNb2R1bGUsCisgICAgICAgIHN0YWdlOiBXZWJHUFVTaGFkZXJTdGFnZS5GUkFHTUVO
VCwKKyAgICAgICAgZW50cnlQb2ludDogImZyYWdtZW50X21haW4iCisgICAgfTsKKworICAgIGlm
ICghdmVydGV4U3RhZ2VEZXNjcmlwdG9yIHx8ICFmcmFnbWVudFN0YWdlRGVzY3JpcHRvcikgewor
ICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVVBpcGVsaW5lU3RhZ2VE
ZXNjcmlwdG9yISIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZGVmYXVsdERldmlj
ZSA9IGFkYXB0ZXIuY3JlYXRlRGV2aWNlKCk7Ci0gICAgaWYgKCFkZWZhdWx0RGV2aWNlKSB7Ci0g
ICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVRGV2aWNlISIpOworICAg
IGxldCBwaXBlbGluZURlc2NyaXB0b3IgPSB7CisgICAgICAgIHN0YWdlczogW3ZlcnRleFN0YWdl
RGVzY3JpcHRvciwgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3JdLAorICAgICAgICBwcmltaXRpdmVU
b3BvbG9neTogInRyaWFuZ2xlTGlzdCIKKyAgICB9OworCisgICAgaWYgKCFwaXBlbGluZURlc2Ny
aXB0b3IpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IhIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBz
ZXRVcFNoYWRlcnMoKTsKKyAgICByZW5kZXJQaXBlbGluZSA9IGRlZmF1bHREZXZpY2UuY3JlYXRl
UmVuZGVyUGlwZWxpbmUocGlwZWxpbmVEZXNjcmlwdG9yKTsKKyAgICBpZiAoIXJlbmRlclBpcGVs
aW5lKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVUmVuZGVy
UGlwZWxpbmUhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiB9CiAKLWZ1bmN0aW9uIHNldFVw
U2hhZGVycygpIHsKLSAgICBsZXQgc2hhZGVyRGVzY3JpcHRvciA9IHsKLSAgICAgICAgY29kZTog
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpYnJhcnkiKS50ZXh0Ci0gICAgfTsKLSAgICBsZXQg
c2hhZGVyTW9kdWxlID0gZGVmYXVsdERldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoc2hhZGVyRGVz
Y3JpcHRvcik7Ci0gICAgaWYgKCFzaGFkZXJNb2R1bGUpCi0gICAgICAgIHRlc3RGYWlsZWQoIkNv
dWxkIG5vdCBjcmVhdGUgV2ViR1BVU2hhZGVyTW9kdWxlISIpOworZnVuY3Rpb24gcmVuZGVyKCkg
eworICAgIC8vIGxldCBjb21tYW5kQnVmZmVyID0gZGVmYXVsdERldmljZS5jcmVhdGVDb21tYW5k
QnVmZmVyKCk7CisgICAgLy8gaWYgKCFjb21tYW5kQnVmZmVyKSB7CisgICAgLy8gICAgIHRlc3RG
YWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVQ29tbWFuZEJ1ZmZlciEiKTsKKyAgICAvLyAg
ICAgcmV0dXJuOworICAgIC8vIH0KKworICAgIC8vIGxldCB0ZXh0dXJlID0gY29udGV4dC5nZXRO
ZXh0VGV4dHVyZSgpOworICAgIC8vIGlmICghdGV4dHVyZSkgeworICAgIC8vICAgICB0ZXN0RmFp
bGVkKCJDb3VsZCBub3QgZ2V0IG5leHQgV2ViR1BVVGV4dHVyZSEiKTsKKyAgICAvLyAgICAgcmV0
dXJuOworICAgIC8vIH0KKworICAgIC8vIGxldCB0ZXh0dXJlVmlldyA9IGNvbnRleHQuY3JlYXRl
VGV4dHVyZVZpZXcoKTsKKyAgICAvLyBpZiAoIXRleHR1cmVWaWV3KSB7CisgICAgLy8gICAgIHRl
c3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVVGV4dHVyZVZpZXchIik7CisgICAgLy8g
ICAgIHJldHVybjsKKyAgICAvLyB9CisKKyAgICAvLyAvLyBGSVhNRTogRmxlc2ggb3V0IHRoZSBy
ZXN0IG9mIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLiBEZWZhdWx0IGxvYWRPcCwgc3RvcmVP
cCwgY2xlYXJDb2xvciBmb3Igbm93LgorICAgIC8vIGxldCByZW5kZXJQYXNzRGVzY3JpcHRvciA9
IHsKKyAgICAvLyAgICAgYXR0YWNobWVudCA6IHRleHR1cmVWaWV3CisgICAgLy8gfTsKKworICAg
IC8vIGxldCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRCdWZmZXIuYmVnaW5SZW5kZXJQYXNz
KHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKKyAgICAvLyByZW5kZXJQYXNzRW5jb2Rlci5zZXRQaXBl
bGluZShyZW5kZXJQaXBlbGluZSk7CisKKyAgICAvLyAvLyBOb3RlIHRoYXQgd2UgZGlkbid0IGF0
dGFjaCBhbnkgYnVmZmVycyAtIHRoZSBzaGFkZXIgaXMgZ2VuZXJhdGluZyB0aGUgdmVydGljZXMg
Zm9yIHVzLgorICAgIC8vIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoMywgMSwgMCwgMCk7CisgICAg
Ly8gcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOworCisgICAgLy8gbGV0IHF1ZXVlID0gZGV2
aWNlLmdldFF1ZXVlKCk7CisgICAgLy8gaWYgKCFxdWV1ZSkgeworICAgIC8vICAgICB0ZXN0RmFp
bGVkKCJVbmFibGUgdG8gY3JlYXRlIGRlZmF1bHQgV2ViR1BVUXVldWUhIik7CisgICAgLy8gICAg
IHJldHVybjsKKyAgICAvLyB9CisgICAgLy8gcXVldWUuc3VibWl0KFtjb21tYW5kQnVmZmVyXSk7
CisKKyAgICAvLyBjb250ZXh0LnByZXNlbnQoKTsKIH0KIAotc2V0VXBDb250ZXh0cygpOworcnVu
V2ViR1BVVGVzdHMoW3NldFVwUGlwZWxpbmUsIHJlbmRlcl0pOwogCi12YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354034</attachid>
            <date>2018-11-06 17:05:18 -0800</date>
            <delta_ts>2018-11-06 18:58:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191291-20181106170517.patch</filename>
            <type>text/plain</type>
            <size>87849</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3ODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM0NWVjODFlOTM1MDQx
ZGZkMmM5MTU2OThlMWM0NjIwNzNlOWZmMy4uNzNlMDJlZmI1YzU0OTc2ZWNiODlkM2E2ZjhmMjQ5
MzJlZDJkYzllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE4LTExLTA2ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRXhwZXJp
bWVudGFsIHByb3RvdHlwZSBmb3IgTVNMIHNoYWRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTI5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHdlYmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0
bWwKKyAgICAgICAgQWxzbyB1cGRhdGUgdGVzdCB3ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sIHRv
IGNyZWF0ZSBhIFdlYkdQVVJlbmRlclBpcGVsaW5lLgorCisgICAgICAgIEJlZ2luIGltcGxlbWVu
dGF0aW9uIG9mIFdlYkdQVVJlbmRlclBpcGVsaW5lIGFuZCBXZWJHUFVTd2FwQ2hhaW4uIEEgV2Vi
R1BVUmVuZGVyUGlwZWxpbmUgaXMgYmFja2VkIGJ5IGEKKyAgICAgICAgR1BVUmVuZGVyUGlwZWxp
bmUsIGNyZWF0ZWQgbGF6aWx5IHVzaW5nIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBwYXNzZWQtaW4g
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLgorICAgICAgICBPbiBNZXRhbC1zdXBwb3J0
ZWQgc3lzdGVtcywgR1BVUmVuZGVyUGlwZWxpbmUgaXMgYW4gaW50ZXJmYWNlIHRvIGEgTVRMUmVu
ZGVyUGlwZWxpbmVTdGF0ZS4KKyAgICAgICAgVGhlIE1UTFJlbmRlclBpcGVsaW5lU3RhdGUgaXMg
Y3JlYXRlZCB3aXRoIHRoZSBXZWJHUFVEZXZpY2UgY3VycmVudGx5IGNvbmZpZ3VyZWQgb24gdGhl
IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQ
VURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBp
cGVsaW5lIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjo6R1BVUmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvcjo6cHJpbWl0aXZlVG9wb2xvZ3kpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRl
clBpcGVsaW5lIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6YWRhcHRlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHUFVEZXZpY2U6OmRldmljZSBjb25zdCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5pZGw6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5k
ZXJQaXBlbGluZTo6V2ViR1BVUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVUmVuZGVyaW5n
Q29udGV4dDo6V2ViR1BVUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVNoYWRlck1vZHVsZS5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU2hhZGVyTW9kdWxl
Ojptb2R1bGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0
YWdlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHUFVTd2FwQ2hhaW46OmNvbmZpZ3VyZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHUFVTd2FwQ2hhaW46OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU3dhcENo
YWluOjptYXJrTGF5ZXJDb21wb3NpdGVkKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVTd2FwQ2hhaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVN3YXBDaGFpbjo6V2ViR1BV
U3dhcENoYWluKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRs
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6cGxhdGZvcm1SZW5kZXJQaXBlbGlu
ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxp
bmVNZXRhbC5tbTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRGdW5jdGlvbnNGb3JQaXBl
bGluZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGlwZWxpbmU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6R1BVUmVuZGVyUGlw
ZWxpbmUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpwbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkdQVVN3YXBDaGFpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQ
VVN3YXBDaGFpbjo6R1BVU3dhcENoYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVN3YXBDaGFp
bjo6c2V0RGV2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdQVVN3YXBDaGFpbjo6cmVzaGFwZSk6
CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OnByZXNlbnQpOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNv
cmVCdWlsdGluTmFtZXMuaDoKKwogMjAxOC0xMS0wMSAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEV4cGVyaW1lbnRhbCBwcm90b3R5cGUgZm9y
IE1TTCBzaGFkZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDlhZWIyZGRjY2Q5YjBhODYyMjY3
NTMzNTc2NjY2N2M1YjdhZmQ2NmMuLjIxMTQxMDk1ODc3Yzk1OGU5ZTk1YTM5MTA1MDI0NjkwNTA2
MTBlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00NTMsOSArNDUzLDE0IEBAIHNldChXZWJD
b3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5p
ZGwKICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyRGVzY3JpcHRvci5pZGwKICAgICBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCisgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BV
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGwKKyAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBl
bGluZVN0YWdlRGVzY3JpcHRvci5pZGwKKyAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQ
aXBlbGluZS5pZGwKKyAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGwK
ICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGUuaWRsCiAgICAgTW9kdWxlcy93
ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwKKyAgICBNb2R1bGVzL3dlYmdw
dS9XZWJHUFVTaGFkZXJTdGFnZS5pZGwKICAgICBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hh
aW4uaWRsCiAKICAgICBNb2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGRjYzc3MmM2NjZiN2Y5YTAwZDhlNzBkZGFiOGM4OGRh
YzZjNDQwMzEuLmY5NTkwOTAzMDhjMjU1MTIxYzRmZmU5NTM0NzQ2MDEwMjQ2NjI2YmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzczLDkgKzM3MywxNCBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVBZGFwdGVyRGVzY3JpcHRv
ci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbCBc
CisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JC
YXNlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZVN0
YWdlRGVzY3JpcHRvci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyaW5nQ29udGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUmVuZGVyUGlwZWxpbmUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVURldmljZS5jcHAKaW5kZXggZTg1MTE0NDA1OGRiMzcyZjBjNGQxMzY1YzAyZjU4NmJhOTcx
NWU2MC4uMDRjOTY3ZjJiZGU0OGZhYWY1NThjZjc5NDc0NWQ3ZTU4OTQ4OWZkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuY3BwCkBAIC0yOCw2ICsyOCw4IEBA
CiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisjaW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmUuaCIK
KyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJHUFVT
aGFkZXJNb2R1bGUuaCIKICNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCiAK
QEAgLTM4LDYgKzQwLDExIEBAIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IEdQVURldmljZTo6Y3Jl
YXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImCiAgICAgcmV0dXJuIEdQ
VVNoYWRlck1vZHVsZTo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKIH0KIAor
UmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5l
KEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0Cit7CisgICAg
cmV0dXJuIEdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZGVzY3JpcHRv
cikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
R1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVEZXZpY2UuaAppbmRleCBjMTll
MWVjZmY1YjdmOGQwM2Q3NWYzYzg3MTkxY2Q4NzkxODdiMWFiLi44OGIwY2QyYmVkZDVhOGJkN2Vl
MDFjNzg4OWQ2ODdmNzczNTBkNjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9HUFVEZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVEZXZpY2UuaApAQCAtNDYsMTQgKzQ2LDE3IEBAIHVzaW5nIFBsYXRmb3JtRGV2aWNlU21hcnRQ
dHIgPSBSZWZQdHI8dm9pZD47CiAjZW5kaWYKIAogY2xhc3MgR1BVU2hhZGVyTW9kdWxlOworY2xh
c3MgR1BVUmVuZGVyUGlwZWxpbmU7CiAKIHN0cnVjdCBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
Oworc3RydWN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKIAogY2xhc3MgR1BVRGV2aWNl
IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVRGV2aWNlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZlB0cjxHUFVEZXZpY2U+IGNyZWF0ZSgpOwogCiAgICAgUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4g
Y3JlYXRlU2hhZGVyTW9kdWxlKEdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3ImJikgY29uc3Q7Cisg
ICAgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5lPiBjcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3ImJikgY29uc3Q7CiAKICAgICBQbGF0Zm9ybURldmljZSAqcGxh
dGZvcm1EZXZpY2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRGV2aWNlLmdldCgpOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5l
RGVzY3JpcHRvckJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTI3NTViOWUyNjZhMmU4YjM4ZmE1ZDRiMDhm
ZDdlMTRlMjgxMjY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJH
UFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
IHsKKyAgICBWZWN0b3I8R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I+IHN0YWdlczsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZVN0YWdlRGVz
Y3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGNkZDQ4ZDBiYjE0YzkzZGZkMjljYTIyMDljZDBl
NzRjYWU5YTc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BV
U2hhZGVyTW9kdWxlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3Igewor
ICAgIGNvbnN0IEdQVVNoYWRlck1vZHVsZSYgbW9kdWxlOworICAgIHVuc2lnbmVkIGxvbmcgc3Rh
Z2U7CisgICAgU3RyaW5nIGVudHJ5UG9pbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wMDM1ZWE2MjIxNThkMzQ2OGUzN2ZkMWQ1NmQ4MzIzNWNkM2E1NGM2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UuaCIKKyNpbmNsdWRlICJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIgorCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IgOiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlIHsKKyAgICBl
bnVtIHsKKyAgICAgICAgUG9pbnRMaXN0LAorICAgICAgICBMaW5lTGlzdCwKKyAgICAgICAgTGlu
ZVN0cmlwLAorICAgICAgICBUcmlhbmdsZUxpc3QsCisgICAgICAgIFRyaWFuZ2xlU3RyaXAKKyAg
ICB9OworCisgICAgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKFZlY3RvcjxHUFVQaXBlbGlu
ZVN0YWdlRGVzY3JpcHRvcj4mJiBzdGFnZXMsIGludCB0b3BvbG9neSkKKyAgICAgICAgOiBHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlIHsgV1RGTW92ZShzdGFnZXMpIH0KKyAgICAgICAgLCBwcmlt
aXRpdmVUb3BvbG9neSh0b3BvbG9neSkKKyAgICB7CisgICAgfQorCisgICAgaW50IHByaW1pdGl2
ZVRvcG9sb2d5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuY3BwCmluZGV4IDEwYjliZjNkZjU4MWE5NWFlMzc2YjYyZDhhZGQxYTJhZWNhOWE3NzQuLmNj
MDRkZmNmYmM1YjJiNmVlMzEzNzU4YjEwZWRhNDA5NTllNmRlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcApAQCAtMjgsOSArMjgsMTMgQEAK
IAogI2lmIEVOQUJMRShXRUJHUFUpCiAKLSNpbmNsdWRlICJXZWJHUFVBZGFwdGVyLmgiCi0KKyNp
bmNsdWRlICJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZURlc2NyaXB0
b3IuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZS5oIgorI2luY2x1
ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIldlYkdQVVNo
YWRlck1vZHVsZS5oIgogI2luY2x1ZGUgIldlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCIK
IApAQCAtNTcsNiArNjEsMjAgQEAgUmVmUHRyPFdlYkdQVVNoYWRlck1vZHVsZT4gV2ViR1BVRGV2
aWNlOjpjcmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxlRGUKICAgICByZXR1cm4g
V2ViR1BVU2hhZGVyTW9kdWxlOjpjcmVhdGUobV9kZXZpY2UtPmNyZWF0ZVNoYWRlck1vZHVsZShH
UFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIHsgZGVzY3JpcHRvci5jb2RlIH0pKTsKIH0KIAorUmVm
UHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVs
aW5lKFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0Cit7
CisgICAgVmVjdG9yPEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yPiBzdGFnZXM7CisgICAgZm9y
IChjb25zdCBhdXRvJiBzdGFnZURlc2NyaXB0b3IgOiBkZXNjcmlwdG9yLnN0YWdlcykgeworICAg
ICAgICBpZiAoIXN0YWdlRGVzY3JpcHRvci5tb2R1bGUpIHsKKyAgICAgICAgICAgIExPRyhXZWJH
UFUsICJXZWJHUFVEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKCk6IFdlYkdQVVNoYWRlck1v
ZHVsZSBub3QgZm91bmQhIik7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
fQorICAgICAgICBzdGFnZXMuYXBwZW5kKHsgc3RhZ2VEZXNjcmlwdG9yLm1vZHVsZS0+bW9kdWxl
KCksIHN0YWdlRGVzY3JpcHRvci5zdGFnZSwgc3RhZ2VEZXNjcmlwdG9yLmVudHJ5UG9pbnQgfSk7
CisgICAgfQorCisgICAgcmV0dXJuIFdlYkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUobV9kZXZp
Y2UtPmNyZWF0ZVJlbmRlclBpcGVsaW5lKEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciB7IFdU
Rk1vdmUoc3RhZ2VzKSwgc3RhdGljX2Nhc3Q8aW50PihkZXNjcmlwdG9yLnByaW1pdGl2ZVRvcG9s
b2d5KSB9KSk7Cit9CisKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCmluZGV4IDRkNWIwYmFjMTc1OTYxYThk
ZWU3ZTkyMTg2NmJmYmE3MGZhMTM3MzEuLjdjMjdlMGI5NzIzMmQyOGE2MDVhMDRlYmUzMWI2Njg5
NDhmMGJkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmlj
ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdFQkdQVSkKIAogI2luY2x1ZGUgIkdQ
VURldmljZS5oIgorI2luY2x1ZGUgIldlYkdQVUFkYXB0ZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzcsMTcgKzM4LDIxIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNz
IFdlYkdQVUFkYXB0ZXI7CitjbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZTsKIGNsYXNzIFdlYkdQ
VVNoYWRlck1vZHVsZTsKIAorc3RydWN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsK
IHN0cnVjdCBXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yOwogCiBjbGFzcyBXZWJHUFVEZXZp
Y2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVEZXZpY2U+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmUHRyPFdlYkdQVURldmljZT4gY3JlYXRlKFJlZjxXZWJHUFVBZGFwdGVyPiYmKTsKIAot
ICAgIFdlYkdQVUFkYXB0ZXImIGFkYXB0ZXIoKSBjb25zdCB7IHJldHVybiBtX2FkYXB0ZXIuZ2V0
KCk7IH0KKyAgICBjb25zdCBXZWJHUFVBZGFwdGVyJiBhZGFwdGVyKCkgY29uc3QgeyByZXR1cm4g
bV9hZGFwdGVyLmdldCgpOyB9CisgICAgY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UoKSBjb25zdCB7
IHJldHVybiAqbV9kZXZpY2U7IH0KIAogICAgIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IGNy
ZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYpIGNvbnN0Owor
ICAgIFJlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVuZGVyUGlwZWxpbmUoV2Vi
R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFdl
YkdQVURldmljZShSZWY8V2ViR1BVQWRhcHRlcj4mJiwgUmVmUHRyPEdQVURldmljZT4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAppbmRleCBk
MWE5ZjFhMmM5YzMzZDU3MzAyYWQyOTc0ODYxODVjYjZiZTI3Y2VjLi42MDNlMzc2Y2IzOGUxMDQ1
ZWQ4OTFjMDJkMzFmNjk1OTFjODNjNzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVURldmljZS5pZGwKQEAgLTM0LDYgKzM0LDcgQEAKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgV2ViR1BVQWRhcHRlciBhZGFwdGVyOwogCiAgICAgV2ViR1BVU2hhZGVyTW9kdWxl
IGNyZWF0ZVNoYWRlck1vZHVsZShXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yIGRlc2NyaXB0
b3IpOworICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lIGNyZWF0ZVJlbmRlclBpcGVsaW5lKFdlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKIAogLyogVG8gQmUgSW1wbGVt
ZW50ZWQ6CiAgICAgV2ViR1BVQnVmZmVyIGNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJEZXNjcmlw
dG9yIGRlc2NyaXB0b3IpOwpAQCAtNDksOCArNTAsNiBAQAogICAgIFdlYkdQVUlucHV0U3RhdGUg
Y3JlYXRlSW5wdXRTdGF0ZShXZWJHUFVJbnB1dFN0YXRlRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsK
ICAgICBXZWJHUFVBdHRhY2htZW50U3RhdGUgY3JlYXRlQXR0YWNobWVudFN0YXRlKFdlYkdQVUF0
dGFjaG1lbnRTdGF0ZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BVQ29tcHV0ZVBp
cGVsaW5lIGNyZWF0ZUNvbXB1dGVQaXBlbGluZShXZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yIGRlc2NyaXB0b3IpOwotICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lIGNyZWF0ZVJlbmRlclBp
cGVsaW5lKFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKLQogICAg
IFdlYkdQVUNvbW1hbmRCdWZmZXIgY3JlYXRlQ29tbWFuZEJ1ZmZlcihXZWJHUFVDb21tYW5kQnVm
ZmVyRGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKICAgICBXZWJHUFVGZW5jZSBjcmVhdGVGZW5jZShX
ZWJHUFVGZW5jZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMTIxYTliYTU2ODM3NDAxNDNjZWMzMDU5MDgyYmM4MmNhNTQxNTkyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZS5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVQaXBlbGlu
ZVN0YWdlRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdHJ1Y3QgV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7CisgICAg
VmVjdG9yPFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yPiBzdGFnZXM7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9y
QmFzZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNmN2E3NjYxN2FiMTk1OWYyMDcxODg2OWI1OTdlN2Y1YzJl
NDkyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworLy8gaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9ncHV3ZWIvYmxvYi9tYXN0ZXIvZGVzaWdu
L3NrZXRjaC53ZWJpZGwKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVk
QXRSdW50aW1lPVdlYkdQVQorXSBkaWN0aW9uYXJ5IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UgeworICAgIC8vIFdlYkdQVVBpcGVsaW5lTGF5b3V0IGxheW91dDsKKyAgICBzZXF1ZW5jZTxX
ZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcj4gc3RhZ2VzOworfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVz
Y3JpcHRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzZjNhZTA5NTY1MDBkNGY3YjM3YzVlNTA3ZDA4N2FkZjBh
ZGExNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJH
UFVTaGFkZXJNb2R1bGUuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIFdlYkdQVVNoYWRlclN0YWdlRW51bSA9IHVuc2ln
bmVkIGxvbmc7CisKK3N0cnVjdCBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvciB7CisgICAg
Y29uc3QgV2ViR1BVU2hhZGVyTW9kdWxlKiBtb2R1bGUgPSBudWxscHRyOworICAgIFdlYkdQVVNo
YWRlclN0YWdlRW51bSBzdGFnZTsKKyAgICBTdHJpbmcgZW50cnlQb2ludDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3Jp
cHRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZVN0
YWdlRGVzY3JpcHRvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ2YjA4ODE3ZDkyZGE3YmNjZDAyOGFjN2Zl
M2VjYzExMjIzNTliNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmlkbApAQCAtMCwwICsxLDM2IEBA
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
dGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCisKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBXZWJHUFVT
aGFkZXJTdGFnZUVudW07CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxl
ZEF0UnVudGltZT1XZWJHUFUKK10gZGljdGlvbmFyeSBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3Jp
cHRvciB7CisgICAgV2ViR1BVU2hhZGVyTW9kdWxlIG1vZHVsZTsKKyAgICBXZWJHUFVTaGFkZXJT
dGFnZUVudW0gc3RhZ2U7CisgICAgRE9NU3RyaW5nIGVudHJ5UG9pbnQ7Cit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFiM2MwMjAwNDI4MmQ3YmVhMjMyZmFlZmRkNzU2ODU3ZDU0ZmRhNGYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5k
ZXJQaXBlbGluZS5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQaXBlbGluZS5oIgorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUmVmUHRyPFdlYkdQVVJlbmRlclBpcGVsaW5lPiBXZWJHUFVSZW5kZXJQaXBl
bGluZTo6Y3JlYXRlKFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKK3sKKyAg
ICBpZiAoIXBpcGVsaW5lKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViR1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpKTsKK30K
KworV2ViR1BVUmVuZGVyUGlwZWxpbmU6OldlYkdQVVJlbmRlclBpcGVsaW5lKFJlZlB0cjxHUFVS
ZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSkKKyAgICA6IG1fcmVuZGVyUGlwZWxpbmUocGlwZWxp
bmUpCit7CisgICAgVU5VU0VEX1BBUkFNKG1fcmVuZGVyUGlwZWxpbmUpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGI1MTA2MmNkZDI2MTk4YzBmYTBlOTdmODY5MmJmNzZjNmZhYTExYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVs
aW5lLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lLmgiCisKKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHUFVSZW5kZXJQaXBlbGluZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYkdQVVJlbmRlclBpcGVsaW5lPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0
cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlKFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4m
Jik7CisKK3ByaXZhdGU6CisgICAgV2ViR1BVUmVuZGVyUGlwZWxpbmUoUmVmUHRyPEdQVVJlbmRl
clBpcGVsaW5lPiYmKTsKKworICAgIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gbV9yZW5kZXJQ
aXBlbGluZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVSZW5kZXJQaXBlbGluZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVSZW5kZXJQaXBlbGluZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ2ZDAxYTI5NWUxYWFkZGExNzZkOTU1
YWQyOWVlNDkwYjQxMDNkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmlkbApAQCAtMCwwICsxLDMyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL2Rl
c2lnbi9za2V0Y2gud2ViaWRsCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5h
YmxlZEF0UnVudGltZT1XZWJHUFUsCisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQorXSBp
bnRlcmZhY2UgV2ViR1BVUmVuZGVyUGlwZWxpbmUgeworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDZlZWM1ZDhiNmZlZTI5NWU1ZjQwMTEwOWRhMWJhZDgxZTJlOGQ1
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXZWJHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciA6IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRv
ckJhc2UgeworICAgIGVudW0gY2xhc3MgUHJpbWl0aXZlVG9wb2xvZ3kgeworICAgICAgICBQb2lu
dExpc3QsCisgICAgICAgIExpbmVMaXN0LAorICAgICAgICBMaW5lU3RyaXAsCisgICAgICAgIFRy
aWFuZ2xlTGlzdCwKKyAgICAgICAgVHJpYW5nbGVTdHJpcAorICAgIH07CisKKyAgICBQcmltaXRp
dmVUb3BvbG9neSBwcmltaXRpdmVUb3BvbG9neTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43ZmE1NDQ3NDNkZjI2OWYyY2MzOGI4NDFmMjhhNTdhMjM1MGExNTk0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
Ky8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9z
a2V0Y2gud2ViaWRsCisKK2VudW0gV2ViR1BVUHJpbWl0aXZlVG9wb2xvZ3kgeworICAgICJwb2lu
dExpc3QiLAorICAgICJsaW5lTGlzdCIsCisgICAgImxpbmVTdHJpcCIsCisgICAgInRyaWFuZ2xl
TGlzdCIsCisgICAgInRyaWFuZ2xlU3RyaXAiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VC
R1BVLAorICAgIEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCitdIGRpY3Rpb25hcnkgV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yIDogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7Cisg
ICAgV2ViR1BVUHJpbWl0aXZlVG9wb2xvZ3kgcHJpbWl0aXZlVG9wb2xvZ3k7CisgICAgLyogVG8g
QmUgSW1wbGVtZW50ZWQ6CisgICAgc2VxdWVuY2U8V2ViR1BVQmxlbmRTdGF0ZT4gYmxlbmRTdGF0
ZXM7CisgICAgV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUgZGVwdGhTdGVuY2lsU3RhdGU7CisgICAg
V2ViR1BVSW5wdXRTdGF0ZSBpbnB1dFN0YXRlOworICAgIFdlYkdQVUF0dGFjaG1lbnRzU3RhdGUg
YXR0YWNobWVudHNTdGF0ZTsgKi8KKyAgICAvLyBUT0RPIG90aGVyIHByb3BlcnRpZXMKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmlu
Z0NvbnRleHQuY3BwCmluZGV4IDBiZDI3NjQzYWViMWU1ZWVkMTYyNDY0OTA2MTlmZDYxMWNkZTRj
N2MuLmVjM2UwNzZkNWIyZDAzNDE5YzE4NzFkMDY2NDFlNDNmZTllZWIyODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC0zMiwxMyArMzIsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6OnVu
aXF1ZV9wdHI8V2ViR1BVUmVuZGVyaW5nQ29udGV4dD4gV2ViR1BVUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlKENhbnZhc0Jhc2UmIGNhbnZhcykKIHsKLSAgICBhdXRvIGNvbnRleHQgPSBzdGQ6OnVu
aXF1ZV9wdHI8V2ViR1BVUmVuZGVyaW5nQ29udGV4dD4obmV3IFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQoY2FudmFzKSk7CisgICAgYXV0byBzd2FwQ2hhaW4gPSBHUFVTd2FwQ2hhaW46OmNyZWF0ZSgp
OworCisgICAgaWYgKCFzd2FwQ2hhaW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
YXV0byBjb250ZXh0ID0gc3RkOjp1bmlxdWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+KG5l
dyBXZWJHUFVSZW5kZXJpbmdDb250ZXh0KGNhbnZhcywgV1RGTW92ZShzd2FwQ2hhaW4pKSk7CiAg
ICAgY29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAK
LVdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OldlYkdQVVJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFz
ZSYgY2FudmFzKQotICAgIDogV2ViR1BVU3dhcENoYWluKGNhbnZhcykKK1dlYkdQVVJlbmRlcmlu
Z0NvbnRleHQ6OldlYkdQVVJlbmRlcmluZ0NvbnRleHQoQ2FudmFzQmFzZSYgY2FudmFzLCBSZWZQ
dHI8R1BVU3dhcENoYWluPiYmIHN3YXBDaGFpbikKKyAgICA6IFdlYkdQVVN3YXBDaGFpbihjYW52
YXMsIFdURk1vdmUoc3dhcENoYWluKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDQ5YTdkYWYx
Mzg2YTMxODY2OWFiOTMyY2FhM2ZiMjJiNWY5MWVlNjcuLjZmMWE3ZDk3ZDgzNGYzYmYzOGUwZGIw
NmJiMzljMDExM2E3YzIyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViR1BVUmVuZGVyaW5nQ29udGV4dD4gY3Jl
YXRlKENhbnZhc0Jhc2UmKTsKIAogcHJpdmF0ZToKLSAgICBXZWJHUFVSZW5kZXJpbmdDb250ZXh0
KENhbnZhc0Jhc2UmKTsKKyAgICBXZWJHUFVSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmLCBS
ZWZQdHI8R1BVU3dhcENoYWluPiYmKTsKICAgICAvLyBDYW52YXNSZW5kZXJpbmdDb250ZXh0CiAg
ICAgYm9vbCBpc1dlYkdQVSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICAvLyBB
Y3RpdmVET01PYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVNoYWRlck1vZHVsZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVU2hhZGVyTW9kdWxlLmgKaW5kZXggOTc5ODI5MDk1ZTQ5ZmRjYmE1ZjA5MDU5YmNiMjEzYTFi
ZDIwMTIyMi4uNTA2MGQ1NmE4YzU5NzA5YmExMDlhZmI4ZWQ5Mjc3MTE4MmFkNWU4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmgK
QEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQogCiAjaW5jbHVkZSAiR1BVU2hh
ZGVyTW9kdWxlLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KKwog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0z
OCw2ICszOCw4IEBAIGNsYXNzIFdlYkdQVVNoYWRlck1vZHVsZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYkdQVVNoYWRlck1vZHVsZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8V2ViR1BV
U2hhZGVyTW9kdWxlPiBjcmVhdGUoUmVmUHRyPEdQVVNoYWRlck1vZHVsZT4mJik7CiAKKyAgICBj
b25zdCBHUFVTaGFkZXJNb2R1bGUmIG1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuICptX21vZHVsZTsg
fQorCiBwcml2YXRlOgogICAgIFdlYkdQVVNoYWRlck1vZHVsZShSZWZQdHI8R1BVU2hhZGVyTW9k
dWxlPiYmKTsKIApAQCAtNDcsMyArNDksNCBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0YWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE3ZDQyZjU5
NjhhOTg3ODdhOWY5Njk5ODc3ZTA3NWY1MDQyYmMyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0YWdlLmgKQEAgLTAsMCArMSw0
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKwor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgV2ViR1BVU2hhZGVyU3RhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJHUFVTaGFkZXJTdGFn
ZT4geworcHVibGljOgorICAgIGVudW0geworICAgICAgICBWRVJURVggPSAwLAorICAgICAgICBG
UkFHTUVOVCA9IDEsCisgICAgICAgIENPTVBVVEUgPSAyCisgICAgfTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5pZGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2EzN2EzNzQxMmQ0OTMwMWJiZjU3ODE3ZTg1NmM5NmQwNjM0Y2U2YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0YWdlLmlk
bApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKy8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3
ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9za2V0Y2gud2ViaWRsCisKK3R5cGVkZWYgdW5z
aWduZWQgbG9uZyB1MzI7CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxl
ZEF0UnVudGltZT1XZWJHUFUsCisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQorXSBpbnRl
cmZhY2UgV2ViR1BVU2hhZGVyU3RhZ2UgeworICAgIGNvbnN0IHUzMiBWRVJURVggPSAwOworICAg
IGNvbnN0IHUzMiBGUkFHTUVOVCA9IDE7CisgICAgY29uc3QgdTMyIENPTVBVVEUgPSAyOworfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3Bw
CmluZGV4IDAzODJhZTdiZGZjNzViNWE1MjA4ZTNiNWU3MDVhZmVlYWI5ZjhlNDkuLjhhYTZhNjgy
YmU0Nzk5NGVkYjg4ZTYxZThmYjMyNGRiZjA0YzEwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcApAQCAtMjgsMTIgKzI4LDE3IEBA
CiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisjaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgiCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV2ViR1BVU3dhcENoYWluOjp+V2ViR1BVU3dhcENoYWluKCkg
PSBkZWZhdWx0OwogCi12b2lkIFdlYkdQVVN3YXBDaGFpbjo6Y29uZmlndXJlKGNvbnN0IERlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCit2b2lkIFdlYkdQVVN3YXBDaGFpbjo6Y29uZmlndXJlKERlc2Ny
aXB0b3ImJiBkZXNjcmlwdG9yKQogeworICAgIGlmIChkZXNjcmlwdG9yLmRldmljZSkKKyAgICAg
ICAgbV9zd2FwQ2hhaW4tPnNldERldmljZShkZXNjcmlwdG9yLmRldmljZS0+ZGV2aWNlKCkpOwor
CiAgICAgcmVzaGFwZShkZXNjcmlwdG9yLndpZHRoLCBkZXNjcmlwdG9yLmhlaWdodCk7CiB9CiAK
QEAgLTQ0LDEzICs0OSwxMiBAQCB2b2lkIFdlYkdQVVN3YXBDaGFpbjo6cHJlc2VudCgpCiAKIHZv
aWQgV2ViR1BVU3dhcENoYWluOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKLSAg
ICBtX3dpZHRoID0gd2lkdGg7Ci0gICAgbV9oZWlnaHQgPSBoZWlnaHQ7CisgICAgbV9zd2FwQ2hh
aW4tPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7CiB9CiAKIHZvaWQgV2ViR1BVU3dhcENoYWluOjpt
YXJrTGF5ZXJDb21wb3NpdGVkKCkKIHsKLSAgICAvLyBGSVhNRTogVW5pbXBsZW1lbnRlZCBzdHVi
LgorICAgIG1fc3dhcENoYWluLT5wcmVzZW50KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBD
aGFpbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmgK
aW5kZXggZjU2ZDM2MWY4NWQ0YmJiMDRiNzA2MDkzMDA0Yzg5NGYyZjAzMzg0Ny4uMDY3OTUwNjIx
NWJiZjJlODE4YjUzMWVmMTZkYzRiZTIyODJmMDQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmgKQEAgLTI4LDI1ICsyOCwyOSBAQAogI2lm
IEVOQUJMRShXRUJHUFUpCiAKICNpbmNsdWRlICJHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJHUFVTd2FwQ2hhaW4uaCIKKyNpbmNsdWRlICJXZWJHUFVEZXZpY2Uu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJHUFVTd2FwQ2hhaW4gOiBwdWJs
aWMgR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3Qg
RGVzY3JpcHRvciB7CisgICAgICAgIGNvbnN0IFdlYkdQVURldmljZSogZGV2aWNlID0gbnVsbHB0
cjsKICAgICAgICAgLy8gRklYTUU6IE1vcmUgdGV4dHVyZSBwcm9wZXJ0aWVzLgogICAgICAgICB1
bnNpZ25lZCBsb25nIHdpZHRoOwogICAgICAgICB1bnNpZ25lZCBsb25nIGhlaWdodDsKICAgICB9
OwogCiAgICAgdmlydHVhbCB+V2ViR1BVU3dhcENoYWluKCkgPSAwOwotICAgIHZvaWQgY29uZmln
dXJlKGNvbnN0IERlc2NyaXB0b3ImKTsKKyAgICB2b2lkIGNvbmZpZ3VyZShEZXNjcmlwdG9yJiYp
OwogICAgIC8vIEZJWE1FOiBXZWJHUFVUZXh0dXJlIGdldE5leHRUZXh0dXJlKCk7CiAgICAgdm9p
ZCBwcmVzZW50KCk7CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHUFVTd2FwQ2hhaW4oQ2FudmFzQmFz
ZSYgY2FudmFzKQorICAgIFdlYkdQVVN3YXBDaGFpbihDYW52YXNCYXNlJiBjYW52YXMsIFJlZlB0
cjxHUFVTd2FwQ2hhaW4+JiYgc3dhcENoYWluKQogICAgICAgICA6IEdQVUJhc2VkQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dChjYW52YXMpCisgICAgICAgICwgbV9zd2FwQ2hhaW4oV1RGTW92ZShzd2Fw
Q2hhaW4pKQogICAgIHsKICAgICB9CiAKQEAgLTYzLDggKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHN0b3AoKSBvdmVycmlkZSB7IH0KICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1
c3BlbnNpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdW5zaWdu
ZWQgbG9uZyBtX3dpZHRoOwotICAgIHVuc2lnbmVkIGxvbmcgbV9oZWlnaHQ7CisgICAgUmVmUHRy
PEdQVVN3YXBDaGFpbj4gbV9zd2FwQ2hhaW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hh
aW4uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlk
bAppbmRleCA5OWNhOTBlNDNjYTYyMzY4ZTFmOWFhZWJhMTM0M2ZmNDNlMmFjZjIwLi5lZWY4NWVi
YzViZDI3NDAwYTc2NTgzOTY4OGQ1YTljY2I5MDE3YmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwKQEAgLTM2LDcgKzM2LDExIEBA
CiAKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB1MzI7CiAKLWRpY3Rpb25hcnkgV2ViR1BVU3dhcENo
YWluRGVzY3JpcHRvciB7CitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRB
dFJ1bnRpbWU9V2ViR1BVCitdIGRpY3Rpb25hcnkgV2ViR1BVU3dhcENoYWluRGVzY3JpcHRvciB7
CisgICAgV2ViR1BVRGV2aWNlIGRldmljZTsgLy8gRklYTUU6IFByb3Bvc2UgdGhpcyBhZGRpdGlv
biB0byBJREwuCiAgICAgLy8gV2ViR1BVVGV4dHVyZVVzYWdlRmxhZ3MgdXNhZ2U7CiAgICAgLy8g
V2ViR1BVVGV4dHVyZUZvcm1hdEVudW0gZm9ybWF0OwogICAgIHUzMiB3aWR0aDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5l
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGlu
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY3OTJhOTMxNDA4ZjI2NWM5ZGI0YmI0YmEwYjRhMjUwMTkyYTlmN2YK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9H
UFVSZW5kZXJQaXBlbGluZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisK
KyNpZiBVU0UoTUVUQUwpCitPQkpDX1BST1RPQ09MKE1UTFJlbmRlclBpcGVsaW5lU3RhdGUpOwor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1BVRGV2aWNlOworCitzdHJ1
Y3QgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOworCisjaWYgVVNFKE1FVEFMKQordXNpbmcg
UGxhdGZvcm1SZW5kZXJQaXBlbGluZSA9IE1UTFJlbmRlclBpcGVsaW5lU3RhdGU7Cit1c2luZyBQ
bGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHIgPSBSZXRhaW5QdHI8TVRMUmVuZGVyUGlwZWxp
bmVTdGF0ZT47CisjZWxzZQordXNpbmcgUGxhdGZvcm1SZW5kZXJQaXBlbGluZSA9IHZvaWQ7Cit1
c2luZyBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHIgPSBSZWZQdHI8dm9pZD47CisjZW5k
aWYKKworY2xhc3MgR1BVUmVuZGVyUGlwZWxpbmUgOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVSZW5k
ZXJQaXBlbGluZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8R1BVUmVuZGVyUGlwZWxp
bmU+IGNyZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Im
Jik7CisKKyAgICBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lICpwbGF0Zm9ybVJlbmRlclBpcGVsaW5l
KCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lLmdldCgpOyB9CisKK3By
aXZhdGU6CisgICAgR1BVUmVuZGVyUGlwZWxpbmUoUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0
UHRyJiYpOworCisgICAgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyIG1fcGxhdGZvcm1S
ZW5kZXJQaXBlbGluZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjRk
MmYxYTdkZTk4MGM5OWExMTMzYzcyYWE3YmRiY2FlZTAyOTI5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRh
bC5tbQpAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiR1BVUmVuZGVyUGlwZWxpbmUuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgorI2ltcG9ydCAiTG9nZ2luZy5o
IgorI2ltcG9ydCAiV2ViR1BVU2hhZGVyU3RhZ2UuaCIKKworI2ltcG9ydCA8TWV0YWwvTWV0YWwu
aD4KKyNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIGJvb2wgc2V0RnVuY3Rpb25zRm9yUGlwZWxpbmVEZXNjcmlwdG9yKGNv
bnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSwgTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
ICptdGxEZXNjcmlwdG9yLCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9y
KQoreworI2lmIExPR19ESVNBQkxFRAorICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbk5hbWUpOwor
I2VuZGlmCisgICAgZm9yIChjb25zdCBhdXRvJiBzdGFnZURlc2NyaXB0b3IgOiBkZXNjcmlwdG9y
LnN0YWdlcykgeworICAgICAgICBhdXRvIG10bExpYnJhcnkgPSByZXRhaW5QdHIoc3RhZ2VEZXNj
cmlwdG9yLm1vZHVsZS5wbGF0Zm9ybVNoYWRlck1vZHVsZSgpKTsKKworICAgICAgICBpZiAoIW10
bExpYnJhcnkpIHsKKyAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogTVRMTGlicmFyeSBkb2Vz
IG5vdCBleGlzdCEiLCBmdW5jdGlvbk5hbWUpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisKKyAgICAgICAgYXV0byBmdW5jdGlvbiA9IGFkb3B0TlMoW210bExpYnJhcnkg
bmV3RnVuY3Rpb25XaXRoTmFtZTpzdGFnZURlc2NyaXB0b3IuZW50cnlQb2ludF0pOworCisgICAg
ICAgIGlmICghZnVuY3Rpb24pIHsKKyAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogTVRMRnVu
Y3Rpb24gJXMgbm90IGZvdW5kISIsIGZ1bmN0aW9uTmFtZSwgc3RhZ2VEZXNjcmlwdG9yLmVudHJ5
UG9pbnQudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKworICAgICAgICBzd2l0Y2ggKHN0YWdlRGVzY3JpcHRvci5zdGFnZSkgeworICAgICAgICBj
YXNlIFdlYkdQVVNoYWRlclN0YWdlOjpWRVJURVg6CisgICAgICAgICAgICBbbXRsRGVzY3JpcHRv
ciBzZXRWZXJ0ZXhGdW5jdGlvbjpmdW5jdGlvbi5nZXQoKV07CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBXZWJHUFVTaGFkZXJTdGFnZTo6RlJBR01FTlQ6CisgICAgICAgICAgICBb
bXRsRGVzY3JpcHRvciBzZXRGcmFnbWVudEZ1bmN0aW9uOmZ1bmN0aW9uLmdldCgpXTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBJbnZhbGlkIHNoYWRlciBzdGFnZSBzcGVjaWZpZWQhIiwgZnVuY3Rpb25OYW1lKTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK1JlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4g
R1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKK3sKKyAgICBjb25zdCBjaGFyKiBj
b25zdCBmdW5jdGlvbk5hbWUgPSAiR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZSgpIjsKKworICAg
IGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIiVz
OiBNVExEZXZpY2UgZG9lcyBub3QgZXhpc3QhIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKKworICAgIG10bERlc2NyaXB0b3IgPSBhZG9wdE5TKFtNVExSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3IgbmV3XSk7CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgaWYg
KCFtdGxEZXNjcmlwdG9yKSB7CisgICAgICAgIExPRyhXZWJHUFUsICIlczogRXJyb3IgY3JlYXRp
bmcgTVRMRGVzY3JpcHRvciEiLCBmdW5jdGlvbk5hbWUpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBpZiAoIXNldEZ1bmN0aW9uc0ZvclBpcGVsaW5lRGVzY3JpcHRvcihm
dW5jdGlvbk5hbWUsIG10bERlc2NyaXB0b3IuZ2V0KCksIFdURk1vdmUoZGVzY3JpcHRvcikpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEZJWE1FOiBHZXQgdGhlIHBpeGVsRm9y
bWF0IGFzIGNvbmZpZ3VyZWQgZm9yIHRoZSBjb250ZXh0L0NBTWV0YWxMYXllci4KKyAgICBtdGxE
ZXNjcmlwdG9yLmdldCgpLmNvbG9yQXR0YWNobWVudHNbMF0ucGl4ZWxGb3JtYXQgPSBNVExQaXhl
bEZvcm1hdEJHUkE4VW5vcm07CisKKyAgICBQbGF0Zm9ybVJlbmRlclBpcGVsaW5lU21hcnRQdHIg
cGlwZWxpbmU7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBpZiAo
W210bERlc2NyaXB0b3IgdmVydGV4RnVuY3Rpb25dKQorICAgICAgICBwaXBlbGluZSA9IGFkb3B0
TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld1JlbmRlclBpcGVsaW5lU3RhdGVXaXRoRGVz
Y3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpIGVycm9yOm5pbF0pOworICAgIGVsc2UKKyAgICAg
ICAgTE9HKFdlYkdQVSwgIiVzOiBObyB2ZXJ0ZXggZnVuY3Rpb24gYXNzaWduZWQgZm9yIE1UTFJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvciEiLCBmdW5jdGlvbk5hbWUpOworCisgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKKworICAgIGlmICghcGlwZWxpbmUpIHsKKyAgICAgICAgTE9HKFdl
YkdQVSwgIiVzOiBFcnJvciBjcmVhdGluZyBNVExSZW5kZXJQaXBlbGluZVN0YXRlISIsIGZ1bmN0
aW9uTmFtZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgR1BVUmVuZGVyUGlwZWxpbmUoV1RGTW92ZShwaXBlbGluZSkpKTsKK30KKwor
R1BVUmVuZGVyUGlwZWxpbmU6OkdQVVJlbmRlclBpcGVsaW5lKFBsYXRmb3JtUmVuZGVyUGlwZWxp
bmVTbWFydFB0ciYmIHBpcGVsaW5lKQorICAgIDogbV9wbGF0Zm9ybVJlbmRlclBpcGVsaW5lKFdU
Rk1vdmUocGlwZWxpbmUpKQoreworICAgIFVOVVNFRF9QQVJBTShtX3BsYXRmb3JtUmVuZGVyUGlw
ZWxpbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2Ev
R1BVU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVT
d2FwQ2hhaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYmU2MmUzOThlYTE2MGY0YjRjNjc5OWIxODdkNGJlZmQy
MTg4MzZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
Y29jb2EvR1BVU3dhcENoYWluLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBVU0UoTUVUQUwpCitPQkpDX0NMQVNT
IENBTWV0YWxMYXllcjsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQ
VURldmljZTsKKworI2lmIFVTRShNRVRBTCkKK3VzaW5nIFBsYXRmb3JtU3dhcExheWVyID0gQ0FN
ZXRhbExheWVyOwordXNpbmcgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciA9IFJldGFpblB0cjxD
QU1ldGFsTGF5ZXI+OworI2Vsc2UKK3VzaW5nIFBsYXRmb3JtU3dhcExheWVyID0gdm9pZDsKK3Vz
aW5nIFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHIgPSBSZWZQdHI8dm9pZD47CisjZW5kaWYKKwor
Y2xhc3MgR1BVU3dhcENoYWluIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVU3dhcENoYWluPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxHUFVTd2FwQ2hhaW4+IGNyZWF0ZSgpOworCisgICAg
dm9pZCBzZXREZXZpY2UoY29uc3QgR1BVRGV2aWNlJik7CisgICAgdm9pZCByZXNoYXBlKGludCB3
aWR0aCwgaW50IGhlaWdodCk7CisgICAgdm9pZCBwcmVzZW50KCk7CisKKyAgICBQbGF0Zm9ybVN3
YXBMYXllciAqcGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Td2FwTGF5
ZXIuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBHUFVTd2FwQ2hhaW4oUGxhdGZvcm1Td2FwTGF5
ZXJTbWFydFB0ciYmKTsKKworICAgIFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHIgbV9wbGF0Zm9y
bVN3YXBMYXllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9j
b2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkZmQxNjJlYmI4MjMxNzdl
NDM1Y2I5NjdhMmM2M2NmN2I1NWRiOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQpAQCAtMCwwICsxLDkz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVTd2FwQ2hh
aW4uaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbXBvcnQgIkdQVURldmljZS5oIgorI2lt
cG9ydCAiTG9nZ2luZy5oIgorCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorI2ltcG9ydCA8UXVh
cnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxHUFVTd2FwQ2hhaW4+IEdQVVN3YXBD
aGFpbjo6Y3JlYXRlKCkKK3sKKyAgICBQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRyIHBsYXRmb3Jt
TGF5ZXI7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBwbGF0Zm9y
bUxheWVyID0gYWRvcHROUyhbW0NBTWV0YWxMYXllciBhbGxvY10gaW5pdF0pOworCisgICAgW3Bs
YXRmb3JtTGF5ZXIgc2V0T3BhcXVlOjBdOworICAgIFtwbGF0Zm9ybUxheWVyIHNldE5hbWU6QCJX
ZWJHUFUgTGF5ZXIiXTsKKworICAgIC8vIEZJWE1FOiBGb3Igbm93LCBkZWZhdWx0IHRvIHRoZXNl
IHNldHRpbmdzLgorICAgIFtwbGF0Zm9ybUxheWVyIHNldFBpeGVsRm9ybWF0Ok1UTFBpeGVsRm9y
bWF0QkdSQThVbm9ybV07CisgICAgW3BsYXRmb3JtTGF5ZXIgc2V0RnJhbWVidWZmZXJPbmx5OllF
U107CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgaWYgKCFwbGF0Zm9y
bUxheWVyKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46OmNyZWF0ZSgpOiBV
bmFibGUgdG8gY3JlYXRlIENBTWV0YWxMYXllciEiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVTd2FwQ2hhaW4oV1RGTW92ZShw
bGF0Zm9ybUxheWVyKSkpOworfQorCitHUFVTd2FwQ2hhaW46OkdQVVN3YXBDaGFpbihQbGF0Zm9y
bVN3YXBMYXllclNtYXJ0UHRyJiYgcGxhdGZvcm1MYXllcikKKyAgICA6IG1fcGxhdGZvcm1Td2Fw
TGF5ZXIoV1RGTW92ZShwbGF0Zm9ybUxheWVyKSkKK3sKK30KKwordm9pZCBHUFVTd2FwQ2hhaW46
OnNldERldmljZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSkKK3sKKyAgICBpZiAoIWRldmljZS5w
bGF0Zm9ybURldmljZSgpKSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46OnNl
dERldmljZSgpOiBNVExEZXZpY2UgZG9lcyBub3QgZXhpc3QhIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBbbV9wbGF0Zm9ybVN3YXBMYXllciBzZXREZXZpY2U6ZGV2aWNlLnBsYXRm
b3JtRGV2aWNlKCldOworfQorCit2b2lkIEdQVVN3YXBDaGFpbjo6cmVzaGFwZShpbnQgd2lkdGgs
IGludCBoZWlnaHQpCit7CisgICAgW21fcGxhdGZvcm1Td2FwTGF5ZXIgc2V0Qm91bmRzOkNHUmVj
dE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCldOworICAgIFttX3BsYXRmb3JtU3dhcExheWVyIHNl
dERyYXdhYmxlU2l6ZTpDR1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpXTsKK30KKwordm9pZCBHUFVT
d2FwQ2hhaW46OnByZXNlbnQoKQoreworICAgIC8vIEZJWE1FOiBVbmltcGxlbWVudGVkIHN0dWIu
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IGQ1MDI3NzcyYjFlNmZhYzZiZjk0OGZlMmY3MDJkOGE1ZDJmMThi
OTAuLmVhM2U4ZmUxOWRiMGUxZjFkNmMxNDQ5MjhlYTJiNzQzZTI3OTM0OWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0zMDIsNiArMzAyLDcgQEAgTW9kdWxlcy93ZWJncHUvV2ViR1BVLmNwcAogTW9kdWxl
cy93ZWJncHUvV2ViR1BVQWRhcHRlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5j
cHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuY3BwCitNb2R1bGVzL3dl
YmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRl
ck1vZHVsZS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAKIApAQCAtMzE5
NSw5ICszMTk2LDE0IEBAIEpTV2ViR1BVLmNwcAogSlNXZWJHUFVBZGFwdGVyLmNwcAogSlNXZWJH
UFVBZGFwdGVyRGVzY3JpcHRvci5jcHAKIEpTV2ViR1BVRGV2aWNlLmNwcAorSlNXZWJHUFVQaXBl
bGluZURlc2NyaXB0b3JCYXNlLmNwcAorSlNXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5j
cHAKIEpTV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAKK0pTV2ViR1BVUmVuZGVyUGlwZWxpbmUu
Y3BwCitKU1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKIEpTV2ViR1BVU2hhZGVy
TW9kdWxlLmNwcAogSlNXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmNwcAorSlNXZWJHUFVT
aGFkZXJTdGFnZS5jcHAKIEpTV2ViR1BVU3dhcENoYWluLmNwcAogSlNXZWJNZXRhbEJ1ZmZlci5j
cHAKIEpTV2ViTWV0YWxDb21tYW5kQnVmZmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggMTQ3NGU1OTI1OTUwNDkzN2FiOGNjZTUyZjU2NDdiZDg3ZjhlMGE3NC4uMzI5ZmE4NjA2Mzgw
MzYwZTRlZTliZWRhMDcwMDc2OTFlODU3YWRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBA
IC0yOCw3ICsyOCw5IEBAIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQu
Y3BwCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCiAK
IE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVURldmljZU1ldGFsLm1tCitNb2R1bGVzL3dlYmdwdS9j
b2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCiBNb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVT
aGFkZXJNb2R1bGVNZXRhbC5tbQorTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENoYWluTWV0
YWwubW0KIAogYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQogYWNj
ZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY5MDU3MzkzMTU1ZTAyYTll
ZjUyZTZkYjJiOWJlNzAwNTE3Y2U2NWMuLjEzYTY4NTRlNzI4N2IzZmEwOTNlZDAyYjU4MDYzZWUy
OTgxODJlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEzNzc5LDYgKzEzNzc5LDkgQEAKIAkJRDA0NUFEMjEyMTY4MjQ3NDAw
MEE2RTlCIC8qIFdlYk1ldGFsQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1ldGFs
QnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA0NUFEMjIyMTY4MjQ3
NDAwMEE2RTlCIC8qIFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJN
ZXRhbENvbW1hbmRCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA0NUFE
MjMyMTY4MjQ3NTAwMEE2RTlCIC8qIFdlYk1ldGFsQ29tbWFuZFF1ZXVlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZFF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRDA0NkZCNjUyMThEMDczQzAwQ0I4RjYyIC8qIEdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA0NkZCNjcyMThEMTgwMzAwQ0I4RjYyIC8q
IEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVBpcGVsaW5l
U3RhZ2VEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwNDZGQjY4
MjE4RDE4Q0QwMENCOEY2MiAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRDA1NzNENDIyMTdFQjgxRTAwRDFCRTkxIC8qIEdQVUxlZ2FjeVRleHR1cmVNZXRh
bC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVUxlZ2FjeVRl
eHR1cmVNZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA1Q0VEMjcwQTQw
QkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0QmxvY2tDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDA1Q0VEMjgwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2Nr
Q29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybWF0QmxvY2tD
b21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzgwMiw2ICsxMzgwNSw4
IEBACiAJCUQwOTNEMjI1MjE3OTUxRDQwMDMyOTIxNyAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRDA5M0QyMjcyMTc5NTFENDAwMzI5MjE3IC8qIFdlYkdQVVJlbmRl
cmluZ0NvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlEMDkzRDIyOTIxNzk1NDE2MDAzMjkyMTcgLyogV2ViR1BV
UmVuZGVyaW5nQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA5NzI3QjUyMTg3RjQ0
MzAwOTQyRjNBIC8qIEdQVVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHUFVTd2FwQ2hhaW4u
aDsgcGF0aCA9IGNvY29hL0dQVVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlEMDk3MjdCNjIxODdGNDQzMDA5NDJGM0EgLyogR1BVU3dhcENoYWluTWV0YWwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBHUFVTd2FwQ2hhaW5NZXRhbC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRDA5NzI3QzIyMThBNDcyOTAwOTQyRjNBIC8qIEdQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDk3MjdDQTIxOEJEN0E1MDA5NDJGM0Eg
LyogR1BVRGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdQVURldmljZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQTIwRDU0MjA5MkEwQTYwMEUwQzI1OSAvKiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlQVNUQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTM4MTIsNiArMTM4MTcsMTkgQEAKIAkJRDBCQzU0NDgxNDQzQUM0QTAwRTEwNURBIC8q
IENhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEMEJENEY1QTE0MDg4NTBGMDA2ODM5QjYgLyogRGljdGF0aW9uQ29tbWFuZElPUy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaWN0YXRpb25Db21tYW5kSU9TLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBCRDRGNUIxNDA4ODUwRjAwNjgzOUI2
IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGljdGF0aW9uQ29tbWFuZElPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlE
MEM0MTlFQjIxODNDRkEyMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RUMyMTgzQ0ZBMjAwOUVDMURFIC8qIFdlYkdQ
VVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJHUFVQaXBlbGluZVN0YWdlRGVz
Y3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUVFMjE4M0Q5
QzgwMDlFQzFERSAvKiBXZWJHUFVTaGFkZXJTdGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVT
aGFkZXJTdGFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlFRjIxODNE
OUM4MDA5RUMxREUgLyogV2ViR1BVU2hhZGVyU3RhZ2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVNoYWRlclN0
YWdlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RjAyMTgzRUIzMTAw
OUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlEMEM0MTlGMTIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9y
QmFzZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUYyMjE4M0VGRUMwMDlFQzFERSAvKiBXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUYz
MjE4M0VGRUMwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUQwQzQxOUY3MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQaXBl
bGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlGODIxODQwNERBMDA5RUMxREUgLyogV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlGOTIxODQwNERBMDA5RUMx
REUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5l
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RkEyMTg0MEY2QzAwOUVD
MURFIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdQVVJlbmRlclBpcGVs
aW5lLmg7IHBhdGggPSBjb2NvYS9HUFVSZW5kZXJQaXBlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlEMEM0MTlGQjIxODQwRjZDMDA5RUMxREUgLyogR1BVUmVuZGVyUGlwZWxp
bmVNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVJlbmRlclBpcGVsaW5lTWV0YWwu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTk4MjE2ODI0QTYwMDFDOTFD
NyAvKiBXZWJNZXRhbEJ1ZmZlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViTWV0YWxCdWZmZXIuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlEMENBQUU5QTIxNjgyNEE2MDAxQzkxQzcgLyogV2ViTWV0
YWxDb21tYW5kQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJNZXRhbENvbW1hbmRCdWZmZXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMENBQUU5QjIxNjgyNEE3MDAxQzkxQzcgLyogV2Vi
TWV0YWxDb21tYW5kUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTWV0YWxDb21tYW5kUXVldWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NDQ4LDggKzI1NDY2LDEzIEBACiAJ
CQkJRDAwRjU5NDIyMTZFQ0M3QTAwMEQ3MURCIC8qIERPTVdpbmRvd1dlYkdQVS5pZGwgKi8sCiAJ
CQkJRDA5NzI3Q0EyMThCRDdBNTAwOTQyRjNBIC8qIEdQVURldmljZS5jcHAgKi8sCiAJCQkJRDA2
MTVGQ0YyMTdGRjE4NTAwOEE0OEE4IC8qIEdQVURldmljZS5oICovLAorCQkJCUQwNDZGQjY4MjE4
RDE4Q0QwMENCOEY2MiAvKiBHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggKi8sCisJCQkJRDA0
NkZCNjcyMThEMTgwMzAwQ0I4RjYyIC8qIEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmggKi8s
CisJCQkJRDBDNDE5RkEyMTg0MEY2QzAwOUVDMURFIC8qIEdQVVJlbmRlclBpcGVsaW5lLmggKi8s
CisJCQkJRDA0NkZCNjUyMThEMDczQzAwQ0I4RjYyIC8qIEdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5oICovLAogCQkJCUQwNjBEODg4MjE4MjgwQzEwMDMzOTMxOCAvKiBHUFVTaGFkZXJNb2R1
bGUuaCAqLywKIAkJCQlEMDk3MjdDMjIxOEE0NzI5MDA5NDJGM0EgLyogR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvci5oICovLAorCQkJCUQwOTcyN0I1MjE4N0Y0NDMwMDk0MkYzQSAvKiBHUFVTd2Fw
Q2hhaW4uaCAqLywKIAkJCQlEMDBGNTk0NzIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmNwcCAq
LywKIAkJCQlEMDBGNTk0NjIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmggKi8sCiAJCQkJRDAw
RjU5NDgyMTZFRkU1NDAwMEQ3MURCIC8qIFdlYkdQVS5pZGwgKi8sCkBAIC0yNTQ2MSwxNCArMjU0
ODQsMjUgQEAKIAkJCQlEMDBGNTk1MzIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmNw
cCAqLywKIAkJCQlEMDBGNTk1MjIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmggKi8s
CiAJCQkJRDAwRjU5NTQyMTcwMUQ4QzAwMEQ3MURCIC8qIFdlYkdQVURldmljZS5pZGwgKi8sCisJ
CQkJRDBDNDE5RjAyMTgzRUIzMTAwOUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UuaCAqLywKKwkJCQlEMEM0MTlGMTIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVE
ZXNjcmlwdG9yQmFzZS5pZGwgKi8sCisJCQkJRDBDNDE5RUIyMTgzQ0ZBMjAwOUVDMURFIC8qIFdl
YkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmggKi8sCisJCQkJRDBDNDE5RUMyMTgzQ0ZBMjAw
OUVDMURFIC8qIFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmlkbCAqLywKIAkJCQlEMDkz
RDIyOTIxNzk1NDE2MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAgKi8sCiAJ
CQkJRDA5M0QyMjUyMTc5NTFENDAwMzI5MjE3IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCAq
LywKIAkJCQlEMDkzRDIyNzIxNzk1MUQ0MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4
dC5pZGwgKi8sCisJCQkJRDBDNDE5RjgyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBp
cGVsaW5lLmNwcCAqLywKKwkJCQlEMEM0MTlGNzIxODQwNERBMDA5RUMxREUgLyogV2ViR1BVUmVu
ZGVyUGlwZWxpbmUuaCAqLywKKwkJCQlEMEM0MTlGOTIxODQwNERBMDA5RUMxREUgLyogV2ViR1BV
UmVuZGVyUGlwZWxpbmUuaWRsICovLAorCQkJCUQwQzQxOUYyMjE4M0VGRUMwMDlFQzFERSAvKiBX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCAqLywKKwkJCQlEMEM0MTlGMzIxODNFRkVD
MDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCAqLywKIAkJCQlE
MDYxNUZDRDIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmNwcCAqLywKIAkJ
CQlEMDYxNUZDQzIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmggKi8sCiAJ
CQkJRDA2MTVGQ0UyMTdGRTVDNjAwOEE0OEE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZS5pZGwgKi8s
CiAJCQkJRDA2MEQ4ODcyMTgyNjk3MDAwMzM5MzE4IC8qIFdlYkdQVVNoYWRlck1vZHVsZURlc2Ny
aXB0b3IuaCAqLywKIAkJCQlEMDYwRDg4NDIxODI1RDVGMDAzMzkzMTggLyogV2ViR1BVU2hhZGVy
TW9kdWxlRGVzY3JpcHRvci5pZGwgKi8sCisJCQkJRDBDNDE5RUUyMTgzRDlDODAwOUVDMURFIC8q
IFdlYkdQVVNoYWRlclN0YWdlLmggKi8sCisJCQkJRDBDNDE5RUYyMTgzRDlDODAwOUVDMURFIC8q
IFdlYkdQVVNoYWRlclN0YWdlLmlkbCAqLywKIAkJCQlEMERBMEJFNTIxNzkzMEUyMDA3RkUyQUMg
LyogV2ViR1BVU3dhcENoYWluLmNwcCAqLywKIAkJCQlEMERBMEJFNDIxNzkzMEUyMDA3RkUyQUMg
LyogV2ViR1BVU3dhcENoYWluLmggKi8sCiAJCQkJRDBEQTBCRTYyMTc5MzBFMjAwN0ZFMkFDIC8q
IFdlYkdQVVN3YXBDaGFpbi5pZGwgKi8sCkBAIC0yNTQ4MCw3ICsyNTUxNCw5IEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUQwNjE1RkQxMjE3RkYxRTEwMDhBNDhB
OCAvKiBHUFVEZXZpY2VNZXRhbC5tbSAqLywKKwkJCQlEMEM0MTlGQjIxODQwRjZDMDA5RUMxREUg
LyogR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbSAqLywKIAkJCQlEMDYwRDg4OTIxODI4MEMxMDAz
MzkzMTggLyogR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0gKi8sCisJCQkJRDA5NzI3QjYyMTg3RjQ0
MzAwOTQyRjNBIC8qIEdQVVN3YXBDaGFpbk1ldGFsLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBj
b2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggZDI5ZGJiZDU3YzQ4MmRmYWEw
MjMzODYwMWIxMGYwODZjNGE0NjM2ZS4uMGI4ODgzY2RlZmI2NTI1YTc3Njk2MThiNzgzZTczNWU3
YjYzM2I2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1
aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWls
dGluTmFtZXMuaApAQCAtMTc4LDYgKzE3OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBt
YWNybyhXZWJHUFVBZGFwdGVyKSBcCiAgICAgbWFjcm8oV2ViR1BVRGV2aWNlKSBcCiAgICAgbWFj
cm8oV2ViR1BVUmVuZGVyaW5nQ29udGV4dCkgXAorICAgIG1hY3JvKFdlYkdQVVJlbmRlclBpcGVs
aW5lKSBcCisgICAgbWFjcm8oV2ViR1BVU2hhZGVyU3RhZ2UpIFwKICAgICBtYWNybyhXZWJHUFVT
aGFkZXJNb2R1bGUpIFwKICAgICBtYWNybyhXZWJHUFVTd2FwQ2hhaW4pIFwKICAgICBtYWNybyhX
ZWJNZXRhbEJ1ZmZlcikgXApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE3MTg2MDUyMGMwYjBkOTdhMzViZDUwNWYzNWQyOTNh
NThlNjE1OWQuLjE2MWUwZjJkMjZmMzMzNjY0M2NhODM3OTU1MzQ1NWM0OGQ4Y2IyMmQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMSBAQAorMjAxOC0xMS0wNiAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBw
bGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEV4cGVyaW1lbnRhbCBwcm90b3R5cGUgZm9yIE1T
TCBzaGFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTEyOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHdlYmdwdS9qcy9zZXQtdXAtd2ViZ3B1LWNvbnRleHRzLmpzOiBBZGRlZCBoZWxwZXIgc2Ny
aXB0IGZvciBydW5uaW5nIGRpZmZlcmVudCB3ZWJncHUgdGVzdHMuCisgICAgICAgIChydW5XZWJH
UFVUZXN0cyk6CisgICAgICAgIChhc3luYy5ydW5XZWJHUFVUZXN0c09uQ2FudmFzKToKKyAgICAg
ICAgKGFzeW5jLnNldFVwQ29udGV4dHMpOgorICAgICAgICAqIHdlYmdwdS9yZW5kZXItcGlwZWxp
bmVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3JlbmRlci1waXBlbGlu
ZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiB3ZWJncHUvc2hhZGVyLW1vZHVsZXMuaHRtbDogVXBkYXRlZCB0byB1
c2UgZnVuY3Rpb25zIGluIHNldC11cC13ZWJncHUtY29udGV4dHMuanMuCisgICAgICAgICogd2Vi
Z3B1L3dlYmdwdS1iYXNpY3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmdwdS93ZWJncHUt
YmFzaWNzLmh0bWw6IFVwZGF0ZWQgdGhyb3VnaCBjcmVhdGluZyBhIFdlYkdQVVJlbmRlclBpcGVs
aW5lLgorCiAyMDE4LTExLTAxICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW1dlYkdQVV0gRXhwZXJpbWVudGFsIHByb3RvdHlwZSBmb3IgTVNMIHNoYWRlcnMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9qcy9zZXQtdXAtd2ViZ3B1LWNvbnRleHRz
LmpzIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L2pzL3NldC11cC13ZWJncHUtY29udGV4dHMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgzMDU2MDRkYWVlM2ZiYTU3NWMzYjQ5OGZkOGU4YmNjYjJkMzBjMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9qcy9zZXQtdXAtd2ViZ3B1LWNvbnRleHRz
LmpzCkBAIC0wLDAgKzEsNDYgQEAKKyd1c2Ugc3RyaWN0JzsKKworbGV0IGNvbnRleHQsIGFkYXB0
ZXIsIGRlZmF1bHREZXZpY2U7CisKK2Z1bmN0aW9uIHJ1bldlYkdQVVRlc3RzKHRlc3RzKSB7Cisg
ICAgcnVuV2ViR1BVVGVzdHNPbkNhbnZhcyhkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMi
KSwgdGVzdHMpOworfQorCithc3luYyBmdW5jdGlvbiBydW5XZWJHUFVUZXN0c09uQ2FudmFzKGNh
bnZhcywgdGVzdHMpIHsKKyAgICB0cnkgeworICAgICAgICBhd2FpdCBzZXRVcENvbnRleHRzKGNh
bnZhcyk7CisKKyAgICAgICAgZm9yIChsZXQgdGVzdCBvZiB0ZXN0cykKKyAgICAgICAgICAgIHRl
c3QoKTsKKworICAgICAgICBkZWJ1ZygiQWxsIHRlc3RzIGNvbXBsZXRlLiIpOworICAgIH0gY2F0
Y2ggKGVycm9yKSB7CisgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOworICAgICAgICB0ZXN0
RmFpbGVkKGBbJHtlcnJvcn1dOiBTZWUgY29uc29sZSFgKTsKKyAgICB9Cit9CisKK2FzeW5jIGZ1
bmN0aW9uIHNldFVwQ29udGV4dHMoY2FudmFzKSB7CisgICAgY29udGV4dCA9IGNhbnZhcy5nZXRD
b250ZXh0KCJ3ZWJncHUiKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHRlc3RGYWlsZWQo
IkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVIGNvbnRleHQhIik7CisKKyAgICBzaG91bGRCZURlZmlu
ZWQod2luZG93LndlYmdwdSk7CisgICAgCisgICAgLy8gRklYTUU6IHJlcXVlc3RBZGFwdGVyIHNo
b3VsZCB0YWtlIGEgV2ViR1BVQWRhcHRlckRlc2NyaXB0b3IuCisgICAgYWRhcHRlciA9IGF3YWl0
IHdpbmRvdy53ZWJncHUucmVxdWVzdEFkYXB0ZXIoe30pOworICAgIGlmICghYWRhcHRlcikgewor
ICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIGRlZmF1bHQgV2ViR1BVQWRhcHRl
ciEiKQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IHJlcXVlc3REZXZp
Y2Ugc2hvdWxkIHRha2UgYSBXZWJHUFVEZXZpY2VEZXNjcmlwdG9yLgorICAgIGRlZmF1bHREZXZp
Y2UgPSBhZGFwdGVyLmNyZWF0ZURldmljZSgpOworICAgIGlmICghZGVmYXVsdERldmljZSkgewor
ICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVURldmljZSEiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBEZWZhdWx0IHRvICJCOEc4UjhB
OFVub3JtIiBmb3JtYXQgZm9yIG5vdy4KKyAgICBjb250ZXh0LmNvbmZpZ3VyZSh7IGRldmljZTog
ZGVmYXVsdERldmljZSwgd2lkdGg6IGNhbnZhcy53aWR0aCwgaGVpZ2h0OiBjYW52YXMuaGVpZ2h0
IH0pOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dl
YmdwdS9yZW5kZXItcGlwZWxpbmVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjViNDdmOWRm
NWMyNTZlY2M5ZDJhOTViNjZlMGM1NmYzOTA2N2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIg
QEAKK1BBU1MgW29iamVjdCBXZWJHUFVdIGlzIGRlZmluZWQuCitQQVNTIFN1Y2Nlc3NmdWxseSBj
cmVhdGVkIFdlYkdQVVJlbmRlclBpcGVsaW5lLgorUEFTUyBXZWJHUFVSZW5kZXJQaXBlbGluZSB3
aXRoIGludmFsaWQgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yIHdhcyBub3QgY3JlYXRl
ZC4KK1BBU1MgV2ViR1BVUmVuZGVyUGlwZWxpbmUgd2l0aCBpbnZhbGlkIHNoYWRlciBtb2R1bGUg
d2FzIG5vdCBjcmVhdGVkLgorUEFTUyBXZWJHUFVSZW5kZXJQaXBlbGluZSB3aXRoIGludmFsaWQg
dmVydGV4IHNoYWRlciBzdGFnZSB3YXMgbm90IGNyZWF0ZWQuCitQQVNTIFdlYkdQVVJlbmRlclBp
cGVsaW5lIHdpdGggaW52YWxpZCB2ZXJ0ZXggc2hhZGVyIGVudHJ5IHBvaW50IHdhcyBub3QgY3Jl
YXRlZC4KK1BBU1MgV2ViR1BVUmVuZGVyUGlwZWxpbmUgd2l0aCBpbnZhbGlkIFdlYkdQVVNoYWRl
clN0YWdlRW51bSB3YXMgbm90IGNyZWF0ZWQuCitBbGwgdGVzdHMgY29tcGxldGUuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViZ3B1L3JlbmRlci1waXBlbGluZXMuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVkNGMwYTNjYzY0OWJjNDAz
NjQ4NmZhZmY0NWJhNjBhMzZiNDM4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0bWwKQEAgLTAsMCArMSwxMzkgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJqcy9zZXQtdXAtd2ViZ3B1LWNvbnRleHRzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgaWQ9ImxpYnJhcnkiIHR5cGU9Ingtc2hhZGVyL3gtbWV0YWwiPgorICAg
ICNpbmNsdWRlIDxtZXRhbF9zdGRsaWI+CisgICAgCisgICAgdXNpbmcgbmFtZXNwYWNlIG1ldGFs
OworICAgIAorICAgIHN0cnVjdCBWZXJ0ZXgKKyAgICB7CisgICAgICAgIGZsb2F0NCBwb3NpdGlv
biBbW3Bvc2l0aW9uXV07CisgICAgfTsKKyAgICAKKyAgICB2ZXJ0ZXggVmVydGV4IHZlcnRleF9t
YWluKHVpbnQgdmlkIFtbdmVydGV4X2lkXV0pCisgICAgeworICAgICAgICBWZXJ0ZXggdjsKKyAg
ICAgICAgc3dpdGNoICh2aWQpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgdi5wb3Np
dGlvbiA9IGZsb2F0NCgtLjc1LCAtLjc1LCAwLCAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIDE6CisgICAgICAgICAgICB2LnBvc2l0aW9uID0gZmxvYXQ0KC43NSwgLS43NSwg
MCwgMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAg
di5wb3NpdGlvbiA9IGZsb2F0NCgwLCAuNzUsIDAsIDEpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB2LnBvc2l0aW9uID0gZmxvYXQ0KDAsIDAsIDAs
IDEpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2OworICAgIH0KKyAgICAKKyAgICBmcmFn
bWVudCBmbG9hdDQgZnJhZ21lbnRfbWFpbihWZXJ0ZXggdmVydGV4SW4gW1tzdGFnZV9pbl1dKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZsb2F0NCgxLjAsIDAuMCwgMC4wLCAxLjApOworICAgIH0K
Kzwvc2NyaXB0PgorPHNjcmlwdD4KKyd1c2Ugc3RyaWN0JzsKKworaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworbGV0IHNoYWRlckRl
c2NyaXB0b3IsIHNoYWRlck1vZHVsZSwgdmVydGV4U3RhZ2VEZXNjcmlwdG9yLCBmcmFnbWVudFN0
YWdlRGVzY3JpcHRvcjsKKworZnVuY3Rpb24gc2V0VXBQaXBlbGluZSgpIHsKKyAgICBzaGFkZXJE
ZXNjcmlwdG9yID0geworICAgICAgICBjb2RlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGli
cmFyeSIpLnRleHQKKyAgICB9OworCisgICAgc2hhZGVyTW9kdWxlID0gZGVmYXVsdERldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoc2hhZGVyRGVzY3JpcHRvcik7CisgICAgaWYgKCFzaGFkZXJNb2R1
bGUpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFVTaGFkZXJN
b2R1bGUhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2ZXJ0ZXhTdGFnZURlc2Ny
aXB0b3IgPSB7IAorICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwgCisgICAgICAgIHN0YWdl
OiBXZWJHUFVTaGFkZXJTdGFnZS5WRVJURVgsIAorICAgICAgICBlbnRyeVBvaW50OiAidmVydGV4
X21haW4iIAorICAgIH07CisKKyAgICBmcmFnbWVudFN0YWdlRGVzY3JpcHRvciA9IHsKKyAgICAg
ICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUsCisgICAgICAgIHN0YWdlOiBXZWJHUFVTaGFkZXJTdGFn
ZS5GUkFHTUVOVCwKKyAgICAgICAgZW50cnlQb2ludDogImZyYWdtZW50X21haW4iCisgICAgfTsK
KworICAgIGxldCBwaXBlbGluZURlc2NyaXB0b3IgPSB7CisgICAgICAgIHN0YWdlczogW3ZlcnRl
eFN0YWdlRGVzY3JpcHRvciwgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3JdLAorICAgICAgICBwcmlt
aXRpdmVUb3BvbG9neTogInRyaWFuZ2xlTGlzdCIKKyAgICB9OworCisgICAgbGV0IHJlbmRlclBp
cGVsaW5lID0gZGVmYXVsdERldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShwaXBlbGluZURlc2Ny
aXB0b3IpOworICAgIGlmIChyZW5kZXJQaXBlbGluZSkKKyAgICAgICAgdGVzdFBhc3NlZCgiU3Vj
Y2Vzc2Z1bGx5IGNyZWF0ZWQgV2ViR1BVUmVuZGVyUGlwZWxpbmUuIikKKyAgICBlbHNlCisgICAg
ICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVUmVuZGVyUGlwZWxpbmUhIik7
Cit9CisKK2Z1bmN0aW9uIGNoZWNrQmFkUmVuZGVyUGlwZWxpbmUoZGVzY3JpcHRvciwgdGVzdFN1
YmplY3ROYW1lKSB7CisgICAgbGV0IHBpcGVsaW5lID0gZGVmYXVsdERldmljZS5jcmVhdGVSZW5k
ZXJQaXBlbGluZShkZXNjcmlwdG9yKTsKKworICAgIGlmIChwaXBlbGluZSkKKyAgICAgICAgdGVz
dEZhaWxlZChgV2ViR1BVUmVuZGVyUGlwZWxpbmUgd2FzIGNyZWF0ZWQgd2l0aCBhbiBpbnZhbGlk
ICR7dGVzdFN1YmplY3ROYW1lfSFgKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RQYXNzZWQoYFdl
YkdQVVJlbmRlclBpcGVsaW5lIHdpdGggaW52YWxpZCAke3Rlc3RTdWJqZWN0TmFtZX0gd2FzIG5v
dCBjcmVhdGVkLmApOworfQorCitmdW5jdGlvbiBzZXRVcEJhZFBpcGVsaW5lcygpIHsKKyAgICBj
aGVja0JhZFJlbmRlclBpcGVsaW5lKHt9LCAiV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
Iik7CisKKyAgICBsZXQgbm9Nb2R1bGVWZXJ0ZXhEZXNjcmlwdG9yID0geworICAgICAgICBzdGFn
ZTogV2ViR1BVU2hhZGVyU3RhZ2UuVkVSVEVYLAorICAgICAgICBlbnRyeVBvaW50OiAidmVydGV4
X21haW4iCisgICAgfQorICAgIGxldCBub01vZHVsZVBpcGVsaW5lRGVzY3JpcHRvciA9IHsKKyAg
ICAgICAgc3RhZ2VzOiBbbm9Nb2R1bGVWZXJ0ZXhEZXNjcmlwdG9yLCBmcmFnbWVudFN0YWdlRGVz
Y3JpcHRvcl0sCisgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAidHJpYW5nbGVMaXN0IgorICAg
IH0KKyAgICBjaGVja0JhZFJlbmRlclBpcGVsaW5lKG5vTW9kdWxlUGlwZWxpbmVEZXNjcmlwdG9y
LCAic2hhZGVyIG1vZHVsZSIpOworCisgICAgLy8gQSAoTWV0YWwpIHJlbmRlcnBpcGVsaW5lIG11
c3QgaGF2ZSBhIHZlcnRleCBmdW5jdGlvbi4KKyAgICBsZXQgbm9WZXJ0ZXhQaXBlbGluZURlc2Ny
aXB0b3IgPSB7CisgICAgICAgIHN0YWdlczogW2ZyYWdtZW50U3RhZ2VEZXNjcmlwdG9yXSwKKyAg
ICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6ICJ0cmlhbmdsZUxpc3QiCisgICAgfQorICAgIGNoZWNr
QmFkUmVuZGVyUGlwZWxpbmUobm9WZXJ0ZXhQaXBlbGluZURlc2NyaXB0b3IsICJ2ZXJ0ZXggc2hh
ZGVyIHN0YWdlIikKKworICAgIGxldCBiYWRFbnRyeVBvaW50RGVzY3JpcHRvciA9IHsgCisgICAg
ICAgIG1vZHVsZTogc2hhZGVyTW9kdWxlLCAKKyAgICAgICAgc3RhZ2U6IFdlYkdQVVNoYWRlclN0
YWdlLlZFUlRFWCwgCisgICAgICAgIGVudHJ5UG9pbnQ6ICJWZXJ0ZXhfTWFpbiIgCisgICAgfTsK
KyAgICBsZXQgYmFkRW50cnlQb2ludFBpcGVsaW5lRGVzY3NyaXB0b3IgPSB7CisgICAgICAgIHN0
YWdlczogW2JhZEVudHJ5UG9pbnREZXNjcmlwdG9yLCBmcmFnbWVudFN0YWdlRGVzY3JpcHRvcl0s
CisgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAidHJpYW5nbGVMaXN0IgorICAgIH0KKyAgICBj
aGVja0JhZFJlbmRlclBpcGVsaW5lKGJhZEVudHJ5UG9pbnRQaXBlbGluZURlc2NzcmlwdG9yLCAi
dmVydGV4IHNoYWRlciBlbnRyeSBwb2ludCIpOworCisgICAgbGV0IGJhZFN0YWdlRW51bURlc2Ny
aXB0b3IgPSB7IAorICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwgCisgICAgICAgIHN0YWdl
OiBXZWJHUFVTaGFkZXJTdGFnZS5DT01QVVRFLCAKKyAgICAgICAgZW50cnlQb2ludDogInZlcnRl
eF9tYWluIiAKKyAgICB9OworICAgIGxldCBiYWRTdGFnZUVudW1QaXBlbGluZURlc2NyaXB0b3Ig
PSB7CisgICAgICAgIHN0YWdlczogW2JhZFN0YWdlRW51bURlc2NyaXB0b3IsIGZyYWdtZW50U3Rh
Z2VEZXNjcmlwdG9yXSwKKyAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6ICJ0cmlhbmdsZUxpc3Qi
CisgICAgfQorICAgIGNoZWNrQmFkUmVuZGVyUGlwZWxpbmUoYmFkU3RhZ2VFbnVtUGlwZWxpbmVE
ZXNjcmlwdG9yLCAiV2ViR1BVU2hhZGVyU3RhZ2VFbnVtIik7Cit9CisKK3J1bldlYkdQVVRlc3Rz
KFtzZXRVcFBpcGVsaW5lLCBzZXRVcEJhZFBpcGVsaW5lc10pOworCitzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQKaW5kZXgg
ZmE5NGIzMzA3NWU4ZDljMDYwZWVlYjFmMTczMDEzMzdhMTEwY2YwNi4uMGY4NGVkYjYzMWViODhl
OTZjNDA1ODRlNzZkOGFkNTBmYjBlNmNjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3NoYWRlci1tb2R1bGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvc2hh
ZGVyLW1vZHVsZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsOCBAQAorUEFTUyBbb2JqZWN0IFdl
YkdQVV0gaXMgZGVmaW5lZC4KIFBBU1MgQmFkIHNoYWRlciBjb2RlIHNob3VsZCBub3QgY3JlYXRl
IGEgbW9kdWxlLgogUEFTUyBJbmNvbXBsZXRlIHNoYWRlciBjb2RlIHNob3VsZCBub3QgY3JlYXRl
IGEgbW9kdWxlLgogUEFTUyBTaGFkZXIgbW9kdWxlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LgorQWxs
IHRlc3RzIGNvbXBsZXRlLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNU
IENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvc2hhZGVyLW1vZHVsZXMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy5odG1sCmluZGV4IDgyM2Jl
OTJkOWU0OWE5ZGI0OWM1MzMwMWIzYmFlZDg1NjI3NjA0ODguLjI2N2M4MDI3MGIyY2VhZmI0NWJm
NTdiZWRmMDdkNWNkMzNlZGYxZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9zaGFk
ZXItbW9kdWxlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy5o
dG1sCkBAIC0xLDYgKzEsNyBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Impz
L3NldC11cC13ZWJncHUtY29udGV4dHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBpZD0ibGlicmFy
eV9mdWxsIiB0eXBlPSJ4LXNoYWRlci94LW1ldGFsIj4KICAgICAjaW5jbHVkZSA8bWV0YWxfc3Rk
bGliPgogICAgIApAQCAtNzAsMjAgKzcxLDYgQEAKIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAg
ICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKLWxldCBjYW52YXM7Ci1sZXQgY29u
dGV4dDsKLWxldCBhZGFwdGVyOwotbGV0IGRlZmF1bHREZXZpY2U7Ci0KLWFzeW5jIGZ1bmN0aW9u
IHNldFVwQ29udGV4dHMoKSB7Ci0gICAgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
Y2FudmFzIik7Ci0gICAgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCJ3ZWJncHUiKTsKLSAg
ICBhZGFwdGVyID0gYXdhaXQgd2luZG93LndlYmdwdS5yZXF1ZXN0QWRhcHRlcih7fSk7Ci0gICAg
ZGVmYXVsdERldmljZSA9IGFkYXB0ZXIuY3JlYXRlRGV2aWNlKCk7Ci0KLSAgICBzZXRVcFNoYWRl
cnMoKTsKLX0KLQogZnVuY3Rpb24gc2V0VXBTaGFkZXJzKCkgewogICAgIGxldCBzaGFkZXJEZXNj
cmlwdG9yMCA9IHsKICAgICAgICAgY29kZSA6ICJIZWxsbyBXb3JsZCIKQEAgLTExNSw5ICsxMDIs
OSBAQCBmdW5jdGlvbiBzZXRVcFNoYWRlcnMoKSB7CiAgICAgICAgIHRlc3RGYWlsZWQoIlNoYWRl
ciBtb2R1bGUgbm90IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5ISIpOwogfQogCi1zZXRVcENvbnRleHRz
KCk7CitydW5XZWJHUFVUZXN0cyhbc2V0VXBTaGFkZXJzXSk7CiAKLXZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93ZWJncHUtYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdwdS93ZWJn
cHUtYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCBlYjFlNTI0MTIwMWM4NDFjNzE4YzAzZWNlZjY0
ZTY5YTAxOGI4YzgwLi40MGQ1MmVkNmJjMDQ4ZjZlZmI0Mjc5NTE3NjE1YTJlYzcwYmJjZThlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC0x
LDQgKzEsNSBAQAogUEFTUyBbb2JqZWN0IFdlYkdQVV0gaXMgZGVmaW5lZC4KK0FsbCB0ZXN0cyBj
b21wbGV0ZS4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1iYXNpY3MuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmdwdS93ZWJncHUtYmFzaWNzLmh0bWwKaW5kZXggZjdjNzY3MmZkNWMxMTlh
YTI4NWE1MzQ2MTBjZTBlNDEzYzRiN2M1Yi4uMzA4NGY2ZDBkOWI2NWI0NDY5NjU4N2MyZGJjYzUw
YjkwOTljMjliNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3dlYmdwdS1iYXNpY3Mu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sCkBAIC0xLDYg
KzEsNyBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImpzL3NldC11cC13ZWJn
cHUtY29udGV4dHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBpZD0ibGlicmFyeSIgdHlwZT0ieC1z
aGFkZXIveC1tZXRhbCI+CiAgICAgI2luY2x1ZGUgPG1ldGFsX3N0ZGxpYj4KICAgICAKQEAgLTQx
LDQ2ICs0Miw5NiBAQAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgIHdpbmRvdy50ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKIAotbGV0IGNhbnZhczsKLWxldCBjb250ZXh0OwotbGV0IGFkYXB0
ZXI7Ci1sZXQgZGVmYXVsdERldmljZTsKK2xldCByZW5kZXJQaXBlbGluZTsKIAotYXN5bmMgZnVu
Y3Rpb24gc2V0VXBDb250ZXh0cygpIHsKLSAgICBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJjYW52YXMiKTsKLSAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIndlYmdwdSIp
OwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0
ZSBXZWJHUFUgY29udGV4dCEiKTsKK2Z1bmN0aW9uIHNldFVwUGlwZWxpbmUoKSB7CisgICAgbGV0
IHNoYWRlckRlc2NyaXB0b3IgPSB7CisgICAgICAgIGNvZGU6IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJsaWJyYXJ5IikudGV4dAorICAgIH07CisgICAgbGV0IHNoYWRlck1vZHVsZSA9IGRlZmF1
bHREZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHNoYWRlckRlc2NyaXB0b3IpOworICAgIGlmICgh
c2hhZGVyTW9kdWxlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2Vi
R1BVU2hhZGVyTW9kdWxlISIpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgc2hvdWxk
QmVEZWZpbmVkKHdpbmRvdy53ZWJncHUpOwotICAgIAotICAgIGFkYXB0ZXIgPSBhd2FpdCB3aW5k
b3cud2ViZ3B1LnJlcXVlc3RBZGFwdGVyKHt9KTsKLSAgICBpZiAoIWFkYXB0ZXIpIHsKLSAgICAg
ICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBkZWZhdWx0IFdlYkdQVUFkYXB0ZXIhIikK
KyAgICBsZXQgdmVydGV4U3RhZ2VEZXNjcmlwdG9yID0geyAKKyAgICAgICAgbW9kdWxlOiBzaGFk
ZXJNb2R1bGUsIAorICAgICAgICBzdGFnZTogV2ViR1BVU2hhZGVyU3RhZ2UuVkVSVEVYLCAKKyAg
ICAgICAgZW50cnlQb2ludDogInZlcnRleF9tYWluIiAKKyAgICB9OworCisgICAgbGV0IGZyYWdt
ZW50U3RhZ2VEZXNjcmlwdG9yID0geworICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwKKyAg
ICAgICAgc3RhZ2U6IFdlYkdQVVNoYWRlclN0YWdlLkZSQUdNRU5ULAorICAgICAgICBlbnRyeVBv
aW50OiAiZnJhZ21lbnRfbWFpbiIKKyAgICB9OworCisgICAgaWYgKCF2ZXJ0ZXhTdGFnZURlc2Ny
aXB0b3IgfHwgIWZyYWdtZW50U3RhZ2VEZXNjcmlwdG9yKSB7CisgICAgICAgIHRlc3RGYWlsZWQo
IkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IhIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkZWZhdWx0RGV2aWNlID0gYWRhcHRlci5jcmVhdGVE
ZXZpY2UoKTsKLSAgICBpZiAoIWRlZmF1bHREZXZpY2UpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgi
Q291bGQgbm90IGNyZWF0ZSBXZWJHUFVEZXZpY2UhIik7CisgICAgbGV0IHBpcGVsaW5lRGVzY3Jp
cHRvciA9IHsKKyAgICAgICAgc3RhZ2VzOiBbdmVydGV4U3RhZ2VEZXNjcmlwdG9yLCBmcmFnbWVu
dFN0YWdlRGVzY3JpcHRvcl0sCisgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAidHJpYW5nbGVM
aXN0IgorICAgIH07CisKKyAgICBpZiAoIXBpcGVsaW5lRGVzY3JpcHRvcikgeworICAgICAgICB0
ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ciEiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNldFVwU2hhZGVycygpOworICAg
IHJlbmRlclBpcGVsaW5lID0gZGVmYXVsdERldmljZS5jcmVhdGVSZW5kZXJQaXBlbGluZShwaXBl
bGluZURlc2NyaXB0b3IpOworICAgIGlmICghcmVuZGVyUGlwZWxpbmUpIHsKKyAgICAgICAgdGVz
dEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFVSZW5kZXJQaXBlbGluZSEiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KIH0KIAotZnVuY3Rpb24gc2V0VXBTaGFkZXJzKCkgewotICAgIGxl
dCBzaGFkZXJEZXNjcmlwdG9yID0gewotICAgICAgICBjb2RlOiBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibGlicmFyeSIpLnRleHQKLSAgICB9OwotICAgIGxldCBzaGFkZXJNb2R1bGUgPSBkZWZh
dWx0RGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZShzaGFkZXJEZXNjcmlwdG9yKTsKLSAgICBpZiAo
IXNoYWRlck1vZHVsZSkKLSAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJH
UFVTaGFkZXJNb2R1bGUhIik7CitmdW5jdGlvbiByZW5kZXIoKSB7CisgICAgLy8gbGV0IGNvbW1h
bmRCdWZmZXIgPSBkZWZhdWx0RGV2aWNlLmNyZWF0ZUNvbW1hbmRCdWZmZXIoKTsKKyAgICAvLyBp
ZiAoIWNvbW1hbmRCdWZmZXIpIHsKKyAgICAvLyAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNy
ZWF0ZSBXZWJHUFVDb21tYW5kQnVmZmVyISIpOworICAgIC8vICAgICByZXR1cm47CisgICAgLy8g
fQorCisgICAgLy8gbGV0IHRleHR1cmUgPSBjb250ZXh0LmdldE5leHRUZXh0dXJlKCk7CisgICAg
Ly8gaWYgKCF0ZXh0dXJlKSB7CisgICAgLy8gICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBnZXQg
bmV4dCBXZWJHUFVUZXh0dXJlISIpOworICAgIC8vICAgICByZXR1cm47CisgICAgLy8gfQorCisg
ICAgLy8gbGV0IHRleHR1cmVWaWV3ID0gY29udGV4dC5jcmVhdGVUZXh0dXJlVmlldygpOworICAg
IC8vIGlmICghdGV4dHVyZVZpZXcpIHsKKyAgICAvLyAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90
IGNyZWF0ZSBXZWJHUFVUZXh0dXJlVmlldyEiKTsKKyAgICAvLyAgICAgcmV0dXJuOworICAgIC8v
IH0KKworICAgIC8vIC8vIEZJWE1FOiBGbGVzaCBvdXQgdGhlIHJlc3Qgb2YgV2ViR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3IuIERlZmF1bHQgbG9hZE9wLCBzdG9yZU9wLCBjbGVhckNvbG9yIGZvciBu
b3cuCisgICAgLy8gbGV0IHJlbmRlclBhc3NEZXNjcmlwdG9yID0geworICAgIC8vICAgICBhdHRh
Y2htZW50IDogdGV4dHVyZVZpZXcKKyAgICAvLyB9OworCisgICAgLy8gbGV0IHJlbmRlclBhc3NF
bmNvZGVyID0gY29tbWFuZEJ1ZmZlci5iZWdpblJlbmRlclBhc3MocmVuZGVyUGFzc0Rlc2NyaXB0
b3IpOworICAgIC8vIHJlbmRlclBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKHJlbmRlclBpcGVsaW5l
KTsKKworICAgIC8vIC8vIE5vdGUgdGhhdCB3ZSBkaWRuJ3QgYXR0YWNoIGFueSBidWZmZXJzIC0g
dGhlIHNoYWRlciBpcyBnZW5lcmF0aW5nIHRoZSB2ZXJ0aWNlcyBmb3IgdXMuCisgICAgLy8gcmVu
ZGVyUGFzc0VuY29kZXIuZHJhdygzLCAxLCAwLCAwKTsKKyAgICAvLyByZW5kZXJQYXNzRW5jb2Rl
ci5lbmRQYXNzKCk7CisKKyAgICAvLyBsZXQgcXVldWUgPSBkZXZpY2UuZ2V0UXVldWUoKTsKKyAg
ICAvLyBpZiAoIXF1ZXVlKSB7CisgICAgLy8gICAgIHRlc3RGYWlsZWQoIlVuYWJsZSB0byBjcmVh
dGUgZGVmYXVsdCBXZWJHUFVRdWV1ZSEiKTsKKyAgICAvLyAgICAgcmV0dXJuOworICAgIC8vIH0K
KyAgICAvLyBxdWV1ZS5zdWJtaXQoW2NvbW1hbmRCdWZmZXJdKTsKKworICAgIC8vIGNvbnRleHQu
cHJlc2VudCgpOwogfQogCi1zZXRVcENvbnRleHRzKCk7CitydW5XZWJHUFVUZXN0cyhbc2V0VXBQ
aXBlbGluZSwgcmVuZGVyXSk7CiAKLXZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354047</attachid>
            <date>2018-11-06 18:58:05 -0800</date>
            <delta_ts>2018-11-06 19:01:00 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-191291-20181106185804.patch</filename>
            <type>text/plain</type>
            <size>97453</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3ODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
N2U0ODU5NGZhOTc0MTJiZDI3MDZhYTk4ZmIyZDY3NGI4YzdmM2Y1Li45ODExY2Q4NGU2ZGNkOTI5
Yzc2ZjI3YzQxMmFjZjE5ZmM4NWFmMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0wNiAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29t
PgorCisgICAgICAgIFtXZWJHUFVdIEV4cGVyaW1lbnRhbCBwcm90b3R5cGUgZm9yIFdlYkdQVVJl
bmRlclBpcGVsaW5lIGFuZCBXZWJHUFVTd2FwQ2hhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTI5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb3Blcmx5IGRpc2FibGUgV0VCR1BVIG9uIGFsbCBu
b24tTWV0YWwgcGxhdGZvcm1zIGZvciBub3cuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxOC0xMS0wNSAgRG9uIE9sbXN0ZWFkICA8ZG9u
Lm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIEZpeCB0eXBvcyBpbiBjbG9zaW5nIEVOQUJM
RSBndWFyZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggM2Y5ZGI3NTI3Zjk3Y2Q3YzVlMzNhNmRiOGI4MmFiY2Y5OTgzM2UzMi4u
MjI2YTdhNjk2Yjk4ZjUwMDIyYTgxOWUzM2JhOWMwNzZmMGE1OWQ5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxOC0xMS0wNiAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFtXZWJHUFVdIEV4cGVyaW1lbnRhbCBwcm90b3R5cGUgZm9yIFdlYkdQVVJlbmRlclBp
cGVsaW5lIGFuZCBXZWJHUFVTd2FwQ2hhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MTI5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFByb3Blcmx5IGRpc2FibGUgV0VCR1BVIG9uIGFsbCBub24tTWV0
YWwgcGxhdGZvcm1zIGZvciBub3cuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAx
OC0xMS0wMSAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWJHUFVdIEV4cGVyaW1lbnRhbCBwcm90b3R5cGUgZm9yIE1TTCBzaGFkZXJzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggZGM0NWVjODFlOTM1MDQxZGZkMmM5MTU2OThlMWM0NjIwNzNlOWZmMy4uYTJiZjM2ZGYyNTdj
ZmNlZDJiYzIxNmNiZWJhYmRiYTAwMzUyODZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBA
CisyMDE4LTExLTA2ICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYkdQVV0gRXhwZXJpbWVudGFsIHByb3RvdHlwZSBmb3IgV2ViR1BVUmVuZGVyUGlwZWxp
bmUgYW5kIFdlYkdQVVN3YXBDaGFpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkxMjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdDogd2ViZ3B1L3JlbmRlci1waXBlbGluZXMuaHRtbAorICAgICAg
ICBBbHNvIHVwZGF0ZSB0ZXN0IHdlYmdwdS93ZWJncHUtYmFzaWNzLmh0bWwgdG8gY3JlYXRlIGEg
V2ViR1BVUmVuZGVyUGlwZWxpbmUuCisKKyAgICAgICAgQmVnaW4gaW1wbGVtZW50YXRpb24gb2Yg
V2ViR1BVUmVuZGVyUGlwZWxpbmUgYW5kIFdlYkdQVVN3YXBDaGFpbi4gQSBXZWJHUFVSZW5kZXJQ
aXBlbGluZSBpcyBiYWNrZWQgYnkgYQorICAgICAgICBHUFVSZW5kZXJQaXBlbGluZSwgY3JlYXRl
ZCBsYXppbHkgdXNpbmcgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHBhc3NlZC1pbiBXZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuCisgICAgICAgIE9uIE1ldGFsLXN1cHBvcnRlZCBzeXN0ZW1z
LCBHUFVSZW5kZXJQaXBlbGluZSBpcyBhbiBpbnRlcmZhY2UgdG8gYSBNVExSZW5kZXJQaXBlbGlu
ZVN0YXRlLgorICAgICAgICBUaGUgTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSBpcyBjcmVhdGVkIHdp
dGggdGhlIFdlYkdQVURldmljZSBjdXJyZW50bHkgY29uZmlndXJlZCBvbiB0aGUgV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUgY29uc3QpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L0dQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9HUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOgorICAgICAgICAoV2ViQ29yZTo6R1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpwcmltaXRpdmVU
b3BvbG9neSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR1BVRGV2aWNlOjphZGFwdGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdQVURldmljZTo6ZGV2aWNlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGlu
ZVN0YWdlRGVzY3JpcHRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lU3RhZ2VEZXNjcmlwdG9yLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5kZXJQaXBlbGlu
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVJlbmRlclBpcGVsaW5lOjpXZWJH
UFVSZW5kZXJQaXBlbGluZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
UGlwZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGlu
ZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJp
bmdDb250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVTaGFkZXJNb2R1bGU6Om1vZHVsZSBjb25zdCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5pZGw6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVN3
YXBDaGFpbjo6Y29uZmlndXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVN3YXBDaGFpbjo6
cmVzaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVTd2FwQ2hhaW46Om1hcmtMYXllckNv
bXBvc2l0ZWQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU3dhcENoYWluOjpXZWJHUFVTd2FwQ2hhaW4pOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGw6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdQVVJlbmRlclBpcGVsaW5lOjpwbGF0Zm9ybVJlbmRlclBpcGVsaW5lIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldEZ1bmN0aW9uc0ZvclBpcGVsaW5lRGVzY3JpcHRvcik6
CisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdQVVJlbmRlclBpcGVsaW5lOjpHUFVSZW5kZXJQaXBlbGluZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENoYWluLmg6CisgICAgICAgIChXZWJDb3Jl
OjpHUFVTd2FwQ2hhaW46OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BV
U3dhcENoYWluOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpHUFVT
d2FwQ2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpzZXREZXZpY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdQVVN3YXBDaGFpbjo6cHJlc2VudCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
OgorCiAyMDE4LTExLTAxICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dlYkdQVV0gRXhwZXJpbWVudGFsIHByb3RvdHlwZSBmb3IgTVNMIHNoYWRlcnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCmluZGV4IDM1MTEwY2E4ZDQzMDJmMjMyMGYxNmU5YWU3ZDUyMWM5YzY2NWYz
Y2IuLjFkMmRkZDRkN2RiNGI5MTg2ZDFlYWI2YzVmNTcxZGViMWJlZTY3MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTExLTA2ICBKdXN0aW4gRmFuICA8anVzdGlu
X2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRXhwZXJpbWVudGFsIHByb3RvdHlw
ZSBmb3IgV2ViR1BVUmVuZGVyUGlwZWxpbmUgYW5kIFdlYkdQVVN3YXBDaGFpbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMjkxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvcGVybHkgZGlzYWJsZSBX
RUJHUFUgb24gYWxsIG5vbi1NZXRhbCBwbGF0Zm9ybXMgZm9yIG5vdy4KKworICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDE4LTExLTAyICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBOb3JtYWxpemUg
Y2hhcmFjdGVyIHN0cmluZyBiYXNlZCBvbiBrZXkgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2OWExNzg2NDEy
ZjdjN2Q2YmE5YTA1Y2NhYmIxZmZjOTUyNDUzODZmLi41YTgwMDk5OGE1ZWU2ZjIxNzAzNGM3MWE5
MjkzMDdmYzMxZWE4MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTExLTA2ICBK
dXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRXhw
ZXJpbWVudGFsIHByb3RvdHlwZSBmb3IgV2ViR1BVUmVuZGVyUGlwZWxpbmUgYW5kIFdlYkdQVVN3
YXBDaGFpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxMjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UHJvcGVybHkgZGlzYWJsZSBXRUJHUFUgb24gYWxsIG5vbi1NZXRhbCBwbGF0Zm9ybXMgZm9yIG5v
dy4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgor
CiAyMDE4LTExLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
VXNlIHNhbWUgbGltaXQgZm9yIHBhZ2UgY2FjaGUgYW5kIHN1c3BlbmRlZCBwYWdlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGIzODdkN2U3NDZiMmM1ODQ0MjI1ZWZiNzVjNWRlMzFh
YjNiYTk0ZWIuLmM2YWNlNjE3ZTA1ZmYxYTZlYTE4MzI0NzBhNGE2ZDYzM2RmNzZiYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOC0xMS0wNiAgSnVz
dGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEV4cGVy
aW1lbnRhbCBwcm90b3R5cGUgZm9yIFdlYkdQVVJlbmRlclBpcGVsaW5lIGFuZCBXZWJHUFVTd2Fw
Q2hhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MTI5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBy
b3Blcmx5IGRpc2FibGUgV0VCR1BVIG9uIGFsbCBub24tTWV0YWwgcGxhdGZvcm1zIGZvciBub3cu
CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwog
MjAxOC0xMS0wMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
W2lPU10gV2ViS2l0IHNob3VsZCBkaXNwYXRjaCBET00gZXZlbnRzIHdoZW4gYSBtb2RpZmllciBr
ZXkgaXMgcHJlc3NlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDljOTNkOGY5NWQ5YTFl
MTNmODJlMzUzYzYxMzllY2I0YzY0YTFmMTMuLjg2NzI4MDBmMjZmMmY2NDYzN2MwY2JjMzcxMDI2
MTUzYjJjZDY4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTM2Niw3ICszNjYsMTEg
QEAgRU5BQkxFX1dFQkdMID0gRU5BQkxFX1dFQkdMOwogCiBFTkFCTEVfV0VCR0wyID0gRU5BQkxF
X1dFQkdMMjsKIAotRU5BQkxFX1dFQkdQVSA9IEVOQUJMRV9XRUJHUFU7CitFTkFCTEVfV0VCR1BV
ID0gJChFTkFCTEVfV0VCR1BVXyQoV0tfUExBVEZPUk1fTkFNRSkpOworRU5BQkxFX1dFQkdQVV9p
cGhvbmVvcyA9IEVOQUJMRV9XRUJHUFU7CitFTkFCTEVfV0VCR1BVX3dhdGNob3MgPSBFTkFCTEVf
V0VCR1BVOworRU5BQkxFX1dFQkdQVV9hcHBsZXR2b3MgPSBFTkFCTEVfV0VCR1BVOworRU5BQkxF
X1dFQkdQVV9tYWNvc3ggPSBFTkFCTEVfV0VCR1BVOwogCiBFTkFCTEVfV0VCTUVUQUwgPSAkKEVO
QUJMRV9XRUJNRVRBTF8kKFdLX1BMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9XRUJNRVRBTF9pcGhv
bmVvcyA9IEVOQUJMRV9XRUJNRVRBTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDZlMjgzN2ExZTlkMGEzNTE2
M2M3ZmNiM2EwZGVjNmE4Yzc4NTFkYWEuLjEwZjQ0M2YwYzkxOGZiOTNkZWI3ZGY5OTc2MmQ3ZWZk
YjA0ZTBiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTM4MSw3ICsxMzgxLDMgQEAKICNpZiBQTEFURk9S
TShDT0NPQSkgJiYgVVNFKENBKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAj
ZGVmaW5lIFVTRV9JT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUgMQogI2VuZGlmCi0KLSNp
ZiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQotI2Rl
ZmluZSBFTkFCTEVfV0VCR1BVIDEKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5YWVi
MmRkY2NkOWIwYTg2MjI2NzUzMzU3NjY2NjdjNWI3YWZkNjZjLi4yMTE0MTA5NTg3N2M5NThlOWU5
NWEzOTEwNTAyNDY5MDUwNjEwZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDUzLDkgKzQ1
MywxNCBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVUFkYXB0ZXIuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlckRlc2Ny
aXB0b3IuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAorICAgIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsCisgICAgTW9kdWxlcy93
ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsCisgICAgTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCisgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
cmluZ0NvbnRleHQuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlk
bAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsCisg
ICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRsCiAgICAgTW9kdWxlcy93ZWJn
cHUvV2ViR1BVU3dhcENoYWluLmlkbAogCiAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZl
bnQuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCmluZGV4IDljOTNkOGY5NWQ5YTFlMTNmODJlMzUzYzYxMzllY2I0YzY0
YTFmMTMuLjg2NzI4MDBmMjZmMmY2NDYzN2MwY2JjMzcxMDI2MTUzYjJjZDY4MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCkBAIC0zNjYsNyArMzY2LDExIEBAIEVOQUJMRV9XRUJHTCA9IEVOQUJMRV9XRUJHTDsKIAog
RU5BQkxFX1dFQkdMMiA9IEVOQUJMRV9XRUJHTDI7CiAKLUVOQUJMRV9XRUJHUFUgPSBFTkFCTEVf
V0VCR1BVOworRU5BQkxFX1dFQkdQVSA9ICQoRU5BQkxFX1dFQkdQVV8kKFdLX1BMQVRGT1JNX05B
TUUpKTsKK0VOQUJMRV9XRUJHUFVfaXBob25lb3MgPSBFTkFCTEVfV0VCR1BVOworRU5BQkxFX1dF
QkdQVV93YXRjaG9zID0gRU5BQkxFX1dFQkdQVTsKK0VOQUJMRV9XRUJHUFVfYXBwbGV0dm9zID0g
RU5BQkxFX1dFQkdQVTsKK0VOQUJMRV9XRUJHUFVfbWFjb3N4ID0gRU5BQkxFX1dFQkdQVTsKIAog
RU5BQkxFX1dFQk1FVEFMID0gJChFTkFCTEVfV0VCTUVUQUxfJChXS19QTEFURk9STV9OQU1FKSk7
CiBFTkFCTEVfV0VCTUVUQUxfaXBob25lb3MgPSBFTkFCTEVfV0VCTUVUQUw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCBkY2M3NzJjNjY2YjdmOWEwMGQ4ZTcwZGRhYjhjODhkYWM2
YzQ0MDMxLi5mOTU5MDkwMzA4YzI1NTEyMWM0ZmZlOTUzNDc0NjAxMDI0NjYyNmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTM3Myw5ICszNzMsMTQgQEAgSlNfQklORElOR19J
RExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlckRlc2NyaXB0b3Iu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwgXAor
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFz
ZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlcmluZ0NvbnRleHQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwgXAorICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVEZXZpY2UuY3BwCmluZGV4IGU4NTExNDQwNThkYjM3MmYwYzRkMTM2NWMwMmY1ODZiYTk3MTVl
NjAuLjA0Yzk2N2YyYmRlNDhmYWFmNTU4Y2Y3OTQ3NDVkN2U1ODk0ODlmZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcApAQCAtMjgsNiArMjgsOCBAQAog
CiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lLmgiCisj
aW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiR1BVU2hh
ZGVyTW9kdWxlLmgiCiAjaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgogCkBA
IC0zOCw2ICs0MCwxMSBAQCBSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBHUFVEZXZpY2U6OmNyZWF0
ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJgogICAgIHJldHVybiBHUFVT
aGFkZXJNb2R1bGU6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShkZXNjcmlwdG9yKSk7CiB9CiAKK1Jl
ZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAoreworICAgIHJl
dHVybiBHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0b3Ip
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmgKaW5kZXggYzE5ZTFl
Y2ZmNWI3ZjhkMDNkNzVmM2M4NzE5MWNkODc5MTg3YjFhYi4uODhiMGNkMmJlZGQ1YThiZDdlZTAx
Yzc4ODlkNjg3Zjc3MzUwZDY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
RGV2aWNlLmgKQEAgLTQ2LDE0ICs0NiwxNyBAQCB1c2luZyBQbGF0Zm9ybURldmljZVNtYXJ0UHRy
ID0gUmVmUHRyPHZvaWQ+OwogI2VuZGlmCiAKIGNsYXNzIEdQVVNoYWRlck1vZHVsZTsKK2NsYXNz
IEdQVVJlbmRlclBpcGVsaW5lOwogCiBzdHJ1Y3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsK
K3N0cnVjdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7CiAKIGNsYXNzIEdQVURldmljZSA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVURldmljZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQ
dHI8R1BVRGV2aWNlPiBjcmVhdGUoKTsKIAogICAgIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IGNy
ZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYpIGNvbnN0OworICAg
IFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yJiYpIGNvbnN0OwogCiAgICAgUGxhdGZvcm1EZXZpY2UgKnBsYXRm
b3JtRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURldmljZS5nZXQoKTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZURlc2Ny
aXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmUyNzU1YjllMjY2YTJlOGIzOGZhNWQ0YjA4ZmQ3
ZTE0ZTI4MTI2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaApAQCAtMCwwICsxLDQyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BV
UGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7
CisgICAgVmVjdG9yPEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yPiBzdGFnZXM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUGlwZWxpbmVTdGFnZURlc2Ny
aXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5lU3RhZ2VE
ZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBjZGQ0OGQwYmIxNGM5M2RmZDI5Y2EyMjA5Y2QwZTc0
Y2FlOWE3NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVNo
YWRlck1vZHVsZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yIHsKKyAg
ICBjb25zdCBHUFVTaGFkZXJNb2R1bGUmIG1vZHVsZTsKKyAgICB1bnNpZ25lZCBsb25nIHN0YWdl
OworICAgIFN0cmluZyBlbnRyeVBvaW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDAzNWVhNjIyMTU4ZDM0NjhlMzdmZDFkNTZkODMyMzVjZDNhNTRjNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
LmgiCisjaW5jbHVkZSAiR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7CisgICAgZW51
bSB7CisgICAgICAgIFBvaW50TGlzdCwKKyAgICAgICAgTGluZUxpc3QsCisgICAgICAgIExpbmVT
dHJpcCwKKyAgICAgICAgVHJpYW5nbGVMaXN0LAorICAgICAgICBUcmlhbmdsZVN0cmlwCisgICAg
fTsKKworICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihWZWN0b3I8R1BVUGlwZWxpbmVT
dGFnZURlc2NyaXB0b3I+JiYgc3RhZ2VzLCBpbnQgdG9wb2xvZ3kpCisgICAgICAgIDogR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZSB7IFdURk1vdmUoc3RhZ2VzKSB9CisgICAgICAgICwgcHJpbWl0
aXZlVG9wb2xvZ3kodG9wb2xvZ3kpCisgICAgeworICAgIH0KKworICAgIGludCBwcmltaXRpdmVU
b3BvbG9neTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
LmNwcAppbmRleCAxMGI5YmYzZGY1ODFhOTVhZTM3NmI2MmQ4YWRkMWEyYWVjYTlhNzc0Li5jYzA0
ZGZjZmJjNWIyYjZlZTMxMzc1OGIxMGVkYTQwOTU5ZTZkZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTI4LDkgKzI4LDEzIEBACiAK
ICNpZiBFTkFCTEUoV0VCR1BVKQogCi0jaW5jbHVkZSAiV2ViR1BVQWRhcHRlci5oIgotCisjaW5j
bHVkZSAiR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lU3RhZ2VE
ZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKKyNpbmNsdWRl
ICJXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJHUFVTaGFk
ZXJNb2R1bGUuaCIKICNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCiAK
QEAgLTU3LDYgKzYxLDIwIEBAIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVURldmlj
ZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1vZHVsZURlCiAgICAgcmV0dXJuIFdl
YkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKG1fZGV2aWNlLT5jcmVhdGVTaGFkZXJNb2R1bGUoR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7IGRlc2NyaXB0b3IuY29kZSB9KSk7CiB9CiAKK1JlZlB0
cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGlu
ZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAorewor
ICAgIFZlY3RvcjxHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcj4gc3RhZ2VzOworICAgIGZvciAo
Y29uc3QgYXV0byYgc3RhZ2VEZXNjcmlwdG9yIDogZGVzY3JpcHRvci5zdGFnZXMpIHsKKyAgICAg
ICAgaWYgKCFzdGFnZURlc2NyaXB0b3IubW9kdWxlKSB7CisgICAgICAgICAgICBMT0coV2ViR1BV
LCAiV2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSgpOiBXZWJHUFVTaGFkZXJNb2R1
bGUgbm90IGZvdW5kISIpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0K
KyAgICAgICAgc3RhZ2VzLmFwcGVuZCh7IHN0YWdlRGVzY3JpcHRvci5tb2R1bGUtPm1vZHVsZSgp
LCBzdGFnZURlc2NyaXB0b3Iuc3RhZ2UsIHN0YWdlRGVzY3JpcHRvci5lbnRyeVBvaW50IH0pOwor
ICAgIH0KKworICAgIHJldHVybiBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKG1fZGV2aWNl
LT5jcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgeyBXVEZN
b3ZlKHN0YWdlcyksIHN0YXRpY19jYXN0PGludD4oZGVzY3JpcHRvci5wcmltaXRpdmVUb3BvbG9n
eSkgfSkpOworfQorCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAppbmRleCA0ZDViMGJhYzE3NTk2MWE4ZGVl
N2U5MjE4NjZiZmJhNzBmYTEzNzMxLi43YzI3ZTBiOTcyMzJkMjhhNjA1YTA0ZWJlMzFiNjY4OTQ4
ZjBiZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVE
ZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
aApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJHUFUpCiAKICNpbmNsdWRlICJHUFVE
ZXZpY2UuaCIKKyNpbmNsdWRlICJXZWJHUFVBZGFwdGVyLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM3LDE3ICszOCwyMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBX
ZWJHUFVBZGFwdGVyOworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmU7CiBjbGFzcyBXZWJHUFVT
aGFkZXJNb2R1bGU7CiAKK3N0cnVjdCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7CiBz
dHJ1Y3QgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVRGV2aWNl
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVRGV2aWNlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZlB0cjxXZWJHUFVEZXZpY2U+IGNyZWF0ZShSZWY8V2ViR1BVQWRhcHRlcj4mJik7CiAKLSAg
ICBXZWJHUFVBZGFwdGVyJiBhZGFwdGVyKCkgY29uc3QgeyByZXR1cm4gbV9hZGFwdGVyLmdldCgp
OyB9CisgICAgY29uc3QgV2ViR1BVQWRhcHRlciYgYWRhcHRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YWRhcHRlci5nZXQoKTsgfQorICAgIGNvbnN0IEdQVURldmljZSYgZGV2aWNlKCkgY29uc3QgeyBy
ZXR1cm4gKm1fZGV2aWNlOyB9CiAKICAgICBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBjcmVh
dGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYmKSBjb25zdDsKKyAg
ICBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZVJlbmRlclBpcGVsaW5lKFdlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBXZWJH
UFVEZXZpY2UoUmVmPFdlYkdQVUFkYXB0ZXI+JiYsIFJlZlB0cjxHUFVEZXZpY2U+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwKaW5kZXggZDFh
OWYxYTJjOWMzM2Q1NzMwMmFkMjk3NDg2MTg1Y2I2YmUyN2NlYy4uNjAzZTM3NmNiMzhlMTA0NWVk
ODkxYzAyZDMxZjY5NTkxYzgzYzcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVEZXZpY2UuaWRsCkBAIC0zNCw2ICszNCw3IEBACiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFdlYkdQVUFkYXB0ZXIgYWRhcHRlcjsKIAogICAgIFdlYkdQVVNoYWRlck1vZHVsZSBj
cmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciBkZXNjcmlwdG9y
KTsKKyAgICBXZWJHUFVSZW5kZXJQaXBlbGluZSBjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAKIC8qIFRvIEJlIEltcGxlbWVu
dGVkOgogICAgIFdlYkdQVUJ1ZmZlciBjcmVhdGVCdWZmZXIoV2ViR1BVQnVmZmVyRGVzY3JpcHRv
ciBkZXNjcmlwdG9yKTsKQEAgLTQ5LDggKzUwLDYgQEAKICAgICBXZWJHUFVJbnB1dFN0YXRlIGNy
ZWF0ZUlucHV0U3RhdGUoV2ViR1BVSW5wdXRTdGF0ZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAg
ICAgV2ViR1BVQXR0YWNobWVudFN0YXRlIGNyZWF0ZUF0dGFjaG1lbnRTdGF0ZShXZWJHUFVBdHRh
Y2htZW50U3RhdGVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogICAgIFdlYkdQVUNvbXB1dGVQaXBl
bGluZSBjcmVhdGVDb21wdXRlUGlwZWxpbmUoV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVSZW5kZXJQaXBlbGluZSBjcmVhdGVSZW5kZXJQaXBl
bGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0KICAgICBX
ZWJHUFVDb21tYW5kQnVmZmVyIGNyZWF0ZUNvbW1hbmRCdWZmZXIoV2ViR1BVQ29tbWFuZEJ1ZmZl
ckRlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BVRmVuY2UgY3JlYXRlRmVuY2UoV2Vi
R1BVRmVuY2VEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzEyMWE5YmE1NjgzNzQwMTQzY2VjMzA1OTA4MmJjODJjYTU0MTU5MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lRGVzY3JpcHRvckJhc2UuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVT
dGFnZURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RydWN0IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgeworICAgIFZl
Y3RvcjxXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcj4gc3RhZ2VzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMzZjdhNzY2MTdhYjE5NTlmMjA3MTg4NjliNTk3ZTdmNWMyZTQ5
MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
Ky8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9z
a2V0Y2gud2ViaWRsCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0
UnVudGltZT1XZWJHUFUKK10gZGljdGlvbmFyeSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
IHsKKyAgICAvLyBXZWJHUFVQaXBlbGluZUxheW91dCBsYXlvdXQ7CisgICAgc2VxdWVuY2U8V2Vi
R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I+IHN0YWdlczsKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2Ny
aXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zM2YzYWUwOTU2NTAwZDRmN2IzN2M1ZTUwN2QwODdhZGYwYWRh
MTY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BV
U2hhZGVyTW9kdWxlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBXZWJHUFVTaGFkZXJTdGFnZUVudW0gPSB1bnNpZ25l
ZCBsb25nOworCitzdHJ1Y3QgV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IgeworICAgIGNv
bnN0IFdlYkdQVVNoYWRlck1vZHVsZSogbW9kdWxlID0gbnVsbHB0cjsKKyAgICBXZWJHUFVTaGFk
ZXJTdGFnZUVudW0gc3RhZ2U7CisgICAgU3RyaW5nIGVudHJ5UG9pbnQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0
b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNmIwODgxN2Q5MmRhN2JjY2QwMjhhYzdmZTNl
Y2MxMTIyMzU5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5pZGwKQEAgLTAsMCArMSwzNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9ibG9iL21hc3Rl
ci9kZXNpZ24vc2tldGNoLndlYmlkbAorCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgV2ViR1BVU2hh
ZGVyU3RhZ2VFbnVtOworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRB
dFJ1bnRpbWU9V2ViR1BVCitdIGRpY3Rpb25hcnkgV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0
b3IgeworICAgIFdlYkdQVVNoYWRlck1vZHVsZSBtb2R1bGU7CisgICAgV2ViR1BVU2hhZGVyU3Rh
Z2VFbnVtIHN0YWdlOworICAgIERPTVN0cmluZyBlbnRyeVBvaW50OworfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hYjNjMDIwMDQyODJkN2JlYTIzMmZhZWZkZDc1Njg1N2Q1NGZkYTRmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
UGlwZWxpbmUuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1JlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVUmVuZGVyUGlwZWxp
bmU6OmNyZWF0ZShSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCit7CisgICAg
aWYgKCFwaXBlbGluZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKSk7Cit9CisK
K1dlYkdQVVJlbmRlclBpcGVsaW5lOjpXZWJHUFVSZW5kZXJQaXBlbGluZShSZWZQdHI8R1BVUmVu
ZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCisgICAgOiBtX3JlbmRlclBpcGVsaW5lKHBpcGVsaW5l
KQoreworICAgIFVOVVNFRF9QQVJBTShtX3JlbmRlclBpcGVsaW5lKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhiNTEwNjJjZGQyNjE5OGMwZmEwZTk3Zjg2OTJiZjc2YzZmYWExMWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGlu
ZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZS5oIgorCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmUgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJHUFVSZW5kZXJQaXBlbGluZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8
V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+JiYp
OworCitwcml2YXRlOgorICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lKFJlZlB0cjxHUFVSZW5kZXJQ
aXBlbGluZT4mJik7CisKKyAgICBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IG1fcmVuZGVyUGlw
ZWxpbmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0NmQwMWEyOTVlMWFhZGRhMTc2ZDk1NWFk
MjllZTQ5MGI0MTAzZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9ibG9iL21hc3Rlci9kZXNp
Z24vc2tldGNoLndlYmlkbAorCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJs
ZWRBdFJ1bnRpbWU9V2ViR1BVLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKK10gaW50
ZXJmYWNlIFdlYkdQVVJlbmRlclBpcGVsaW5lIHsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA2ZWVjNWQ4YjZmZWUyOTVlNWY0MDExMDlkYTFiYWQ4MWUyZThkNTIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JC
YXNlIHsKKyAgICBlbnVtIGNsYXNzIFByaW1pdGl2ZVRvcG9sb2d5IHsKKyAgICAgICAgUG9pbnRM
aXN0LAorICAgICAgICBMaW5lTGlzdCwKKyAgICAgICAgTGluZVN0cmlwLAorICAgICAgICBUcmlh
bmdsZUxpc3QsCisgICAgICAgIFRyaWFuZ2xlU3RyaXAKKyAgICB9OworCisgICAgUHJpbWl0aXZl
VG9wb2xvZ3kgcHJpbWl0aXZlVG9wb2xvZ3k7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2ZhNTQ0NzQzZGYyNjlmMmNjMzhiODQxZjI4YTU3YTIzNTBhMTU5NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisv
LyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tl
dGNoLndlYmlkbAorCitlbnVtIFdlYkdQVVByaW1pdGl2ZVRvcG9sb2d5IHsKKyAgICAicG9pbnRM
aXN0IiwKKyAgICAibGluZUxpc3QiLAorICAgICJsaW5lU3RyaXAiLAorICAgICJ0cmlhbmdsZUxp
c3QiLAorICAgICJ0cmlhbmdsZVN0cmlwIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQ
VSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBkaWN0aW9uYXJ5IFdlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciA6IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgeworICAg
IFdlYkdQVVByaW1pdGl2ZVRvcG9sb2d5IHByaW1pdGl2ZVRvcG9sb2d5OworICAgIC8qIFRvIEJl
IEltcGxlbWVudGVkOgorICAgIHNlcXVlbmNlPFdlYkdQVUJsZW5kU3RhdGU+IGJsZW5kU3RhdGVz
OworICAgIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlIGRlcHRoU3RlbmNpbFN0YXRlOworICAgIFdl
YkdQVUlucHV0U3RhdGUgaW5wdXRTdGF0ZTsKKyAgICBXZWJHUFVBdHRhY2htZW50c1N0YXRlIGF0
dGFjaG1lbnRzU3RhdGU7ICovCisgICAgLy8gVE9ETyBvdGhlciBwcm9wZXJ0aWVzCit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCAwYmQyNzY0M2FlYjFlNWVlZDE2MjQ2NDkwNjE5ZmQ2MTFjZGU0Yzdj
Li5lYzNlMDc2ZDViMmQwMzQxOWMxODcxZDA2NjQxZTQzZmU5ZWViMjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtMzIsMTMgKzMyLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlx
dWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZShDYW52YXNCYXNlJiBjYW52YXMpCiB7Ci0gICAgYXV0byBjb250ZXh0ID0gc3RkOjp1bmlx
dWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+KG5ldyBXZWJHUFVSZW5kZXJpbmdDb250ZXh0
KGNhbnZhcykpOworICAgIGF1dG8gc3dhcENoYWluID0gR1BVU3dhcENoYWluOjpjcmVhdGUoKTsK
KworICAgIGlmICghc3dhcENoYWluKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1
dG8gY29udGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJHUFVSZW5kZXJpbmdDb250ZXh0PihuZXcg
V2ViR1BVUmVuZGVyaW5nQ29udGV4dChjYW52YXMsIFdURk1vdmUoc3dhcENoYWluKSkpOwogICAg
IGNvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBjb250ZXh0OwogfQogCi1X
ZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpXZWJHUFVSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2Um
IGNhbnZhcykKLSAgICA6IFdlYkdQVVN3YXBDaGFpbihjYW52YXMpCitXZWJHUFVSZW5kZXJpbmdD
b250ZXh0OjpXZWJHUFVSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmUHRy
PEdQVVN3YXBDaGFpbj4mJiBzd2FwQ2hhaW4pCisgICAgOiBXZWJHUFVTd2FwQ2hhaW4oY2FudmFz
LCBXVEZNb3ZlKHN3YXBDaGFpbikpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA0OWE3ZGFmMTM4
NmEzMTg2NjlhYjkzMmNhYTNmYjIyYjVmOTFlZTY3Li42ZjFhN2Q5N2Q4MzRmM2JmMzhlMGRiMDZi
YjM5YzAxMTNhN2MyMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0
ZShDYW52YXNCYXNlJik7CiAKIHByaXZhdGU6Ci0gICAgV2ViR1BVUmVuZGVyaW5nQ29udGV4dChD
YW52YXNCYXNlJik7CisgICAgV2ViR1BVUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiwgUmVm
UHRyPEdQVVN3YXBDaGFpbj4mJik7CiAgICAgLy8gQ2FudmFzUmVuZGVyaW5nQ29udGV4dAogICAg
IGJvb2wgaXNXZWJHUFUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgLy8gQWN0
aXZlRE9NT2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNoYWRlck1vZHVsZS5oCmluZGV4IDk3OTgyOTA5NWU0OWZkY2JhNWYwOTA1OWJjYjIxM2ExYmQy
MDEyMjIuLjUwNjBkNTZhOGM1OTcwOWJhMTA5YWZiOGVkOTI3NzExODJhZDVlOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCkBA
IC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdFQkdQVSkKIAogI2luY2x1ZGUgIkdQVVNoYWRl
ck1vZHVsZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CisKICNp
bmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtMzgs
NiArMzgsOCBAQCBjbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJHUFVTaGFkZXJNb2R1bGU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVNo
YWRlck1vZHVsZT4gY3JlYXRlKFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+JiYpOwogCisgICAgY29u
c3QgR1BVU2hhZGVyTW9kdWxlJiBtb2R1bGUoKSBjb25zdCB7IHJldHVybiAqbV9tb2R1bGU7IH0K
KwogcHJpdmF0ZToKICAgICBXZWJHUFVTaGFkZXJNb2R1bGUoUmVmUHRyPEdQVVNoYWRlck1vZHVs
ZT4mJik7CiAKQEAgLTQ3LDMgKzQ5LDQgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxN2Q0MmY1OTY4
YTk4Nzg3YTlmOTY5OTg3N2UwNzVmNTA0MmJjMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5oCkBAIC0wLDAgKzEsNDUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFdlYkdQVVNoYWRlclN0YWdlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU2hhZGVyU3RhZ2U+
IHsKK3B1YmxpYzoKKyAgICBlbnVtIHsKKyAgICAgICAgVkVSVEVYID0gMCwKKyAgICAgICAgRlJB
R01FTlQgPSAxLAorICAgICAgICBDT01QVVRFID0gMgorICAgIH07Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRsCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNhMzdhMzc0MTJkNDkzMDFiYmY1NzgxN2U4NTZjOTZkMDYzNGNlNmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5pZGwK
QEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2Vi
L2dwdXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAorCit0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgdTMyOworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRB
dFJ1bnRpbWU9V2ViR1BVLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKK10gaW50ZXJm
YWNlIFdlYkdQVVNoYWRlclN0YWdlIHsKKyAgICBjb25zdCB1MzIgVkVSVEVYID0gMDsKKyAgICBj
b25zdCB1MzIgRlJBR01FTlQgPSAxOworICAgIGNvbnN0IHUzMiBDT01QVVRFID0gMjsKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcApp
bmRleCAwMzgyYWU3YmRmYzc1YjVhNTIwOGUzYjVlNzA1YWZlZWFiOWY4ZTQ5Li44YWE2YTY4MmJl
NDc5OTRlZGI4OGU2MWU4ZmIzMjRkYmYwNGMxMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAKQEAgLTI4LDEyICsyOCwxNyBAQAog
CiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdlYkdQVVN3YXBDaGFpbjo6fldlYkdQVVN3YXBDaGFpbigpID0g
ZGVmYXVsdDsKIAotdm9pZCBXZWJHUFVTd2FwQ2hhaW46OmNvbmZpZ3VyZShjb25zdCBEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQordm9pZCBXZWJHUFVTd2FwQ2hhaW46OmNvbmZpZ3VyZShEZXNjcmlw
dG9yJiYgZGVzY3JpcHRvcikKIHsKKyAgICBpZiAoZGVzY3JpcHRvci5kZXZpY2UpCisgICAgICAg
IG1fc3dhcENoYWluLT5zZXREZXZpY2UoZGVzY3JpcHRvci5kZXZpY2UtPmRldmljZSgpKTsKKwog
ICAgIHJlc2hhcGUoZGVzY3JpcHRvci53aWR0aCwgZGVzY3JpcHRvci5oZWlnaHQpOwogfQogCkBA
IC00NCwxMyArNDksMTIgQEAgdm9pZCBXZWJHUFVTd2FwQ2hhaW46OnByZXNlbnQoKQogCiB2b2lk
IFdlYkdQVVN3YXBDaGFpbjo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7Ci0gICAg
bV93aWR0aCA9IHdpZHRoOwotICAgIG1faGVpZ2h0ID0gaGVpZ2h0OworICAgIG1fc3dhcENoYWlu
LT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOwogfQogCiB2b2lkIFdlYkdQVVN3YXBDaGFpbjo6bWFy
a0xheWVyQ29tcG9zaXRlZCgpCiB7Ci0gICAgLy8gRklYTUU6IFVuaW1wbGVtZW50ZWQgc3R1Yi4K
KyAgICBtX3N3YXBDaGFpbi0+cHJlc2VudCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hh
aW4uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oCmlu
ZGV4IGY1NmQzNjFmODVkNGJiYjA0YjcwNjA5MzAwNGM4OTRmMmYwMzM4NDcuLjA2Nzk1MDYyMTVi
YmYyZTgxOGI1MzFlZjE2ZGM0YmUyMjgyZjA0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oCkBAIC0yOCwyNSArMjgsMjkgQEAKICNpZiBF
TkFCTEUoV0VCR1BVKQogCiAjaW5jbHVkZSAiR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0
LmgiCisjaW5jbHVkZSAiR1BVU3dhcENoYWluLmgiCisjaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVU3dhcENoYWluIDogcHVibGlj
IEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgc3RydWN0IERl
c2NyaXB0b3IgeworICAgICAgICBjb25zdCBXZWJHUFVEZXZpY2UqIGRldmljZSA9IG51bGxwdHI7
CiAgICAgICAgIC8vIEZJWE1FOiBNb3JlIHRleHR1cmUgcHJvcGVydGllcy4KICAgICAgICAgdW5z
aWduZWQgbG9uZyB3aWR0aDsKICAgICAgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQ7CiAgICAgfTsK
IAogICAgIHZpcnR1YWwgfldlYkdQVVN3YXBDaGFpbigpID0gMDsKLSAgICB2b2lkIGNvbmZpZ3Vy
ZShjb25zdCBEZXNjcmlwdG9yJik7CisgICAgdm9pZCBjb25maWd1cmUoRGVzY3JpcHRvciYmKTsK
ICAgICAvLyBGSVhNRTogV2ViR1BVVGV4dHVyZSBnZXROZXh0VGV4dHVyZSgpOwogICAgIHZvaWQg
cHJlc2VudCgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViR1BVU3dhcENoYWluKENhbnZhc0Jhc2Um
IGNhbnZhcykKKyAgICBXZWJHUFVTd2FwQ2hhaW4oQ2FudmFzQmFzZSYgY2FudmFzLCBSZWZQdHI8
R1BVU3dhcENoYWluPiYmIHN3YXBDaGFpbikKICAgICAgICAgOiBHUFVCYXNlZENhbnZhc1JlbmRl
cmluZ0NvbnRleHQoY2FudmFzKQorICAgICAgICAsIG1fc3dhcENoYWluKFdURk1vdmUoc3dhcENo
YWluKSkKICAgICB7CiAgICAgfQogCkBAIC02Myw4ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzdG9wKCkgb3ZlcnJpZGUgeyB9CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNw
ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHVuc2lnbmVk
IGxvbmcgbV93aWR0aDsKLSAgICB1bnNpZ25lZCBsb25nIG1faGVpZ2h0OworICAgIFJlZlB0cjxH
UFVTd2FwQ2hhaW4+IG1fc3dhcENoYWluOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWlu
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwK
aW5kZXggOTljYTkwZTQzY2E2MjM2OGUxZjlhYWViYTEzNDNmZjQzZTJhY2YyMC4uZWVmODVlYmM1
YmQyNzQwMGE3NjU4Mzk2ODhkNWE5Y2NiOTAxN2JkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsCkBAIC0zNiw3ICszNiwxMSBAQAog
CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwogCi1kaWN0aW9uYXJ5IFdlYkdQVVN3YXBDaGFp
bkRlc2NyaXB0b3IgeworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRS
dW50aW1lPVdlYkdQVQorXSBkaWN0aW9uYXJ5IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3Igewor
ICAgIFdlYkdQVURldmljZSBkZXZpY2U7IC8vIEZJWE1FOiBQcm9wb3NlIHRoaXMgYWRkaXRpb24g
dG8gSURMLgogICAgIC8vIFdlYkdQVVRleHR1cmVVc2FnZUZsYWdzIHVzYWdlOwogICAgIC8vIFdl
YkdQVVRleHR1cmVGb3JtYXRFbnVtIGZvcm1hdDsKICAgICB1MzIgd2lkdGg7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNzkyYTkzMTQwOGYyNjVjOWRiNGJiNGJhMGI0YTI1MDE5MmE5ZjdmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BV
UmVuZGVyUGlwZWxpbmUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisj
aWYgVVNFKE1FVEFMKQorT0JKQ19QUk9UT0NPTChNVExSZW5kZXJQaXBlbGluZVN0YXRlKTsKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVURldmljZTsKKworc3RydWN0
IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKKworI2lmIFVTRShNRVRBTCkKK3VzaW5nIFBs
YXRmb3JtUmVuZGVyUGlwZWxpbmUgPSBNVExSZW5kZXJQaXBlbGluZVN0YXRlOwordXNpbmcgUGxh
dGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5l
U3RhdGU+OworI2Vsc2UKK3VzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmUgPSB2b2lkOwordXNp
bmcgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyID0gUmVmUHRyPHZvaWQ+OworI2VuZGlm
CisKK2NsYXNzIEdQVVJlbmRlclBpcGVsaW5lIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUmVuZGVy
UGlwZWxpbmU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5l
PiBjcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYp
OworCisgICAgUGxhdGZvcm1SZW5kZXJQaXBlbGluZSAqcGxhdGZvcm1SZW5kZXJQaXBlbGluZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1SZW5kZXJQaXBlbGluZS5nZXQoKTsgfQorCitwcml2
YXRlOgorICAgIEdQVVJlbmRlclBpcGVsaW5lKFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0
ciYmKTsKKworICAgIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciBtX3BsYXRmb3JtUmVu
ZGVyUGlwZWxpbmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
Y29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY0ZDJm
MWE3ZGU5ODBjOTlhMTEzM2M3MmFhN2JkYmNhZWUwMjkyOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwu
bW0KQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW1w
b3J0ICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIK
KyNpbXBvcnQgIldlYkdQVVNoYWRlclN0YWdlLmgiCisKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+
CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0YXRpYyBib29sIHNldEZ1bmN0aW9uc0ZvclBpcGVsaW5lRGVzY3JpcHRvcihjb25z
dCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAq
bXRsRGVzY3JpcHRvciwgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikK
K3sKKyNpZiBMT0dfRElTQUJMRUQKKyAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKKyNl
bmRpZgorICAgIGZvciAoY29uc3QgYXV0byYgc3RhZ2VEZXNjcmlwdG9yIDogZGVzY3JpcHRvci5z
dGFnZXMpIHsKKyAgICAgICAgYXV0byBtdGxMaWJyYXJ5ID0gcmV0YWluUHRyKHN0YWdlRGVzY3Jp
cHRvci5tb2R1bGUucGxhdGZvcm1TaGFkZXJNb2R1bGUoKSk7CisKKyAgICAgICAgaWYgKCFtdGxM
aWJyYXJ5KSB7CisgICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE1UTExpYnJhcnkgZG9lcyBu
b3QgZXhpc3QhIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGF1dG8gZnVuY3Rpb24gPSBhZG9wdE5TKFttdGxMaWJyYXJ5IG5l
d0Z1bmN0aW9uV2l0aE5hbWU6c3RhZ2VEZXNjcmlwdG9yLmVudHJ5UG9pbnRdKTsKKworICAgICAg
ICBpZiAoIWZ1bmN0aW9uKSB7CisgICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE1UTEZ1bmN0
aW9uICVzIG5vdCBmb3VuZCEiLCBmdW5jdGlvbk5hbWUsIHN0YWdlRGVzY3JpcHRvci5lbnRyeVBv
aW50LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgc3dpdGNoIChzdGFnZURlc2NyaXB0b3Iuc3RhZ2UpIHsKKyAgICAgICAgY2Fz
ZSBXZWJHUFVTaGFkZXJTdGFnZTo6VkVSVEVYOgorICAgICAgICAgICAgW210bERlc2NyaXB0b3Ig
c2V0VmVydGV4RnVuY3Rpb246ZnVuY3Rpb24uZ2V0KCldOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgV2ViR1BVU2hhZGVyU3RhZ2U6OkZSQUdNRU5UOgorICAgICAgICAgICAgW210
bERlc2NyaXB0b3Igc2V0RnJhZ21lbnRGdW5jdGlvbjpmdW5jdGlvbi5nZXQoKV07CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPRyhXZWJHUFUsICIl
czogSW52YWxpZCBzaGFkZXIgc3RhZ2Ugc3BlY2lmaWVkISIsIGZ1bmN0aW9uTmFtZSk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCitSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IEdQ
VVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCit7CisgICAgY29uc3QgY2hhciogY29u
c3QgZnVuY3Rpb25OYW1lID0gIkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoKSI7CisKKyAgICBp
ZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7CisgICAgICAgIExPRyhXZWJHUFUsICIlczog
TVRMRGV2aWNlIGRvZXMgbm90IGV4aXN0ISIsIGZ1bmN0aW9uTmFtZSk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I+IG10bERlc2NyaXB0b3I7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
CisKKyAgICBtdGxEZXNjcmlwdG9yID0gYWRvcHROUyhbTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yIG5ld10pOworCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIGlmICgh
bXRsRGVzY3JpcHRvcikgeworICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEVycm9yIGNyZWF0aW5n
IE1UTERlc2NyaXB0b3IhIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgaWYgKCFzZXRGdW5jdGlvbnNGb3JQaXBlbGluZURlc2NyaXB0b3IoZnVu
Y3Rpb25OYW1lLCBtdGxEZXNjcmlwdG9yLmdldCgpLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBGSVhNRTogR2V0IHRoZSBwaXhlbEZvcm1h
dCBhcyBjb25maWd1cmVkIGZvciB0aGUgY29udGV4dC9DQU1ldGFsTGF5ZXIuCisgICAgbXRsRGVz
Y3JpcHRvci5nZXQoKS5jb2xvckF0dGFjaG1lbnRzWzBdLnBpeGVsRm9ybWF0ID0gTVRMUGl4ZWxG
b3JtYXRCR1JBOFVub3JtOworCisgICAgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyIHBp
cGVsaW5lOworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgaWYgKFtt
dGxEZXNjcmlwdG9yIHZlcnRleEZ1bmN0aW9uXSkKKyAgICAgICAgcGlwZWxpbmUgPSBhZG9wdE5T
KFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2Ny
aXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKSBlcnJvcjpuaWxdKTsKKyAgICBlbHNlCisgICAgICAg
IExPRyhXZWJHUFUsICIlczogTm8gdmVydGV4IGZ1bmN0aW9uIGFzc2lnbmVkIGZvciBNVExSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IhIiwgZnVuY3Rpb25OYW1lKTsKKworICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CisKKyAgICBpZiAoIXBpcGVsaW5lKSB7CisgICAgICAgIExPRyhXZWJH
UFUsICIlczogRXJyb3IgY3JlYXRpbmcgTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSEiLCBmdW5jdGlv
bk5hbWUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKSk7Cit9CisKK0dQ
VVJlbmRlclBpcGVsaW5lOjpHUFVSZW5kZXJQaXBlbGluZShQbGF0Zm9ybVJlbmRlclBpcGVsaW5l
U21hcnRQdHImJiBwaXBlbGluZSkKKyAgICA6IG1fcGxhdGZvcm1SZW5kZXJQaXBlbGluZShXVEZN
b3ZlKHBpcGVsaW5lKSkKK3sKKyAgICBVTlVTRURfUEFSQU0obV9wbGF0Zm9ybVJlbmRlclBpcGVs
aW5lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQ
VVN3YXBDaGFpbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU3dh
cENoYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJlNjJlMzk4ZWExNjBmNGI0YzY3OTliMTg3ZDRiZWZkMjE4
ODM2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2Nv
Y29hL0dQVVN3YXBDaGFpbi5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKE1FVEFMKQorT0JKQ19DTEFTUyBD
QU1ldGFsTGF5ZXI7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVE
ZXZpY2U7CisKKyNpZiBVU0UoTUVUQUwpCit1c2luZyBQbGF0Zm9ybVN3YXBMYXllciA9IENBTWV0
YWxMYXllcjsKK3VzaW5nIFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHIgPSBSZXRhaW5QdHI8Q0FN
ZXRhbExheWVyPjsKKyNlbHNlCit1c2luZyBQbGF0Zm9ybVN3YXBMYXllciA9IHZvaWQ7Cit1c2lu
ZyBQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRyID0gUmVmUHRyPHZvaWQ+OworI2VuZGlmCisKK2Ns
YXNzIEdQVVN3YXBDaGFpbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVN3YXBDaGFpbj4geworcHVi
bGljOgorICAgIHN0YXRpYyBSZWZQdHI8R1BVU3dhcENoYWluPiBjcmVhdGUoKTsKKworICAgIHZv
aWQgc2V0RGV2aWNlKGNvbnN0IEdQVURldmljZSYpOworICAgIHZvaWQgcmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpOworICAgIHZvaWQgcHJlc2VudCgpOworCisgICAgUGxhdGZvcm1Td2Fw
TGF5ZXIgKnBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtU3dhcExheWVy
LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgR1BVU3dhcENoYWluKFBsYXRmb3JtU3dhcExheWVy
U21hcnRQdHImJik7CisKKyAgICBQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRyIG1fcGxhdGZvcm1T
d2FwTGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29j
b2EvR1BVU3dhcENoYWluTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9j
b2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGZkMTYyZWJiODIzMTc3ZTQz
NWNiOTY3YTJjNjNjZjdiNTVkYjk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KQEAgLTAsMCArMSw5MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVU3dhcENoYWlu
LmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW1wb3J0ICJHUFVEZXZpY2UuaCIKKyNpbXBv
cnQgIkxvZ2dpbmcuaCIKKworI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPFF1YXJ0
ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8R1BVU3dhcENoYWluPiBHUFVTd2FwQ2hh
aW46OmNyZWF0ZSgpCit7CisgICAgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciBwbGF0Zm9ybUxh
eWVyOworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgcGxhdGZvcm1M
YXllciA9IGFkb3B0TlMoW1tDQU1ldGFsTGF5ZXIgYWxsb2NdIGluaXRdKTsKKworICAgIFtwbGF0
Zm9ybUxheWVyIHNldE9wYXF1ZTowXTsKKyAgICBbcGxhdGZvcm1MYXllciBzZXROYW1lOkAiV2Vi
R1BVIExheWVyIl07CisKKyAgICAvLyBGSVhNRTogRm9yIG5vdywgZGVmYXVsdCB0byB0aGVzZSBz
ZXR0aW5ncy4KKyAgICBbcGxhdGZvcm1MYXllciBzZXRQaXhlbEZvcm1hdDpNVExQaXhlbEZvcm1h
dEJHUkE4VW5vcm1dOworICAgIFtwbGF0Zm9ybUxheWVyIHNldEZyYW1lYnVmZmVyT25seTpZRVNd
OworCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIGlmICghcGxhdGZvcm1M
YXllcikgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjpjcmVhdGUoKTogVW5h
YmxlIHRvIGNyZWF0ZSBDQU1ldGFsTGF5ZXIhIik7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVU3dhcENoYWluKFdURk1vdmUocGxh
dGZvcm1MYXllcikpKTsKK30KKworR1BVU3dhcENoYWluOjpHUFVTd2FwQ2hhaW4oUGxhdGZvcm1T
d2FwTGF5ZXJTbWFydFB0ciYmIHBsYXRmb3JtTGF5ZXIpCisgICAgOiBtX3BsYXRmb3JtU3dhcExh
eWVyKFdURk1vdmUocGxhdGZvcm1MYXllcikpCit7Cit9CisKK3ZvaWQgR1BVU3dhcENoYWluOjpz
ZXREZXZpY2UoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UpCit7CisgICAgaWYgKCFkZXZpY2UucGxh
dGZvcm1EZXZpY2UoKSkgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjpzZXRE
ZXZpY2UoKTogTVRMRGV2aWNlIGRvZXMgbm90IGV4aXN0ISIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgW21fcGxhdGZvcm1Td2FwTGF5ZXIgc2V0RGV2aWNlOmRldmljZS5wbGF0Zm9y
bURldmljZSgpXTsKK30KKwordm9pZCBHUFVTd2FwQ2hhaW46OnJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KQoreworICAgIFttX3BsYXRmb3JtU3dhcExheWVyIHNldEJvdW5kczpDR1JlY3RN
YWtlKDAsIDAsIHdpZHRoLCBoZWlnaHQpXTsKKyAgICBbbV9wbGF0Zm9ybVN3YXBMYXllciBzZXRE
cmF3YWJsZVNpemU6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07Cit9CisKK3ZvaWQgR1BVU3dh
cENoYWluOjpwcmVzZW50KCkKK3sKKyAgICAvLyBGSVhNRTogVW5pbXBsZW1lbnRlZCBzdHViLgor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCmluZGV4IDljOTNkOGY5NWQ5YTFlMTNmODJlMzUzYzYxMzllY2I0YzY0
YTFmMTMuLjg2NzI4MDBmMjZmMmY2NDYzN2MwY2JjMzcxMDI2MTUzYjJjZDY4MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcKQEAgLTM2Niw3ICszNjYsMTEgQEAgRU5BQkxFX1dFQkdMID0gRU5BQkxFX1dF
QkdMOwogCiBFTkFCTEVfV0VCR0wyID0gRU5BQkxFX1dFQkdMMjsKIAotRU5BQkxFX1dFQkdQVSA9
IEVOQUJMRV9XRUJHUFU7CitFTkFCTEVfV0VCR1BVID0gJChFTkFCTEVfV0VCR1BVXyQoV0tfUExB
VEZPUk1fTkFNRSkpOworRU5BQkxFX1dFQkdQVV9pcGhvbmVvcyA9IEVOQUJMRV9XRUJHUFU7CitF
TkFCTEVfV0VCR1BVX3dhdGNob3MgPSBFTkFCTEVfV0VCR1BVOworRU5BQkxFX1dFQkdQVV9hcHBs
ZXR2b3MgPSBFTkFCTEVfV0VCR1BVOworRU5BQkxFX1dFQkdQVV9tYWNvc3ggPSBFTkFCTEVfV0VC
R1BVOwogCiBFTkFCTEVfV0VCTUVUQUwgPSAkKEVOQUJMRV9XRUJNRVRBTF8kKFdLX1BMQVRGT1JN
X05BTUUpKTsKIEVOQUJMRV9XRUJNRVRBTF9pcGhvbmVvcyA9IEVOQUJMRV9XRUJNRVRBTDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKaW5kZXggZDUwMjc3NzJiMWU2ZmFjNmJmOTQ4ZmUyZjcwMmQ4YTVkMmYxOGI5MC4u
ZWEzZThmZTE5ZGIwZTFmMWQ2YzE0NDkyOGVhMmI3NDNlMjc5MzQ5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
QEAgLTMwMiw2ICszMDIsNyBAQCBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVBZGFwdGVyLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAog
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAKK01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9k
dWxlLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcAogCkBAIC0zMTk1LDkg
KzMxOTYsMTQgQEAgSlNXZWJHUFUuY3BwCiBKU1dlYkdQVUFkYXB0ZXIuY3BwCiBKU1dlYkdQVUFk
YXB0ZXJEZXNjcmlwdG9yLmNwcAogSlNXZWJHUFVEZXZpY2UuY3BwCitKU1dlYkdQVVBpcGVsaW5l
RGVzY3JpcHRvckJhc2UuY3BwCitKU1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmNwcAog
SlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcAorSlNXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAK
K0pTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAogSlNXZWJHUFVTaGFkZXJNb2R1
bGUuY3BwCiBKU1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwCitKU1dlYkdQVVNoYWRl
clN0YWdlLmNwcAogSlNXZWJHUFVTd2FwQ2hhaW4uY3BwCiBKU1dlYk1ldGFsQnVmZmVyLmNwcAog
SlNXZWJNZXRhbENvbW1hbmRCdWZmZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAx
NDc0ZTU5MjU5NTA0OTM3YWI4Y2NlNTJmNTY0N2JkODdmOGUwYTc0Li4zMjlmYTg2MDYzODAzNjBl
NGVlOWJlZGEwNzAwNzY5MWU4NTdhZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI4
LDcgKzI4LDkgQEAgTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAK
IE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KIAogTW9k
dWxlcy93ZWJncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0KK01vZHVsZXMvd2ViZ3B1L2NvY29h
L0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVNoYWRl
ck1vZHVsZU1ldGFsLm1tCitNb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5t
bQogCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCiBhY2Nlc3Np
YmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjkwNTczOTMxNTVlMDJhOWVmNTJl
NmRiMmI5YmU3MDA1MTdjZTY1Yy4uMTNhNjg1NGU3Mjg3YjNmYTA5M2VkMDJiNTgwNjNlZTI5ODE4
MmUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTM3NzksNiArMTM3NzksOSBAQAogCQlEMDQ1QUQyMTIxNjgyNDc0MDAwQTZF
OUIgLyogV2ViTWV0YWxCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWV0YWxCdWZm
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDQ1QUQyMjIxNjgyNDc0MDAw
QTZFOUIgLyogV2ViTWV0YWxDb21tYW5kQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1ldGFs
Q29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDQ1QUQyMzIx
NjgyNDc1MDAwQTZFOUIgLyogV2ViTWV0YWxDb21tYW5kUXVldWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViTWV0YWxDb21tYW5kUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlEMDQ2RkI2NTIxOEQwNzNDMDBDQjhGNjIgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDQ2RkI2NzIxOEQxODAzMDBDQjhGNjIgLyogR1BV
UGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA0NkZCNjgyMThE
MThDRDAwQ0I4RjYyIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEMDU3M0Q0MjIxN0VCODFFMDBEMUJFOTEgLyogR1BVTGVnYWN5VGV4dHVyZU1ldGFsLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5VGV4dHVy
ZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDVDRUQyNzBBNDBCQjJD
MDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMDVDRUQyODBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21t
YW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtYXRCbG9ja0NvbW1h
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzODAyLDYgKzEzODA1LDggQEAK
IAkJRDA5M0QyMjUyMTc5NTFENDAwMzI5MjE3IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMDkzRDIyNzIxNzk1MUQ0MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVyaW5n
Q29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwOTNEMjI5MjE3OTU0MTYwMDMyOTIxNyAvKiBXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDk3MjdCNTIxODdGNDQzMDA5
NDJGM0EgLyogR1BVU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdQVVN3YXBDaGFpbi5oOyBw
YXRoID0gY29jb2EvR1BVU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUQwOTcyN0I2MjE4N0Y0NDMwMDk0MkYzQSAvKiBHUFVTd2FwQ2hhaW5NZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdQVVN3YXBDaGFpbk1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMDk3MjdDMjIxOEE0NzI5MDA5NDJGM0EgLyogR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwOTcyN0NBMjE4QkQ3QTUwMDk0MkYzQSAvKiBH
UFVEZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRGV2aWNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBBMjBENTQyMDkyQTBBNjAwRTBDMjU5IC8qIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMzgxMiw2ICsxMzgxNywxOSBAQAogCQlEMEJDNTQ0ODE0NDNBQzRBMDBFMTA1REEgLyogQ2Fj
aGVkU3R5bGVTaGVldENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQw
QkQ0RjVBMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkNvbW1hbmRJT1MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEJENEY1QjE0MDg4NTBGMDA2ODM5QjYgLyog
RGljdGF0aW9uQ29tbWFuZElPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
aWN0YXRpb25Db21tYW5kSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQx
OUVCMjE4M0NGQTIwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlFQzIxODNDRkEyMDA5RUMxREUgLyogV2ViR1BVUGlw
ZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlw
dG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RUUyMTgzRDlDODAw
OUVDMURFIC8qIFdlYkdQVVNoYWRlclN0YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVNoYWRl
clN0YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUVGMjE4M0Q5Qzgw
MDlFQzFERSAvKiBXZWJHUFVTaGFkZXJTdGFnZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU2hhZGVyU3RhZ2Uu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlGMDIxODNFQjMxMDA5RUMx
REUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
UFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUQwQzQxOUYxMjE4M0VCMzEwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RjIyMTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RjMyMTgz
RUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRDBDNDE5RjcyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUQwQzQxOUY4MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQ
aXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUY5MjE4NDA0REEwMDlFQzFERSAv
KiBXZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlGQTIxODQwRjZDMDA5RUMxREUg
LyogR1BVUmVuZGVyUGlwZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR1BVUmVuZGVyUGlwZWxpbmUu
aDsgcGF0aCA9IGNvY29hL0dQVVJlbmRlclBpcGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUQwQzQxOUZCMjE4NDBGNkMwMDlFQzFERSAvKiBHUFVSZW5kZXJQaXBlbGluZU1l
dGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBDQUFFOTgyMTY4MjRBNjAwMUM5MUM3IC8q
IFdlYk1ldGFsQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJNZXRhbEJ1ZmZlci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTlBMjE2ODI0QTYwMDFDOTFDNyAvKiBXZWJNZXRhbENv
bW1hbmRCdWZmZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTlCMjE2ODI0QTcwMDFDOTFDNyAvKiBXZWJNZXRh
bENvbW1hbmRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZXRhbENvbW1hbmRRdWV1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU0NDgsOCArMjU0NjYsMTMgQEAKIAkJCQlE
MDBGNTk0MjIxNkVDQzdBMDAwRDcxREIgLyogRE9NV2luZG93V2ViR1BVLmlkbCAqLywKIAkJCQlE
MDk3MjdDQTIxOEJEN0E1MDA5NDJGM0EgLyogR1BVRGV2aWNlLmNwcCAqLywKIAkJCQlEMDYxNUZD
RjIxN0ZGMTg1MDA4QTQ4QTggLyogR1BVRGV2aWNlLmggKi8sCisJCQkJRDA0NkZCNjgyMThEMThD
RDAwQ0I4RjYyIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLywKKwkJCQlEMDQ2RkI2
NzIxOEQxODAzMDBDQjhGNjIgLyogR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCAqLywKKwkJ
CQlEMEM0MTlGQTIxODQwRjZDMDA5RUMxREUgLyogR1BVUmVuZGVyUGlwZWxpbmUuaCAqLywKKwkJ
CQlEMDQ2RkI2NTIxOEQwNzNDMDBDQjhGNjIgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmggKi8sCiAJCQkJRDA2MEQ4ODgyMTgyODBDMTAwMzM5MzE4IC8qIEdQVVNoYWRlck1vZHVsZS5o
ICovLAogCQkJCUQwOTcyN0MyMjE4QTQ3MjkwMDk0MkYzQSAvKiBHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmggKi8sCisJCQkJRDA5NzI3QjUyMTg3RjQ0MzAwOTQyRjNBIC8qIEdQVVN3YXBDaGFp
bi5oICovLAogCQkJCUQwMEY1OTQ3MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUuY3BwICovLAog
CQkJCUQwMEY1OTQ2MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUuaCAqLywKIAkJCQlEMDBGNTk0
ODIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmlkbCAqLywKQEAgLTI1NDYxLDE0ICsyNTQ4NCwy
NSBAQAogCQkJCUQwMEY1OTUzMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuY3BwICov
LAogCQkJCUQwMEY1OTUyMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuaCAqLywKIAkJ
CQlEMDBGNTk1NDIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmlkbCAqLywKKwkJCQlE
MEM0MTlGMDIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5o
ICovLAorCQkJCUQwQzQxOUYxMjE4M0VCMzEwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGluZURlc2Ny
aXB0b3JCYXNlLmlkbCAqLywKKwkJCQlEMEM0MTlFQjIxODNDRkEyMDA5RUMxREUgLyogV2ViR1BV
UGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCAqLywKKwkJCQlEMEM0MTlFQzIxODNDRkEyMDA5RUMx
REUgLyogV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsICovLAogCQkJCUQwOTNEMjI5
MjE3OTU0MTYwMDMyOTIxNyAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLywKIAkJCQlE
MDkzRDIyNTIxNzk1MUQ0MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oICovLAog
CQkJCUQwOTNEMjI3MjE3OTUxRDQwMDMyOTIxNyAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmlk
bCAqLywKKwkJCQlEMEM0MTlGODIxODQwNERBMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxp
bmUuY3BwICovLAorCQkJCUQwQzQxOUY3MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQ
aXBlbGluZS5oICovLAorCQkJCUQwQzQxOUY5MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5k
ZXJQaXBlbGluZS5pZGwgKi8sCisJCQkJRDBDNDE5RjIyMTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovLAorCQkJCUQwQzQxOUYzMjE4M0VGRUMwMDlF
QzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsICovLAogCQkJCUQwNjE1
RkNEMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuY3BwICovLAogCQkJCUQw
NjE1RkNDMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuaCAqLywKIAkJCQlE
MDYxNUZDRTIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCAqLywKIAkJ
CQlEMDYwRDg4NzIxODI2OTcwMDAzMzkzMTggLyogV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ci5oICovLAogCQkJCUQwNjBEODg0MjE4MjVENUYwMDMzOTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yLmlkbCAqLywKKwkJCQlEMEM0MTlFRTIxODNEOUM4MDA5RUMxREUgLyogV2Vi
R1BVU2hhZGVyU3RhZ2UuaCAqLywKKwkJCQlEMEM0MTlFRjIxODNEOUM4MDA5RUMxREUgLyogV2Vi
R1BVU2hhZGVyU3RhZ2UuaWRsICovLAogCQkJCUQwREEwQkU1MjE3OTMwRTIwMDdGRTJBQyAvKiBX
ZWJHUFVTd2FwQ2hhaW4uY3BwICovLAogCQkJCUQwREEwQkU0MjE3OTMwRTIwMDdGRTJBQyAvKiBX
ZWJHUFVTd2FwQ2hhaW4uaCAqLywKIAkJCQlEMERBMEJFNjIxNzkzMEUyMDA3RkUyQUMgLyogV2Vi
R1BVU3dhcENoYWluLmlkbCAqLywKQEAgLTI1NDgwLDcgKzI1NTE0LDkgQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRDA2MTVGRDEyMTdGRjFFMTAwOEE0OEE4IC8q
IEdQVURldmljZU1ldGFsLm1tICovLAorCQkJCUQwQzQxOUZCMjE4NDBGNkMwMDlFQzFERSAvKiBH
UFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICovLAogCQkJCUQwNjBEODg5MjE4MjgwQzEwMDMzOTMx
OCAvKiBHUFVTaGFkZXJNb2R1bGVNZXRhbC5tbSAqLywKKwkJCQlEMDk3MjdCNjIxODdGNDQzMDA5
NDJGM0EgLyogR1BVU3dhcENoYWluTWV0YWwubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29h
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCBkMjlkYmJkNTdjNDgyZGZhYTAyMzM4
NjAxYjEwZjA4NmM0YTQ2MzZlLi4wYjg4ODNjZGVmYjY1MjVhNzc2OTYxOGI3ODNlNzM1ZTdiNjMz
YjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRp
bk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oCkBAIC0xNzgsNiArMTc4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3Jv
KFdlYkdQVUFkYXB0ZXIpIFwKICAgICBtYWNybyhXZWJHUFVEZXZpY2UpIFwKICAgICBtYWNybyhX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0KSBcCisgICAgbWFjcm8oV2ViR1BVUmVuZGVyUGlwZWxpbmUp
IFwKKyAgICBtYWNybyhXZWJHUFVTaGFkZXJTdGFnZSkgXAogICAgIG1hY3JvKFdlYkdQVVNoYWRl
ck1vZHVsZSkgXAogICAgIG1hY3JvKFdlYkdQVVN3YXBDaGFpbikgXAogICAgIG1hY3JvKFdlYk1l
dGFsQnVmZmVyKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCA5YzkzZDhmOTVkOWExZTEzZjgyZTM1M2M2MTM5ZWNi
NGM2NGExZjEzLi44NjcyODAwZjI2ZjJmNjQ2MzdjMGNiYzM3MTAyNjE1M2IyY2Q2ODJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKQEAgLTM2Niw3ICszNjYsMTEgQEAgRU5BQkxFX1dFQkdMID0gRU5BQkxFX1dFQkdMOwog
CiBFTkFCTEVfV0VCR0wyID0gRU5BQkxFX1dFQkdMMjsKIAotRU5BQkxFX1dFQkdQVSA9IEVOQUJM
RV9XRUJHUFU7CitFTkFCTEVfV0VCR1BVID0gJChFTkFCTEVfV0VCR1BVXyQoV0tfUExBVEZPUk1f
TkFNRSkpOworRU5BQkxFX1dFQkdQVV9pcGhvbmVvcyA9IEVOQUJMRV9XRUJHUFU7CitFTkFCTEVf
V0VCR1BVX3dhdGNob3MgPSBFTkFCTEVfV0VCR1BVOworRU5BQkxFX1dFQkdQVV9hcHBsZXR2b3Mg
PSBFTkFCTEVfV0VCR1BVOworRU5BQkxFX1dFQkdQVV9tYWNvc3ggPSBFTkFCTEVfV0VCR1BVOwog
CiBFTkFCTEVfV0VCTUVUQUwgPSAkKEVOQUJMRV9XRUJNRVRBTF8kKFdLX1BMQVRGT1JNX05BTUUp
KTsKIEVOQUJMRV9XRUJNRVRBTF9pcGhvbmVvcyA9IEVOQUJMRV9XRUJNRVRBTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKaW5kZXggOWM5M2Q4Zjk1ZDlhMWUxM2Y4MmUzNTNjNjEzOWVjYjRj
NjRhMWYxMy4uODY3MjgwMGYyNmYyZjY0NjM3YzBjYmMzNzEwMjYxNTNiMmNkNjgyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTM2Niw3ICszNjYsMTEgQEAgRU5BQkxFX1dFQkdM
ID0gRU5BQkxFX1dFQkdMOwogCiBFTkFCTEVfV0VCR0wyID0gRU5BQkxFX1dFQkdMMjsKIAotRU5B
QkxFX1dFQkdQVSA9IEVOQUJMRV9XRUJHUFU7CitFTkFCTEVfV0VCR1BVID0gJChFTkFCTEVfV0VC
R1BVXyQoV0tfUExBVEZPUk1fTkFNRSkpOworRU5BQkxFX1dFQkdQVV9pcGhvbmVvcyA9IEVOQUJM
RV9XRUJHUFU7CitFTkFCTEVfV0VCR1BVX3dhdGNob3MgPSBFTkFCTEVfV0VCR1BVOworRU5BQkxF
X1dFQkdQVV9hcHBsZXR2b3MgPSBFTkFCTEVfV0VCR1BVOworRU5BQkxFX1dFQkdQVV9tYWNvc3gg
PSBFTkFCTEVfV0VCR1BVOwogCiBFTkFCTEVfV0VCTUVUQUwgPSAkKEVOQUJMRV9XRUJNRVRBTF8k
KFdLX1BMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9XRUJNRVRBTF9pcGhvbmVvcyA9IEVOQUJMRV9X
RUJNRVRBTDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBkNWY1YjQ0YjA4YWRkYWJlODFiNDdjOWZjM2Q5YmExYTZmYjhiZDUxLi45NzcxZGNmMTQ5
OTBmODBmNWM5YTcxY2JkMzI0ZDg0Mjg5YjljYzczIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTEtMDYgIEp1
c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBFeHBl
cmltZW50YWwgcHJvdG90eXBlIGZvciBXZWJHUFVSZW5kZXJQaXBlbGluZSBhbmQgV2ViR1BVU3dh
cENoYWluCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTEyOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQ
cm9wZXJseSBkaXNhYmxlIFdFQkdQVSBvbiBhbGwgbm9uLU1ldGFsIHBsYXRmb3JtcyBmb3Igbm93
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZzoKKwogMjAxOC0xMS0wNSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgd2Via2l0cHk6IEdlbmVyYWxpemUgdHJhaWxpbmcgU0RLIHNwZWNp
ZmllciAoUGFydCAxKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggOWM5M2Q4Zjk1ZDlhMWUxM2Y4
MmUzNTNjNjEzOWVjYjRjNjRhMWYxMy4uODY3MjgwMGYyNmYyZjY0NjM3YzBjYmMzNzEwMjYxNTNi
MmNkNjgyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0zNjYsNyArMzY2LDExIEBAIEVOQUJM
RV9XRUJHTCA9IEVOQUJMRV9XRUJHTDsKIAogRU5BQkxFX1dFQkdMMiA9IEVOQUJMRV9XRUJHTDI7
CiAKLUVOQUJMRV9XRUJHUFUgPSBFTkFCTEVfV0VCR1BVOworRU5BQkxFX1dFQkdQVSA9ICQoRU5B
QkxFX1dFQkdQVV8kKFdLX1BMQVRGT1JNX05BTUUpKTsKK0VOQUJMRV9XRUJHUFVfaXBob25lb3Mg
PSBFTkFCTEVfV0VCR1BVOworRU5BQkxFX1dFQkdQVV93YXRjaG9zID0gRU5BQkxFX1dFQkdQVTsK
K0VOQUJMRV9XRUJHUFVfYXBwbGV0dm9zID0gRU5BQkxFX1dFQkdQVTsKK0VOQUJMRV9XRUJHUFVf
bWFjb3N4ID0gRU5BQkxFX1dFQkdQVTsKIAogRU5BQkxFX1dFQk1FVEFMID0gJChFTkFCTEVfV0VC
TUVUQUxfJChXS19QTEFURk9STV9OQU1FKSk7CiBFTkFCTEVfV0VCTUVUQUxfaXBob25lb3MgPSBF
TkFCTEVfV0VCTUVUQUw7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTcxODYwNTIwYzBiMGQ5N2EzNWJkNTA1ZjM1ZDI5M2E1
OGU2MTU5ZC4uZTg4MTgwMjYxNWEzOThhY2JhNzY2ZDE3MDM4MTdjODhkYzVjNjRlNiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDE4LTExLTA2ICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRXhwZXJpbWVudGFsIHByb3RvdHlwZSBmb3IgV2Vi
R1BVUmVuZGVyUGlwZWxpbmUgYW5kIFdlYkdQVVN3YXBDaGFpbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMjkxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJncHUvanMvc2V0LXVwLXdlYmdwdS1j
b250ZXh0cy5qczogQWRkZWQgaGVscGVyIHNjcmlwdCBmb3IgcnVubmluZyBkaWZmZXJlbnQgd2Vi
Z3B1IHRlc3RzLgorICAgICAgICAocnVuV2ViR1BVVGVzdHMpOgorICAgICAgICAoYXN5bmMucnVu
V2ViR1BVVGVzdHNPbkNhbnZhcyk6CisgICAgICAgIChhc3luYy5zZXRVcENvbnRleHRzKToKKyAg
ICAgICAgKiB3ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHdlYmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
YmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViZ3B1L3NoYWRl
ci1tb2R1bGVzLmh0bWw6IFVwZGF0ZWQgdG8gdXNlIGZ1bmN0aW9ucyBpbiBzZXQtdXAtd2ViZ3B1
LWNvbnRleHRzLmpzLgorICAgICAgICAqIHdlYmdwdS93ZWJncHUtYmFzaWNzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiB3ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sOiBVcGRhdGVkIHRocm91Z2gg
Y3JlYXRpbmcgYSBXZWJHUFVSZW5kZXJQaXBlbGluZS4KKwogMjAxOC0xMS0wMSAgSnVzdGluIEZh
biAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEV4cGVyaW1lbnRh
bCBwcm90b3R5cGUgZm9yIE1TTCBzaGFkZXJzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvanMvc2V0LXVwLXdlYmdwdS1jb250ZXh0cy5qcyBiL0xheW91dFRlc3RzL3dlYmdwdS9qcy9z
ZXQtdXAtd2ViZ3B1LWNvbnRleHRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MzA1NjA0ZGFlZTNmYmE1NzVj
M2I0OThmZDhlOGJjY2IyZDMwYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvanMvc2V0LXVwLXdlYmdwdS1jb250ZXh0cy5qcwpAQCAtMCwwICsxLDQ2IEBACisndXNlIHN0
cmljdCc7CisKK2xldCBjb250ZXh0LCBhZGFwdGVyLCBkZWZhdWx0RGV2aWNlOworCitmdW5jdGlv
biBydW5XZWJHUFVUZXN0cyh0ZXN0cykgeworICAgIHJ1bldlYkdQVVRlc3RzT25DYW52YXMoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksIHRlc3RzKTsKK30KKworYXN5bmMgZnVuY3Rp
b24gcnVuV2ViR1BVVGVzdHNPbkNhbnZhcyhjYW52YXMsIHRlc3RzKSB7CisgICAgdHJ5IHsKKyAg
ICAgICAgYXdhaXQgc2V0VXBDb250ZXh0cyhjYW52YXMpOworCisgICAgICAgIGZvciAobGV0IHRl
c3Qgb2YgdGVzdHMpCisgICAgICAgICAgICB0ZXN0KCk7CisKKyAgICAgICAgZGVidWcoIkFsbCB0
ZXN0cyBjb21wbGV0ZS4iKTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBjb25zb2xl
LmVycm9yKGVycm9yKTsKKyAgICAgICAgdGVzdEZhaWxlZChgWyR7ZXJyb3J9XTogU2VlIGNvbnNv
bGUhYCk7CisgICAgfQorfQorCithc3luYyBmdW5jdGlvbiBzZXRVcENvbnRleHRzKGNhbnZhcykg
eworICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ3B1Iik7CisgICAgaWYgKCFj
b250ZXh0KQorICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVSBjb250
ZXh0ISIpOworCisgICAgc2hvdWxkQmVEZWZpbmVkKHdpbmRvdy53ZWJncHUpOworICAgIAorICAg
IC8vIEZJWE1FOiByZXF1ZXN0QWRhcHRlciBzaG91bGQgdGFrZSBhIFdlYkdQVUFkYXB0ZXJEZXNj
cmlwdG9yLgorICAgIGFkYXB0ZXIgPSBhd2FpdCB3aW5kb3cud2ViZ3B1LnJlcXVlc3RBZGFwdGVy
KHt9KTsKKyAgICBpZiAoIWFkYXB0ZXIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90
IGNyZWF0ZSBkZWZhdWx0IFdlYkdQVUFkYXB0ZXIhIikKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIEZJWE1FOiByZXF1ZXN0RGV2aWNlIHNob3VsZCB0YWtlIGEgV2ViR1BVRGV2aWNl
RGVzY3JpcHRvci4KKyAgICBkZWZhdWx0RGV2aWNlID0gYWRhcHRlci5jcmVhdGVEZXZpY2UoKTsK
KyAgICBpZiAoIWRlZmF1bHREZXZpY2UpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90
IGNyZWF0ZSBXZWJHUFVEZXZpY2UhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAv
LyBGSVhNRTogRGVmYXVsdCB0byAiQjhHOFI4QThVbm9ybSIgZm9ybWF0IGZvciBub3cuCisgICAg
Y29udGV4dC5jb25maWd1cmUoeyBkZXZpY2U6IGRlZmF1bHREZXZpY2UsIHdpZHRoOiBjYW52YXMu
d2lkdGgsIGhlaWdodDogY2FudmFzLmhlaWdodCB9KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzI1YjQ3ZjlkZjVjMjU2ZWNjOWQyYTk1YjY2ZTBjNTZmMzkwNjdm
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitQQVNTIFtvYmplY3QgV2ViR1BVXSBpcyBk
ZWZpbmVkLgorUEFTUyBTdWNjZXNzZnVsbHkgY3JlYXRlZCBXZWJHUFVSZW5kZXJQaXBlbGluZS4K
K1BBU1MgV2ViR1BVUmVuZGVyUGlwZWxpbmUgd2l0aCBpbnZhbGlkIFdlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciB3YXMgbm90IGNyZWF0ZWQuCitQQVNTIFdlYkdQVVJlbmRlclBpcGVsaW5l
IHdpdGggaW52YWxpZCBzaGFkZXIgbW9kdWxlIHdhcyBub3QgY3JlYXRlZC4KK1BBU1MgV2ViR1BV
UmVuZGVyUGlwZWxpbmUgd2l0aCBpbnZhbGlkIHZlcnRleCBzaGFkZXIgc3RhZ2Ugd2FzIG5vdCBj
cmVhdGVkLgorUEFTUyBXZWJHUFVSZW5kZXJQaXBlbGluZSB3aXRoIGludmFsaWQgdmVydGV4IHNo
YWRlciBlbnRyeSBwb2ludCB3YXMgbm90IGNyZWF0ZWQuCitQQVNTIFdlYkdQVVJlbmRlclBpcGVs
aW5lIHdpdGggaW52YWxpZCBXZWJHUFVTaGFkZXJTdGFnZUVudW0gd2FzIG5vdCBjcmVhdGVkLgor
QWxsIHRlc3RzIGNvbXBsZXRlLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlw
ZWxpbmVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg1ZDRjMGEzY2M2NDliYzQwMzY0ODZmYWZmNDViYTYwYTM2YjQzODgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy5odG1sCkBA
IC0wLDAgKzEsMTM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ianMvc2V0
LXVwLXdlYmdwdS1jb250ZXh0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJsaWJyYXJ5IiB0
eXBlPSJ4LXNoYWRlci94LW1ldGFsIj4KKyAgICAjaW5jbHVkZSA8bWV0YWxfc3RkbGliPgorICAg
IAorICAgIHVzaW5nIG5hbWVzcGFjZSBtZXRhbDsKKyAgICAKKyAgICBzdHJ1Y3QgVmVydGV4Cisg
ICAgeworICAgICAgICBmbG9hdDQgcG9zaXRpb24gW1twb3NpdGlvbl1dOworICAgIH07CisgICAg
CisgICAgdmVydGV4IFZlcnRleCB2ZXJ0ZXhfbWFpbih1aW50IHZpZCBbW3ZlcnRleF9pZF1dKQor
ICAgIHsKKyAgICAgICAgVmVydGV4IHY7CisgICAgICAgIHN3aXRjaCAodmlkKSB7CisgICAgICAg
IGNhc2UgMDoKKyAgICAgICAgICAgIHYucG9zaXRpb24gPSBmbG9hdDQoLS43NSwgLS43NSwgMCwg
MSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgdi5w
b3NpdGlvbiA9IGZsb2F0NCguNzUsIC0uNzUsIDAsIDEpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHYucG9zaXRpb24gPSBmbG9hdDQoMCwgLjc1LCAw
LCAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
di5wb3NpdGlvbiA9IGZsb2F0NCgwLCAwLCAwLCAxKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdjsKKyAgICB9CisgICAgCisgICAgZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oVmVy
dGV4IHZlcnRleEluIFtbc3RhZ2VfaW5dXSkKKyAgICB7CisgICAgICAgIHJldHVybiBmbG9hdDQo
MS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0
cmljdCc7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisKK2xldCBzaGFkZXJEZXNjcmlwdG9yLCBzaGFkZXJNb2R1bGUsIHZlcnRl
eFN0YWdlRGVzY3JpcHRvciwgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3I7CisKK2Z1bmN0aW9uIHNl
dFVwUGlwZWxpbmUoKSB7CisgICAgc2hhZGVyRGVzY3JpcHRvciA9IHsKKyAgICAgICAgY29kZTog
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpYnJhcnkiKS50ZXh0CisgICAgfTsKKworICAgIHNo
YWRlck1vZHVsZSA9IGRlZmF1bHREZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHNoYWRlckRlc2Ny
aXB0b3IpOworICAgIGlmICghc2hhZGVyTW9kdWxlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNv
dWxkIG5vdCBjcmVhdGUgV2ViR1BVU2hhZGVyTW9kdWxlISIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdmVydGV4U3RhZ2VEZXNjcmlwdG9yID0geyAKKyAgICAgICAgbW9kdWxlOiBz
aGFkZXJNb2R1bGUsIAorICAgICAgICBzdGFnZTogV2ViR1BVU2hhZGVyU3RhZ2UuVkVSVEVYLCAK
KyAgICAgICAgZW50cnlQb2ludDogInZlcnRleF9tYWluIiAKKyAgICB9OworCisgICAgZnJhZ21l
bnRTdGFnZURlc2NyaXB0b3IgPSB7CisgICAgICAgIG1vZHVsZTogc2hhZGVyTW9kdWxlLAorICAg
ICAgICBzdGFnZTogV2ViR1BVU2hhZGVyU3RhZ2UuRlJBR01FTlQsCisgICAgICAgIGVudHJ5UG9p
bnQ6ICJmcmFnbWVudF9tYWluIgorICAgIH07CisKKyAgICBsZXQgcGlwZWxpbmVEZXNjcmlwdG9y
ID0geworICAgICAgICBzdGFnZXM6IFt2ZXJ0ZXhTdGFnZURlc2NyaXB0b3IsIGZyYWdtZW50U3Rh
Z2VEZXNjcmlwdG9yXSwKKyAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6ICJ0cmlhbmdsZUxpc3Qi
CisgICAgfTsKKworICAgIGxldCByZW5kZXJQaXBlbGluZSA9IGRlZmF1bHREZXZpY2UuY3JlYXRl
UmVuZGVyUGlwZWxpbmUocGlwZWxpbmVEZXNjcmlwdG9yKTsKKyAgICBpZiAocmVuZGVyUGlwZWxp
bmUpCisgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIFdlYkdQVVJlbmRl
clBpcGVsaW5lLiIpCisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3Jl
YXRlIFdlYkdQVVJlbmRlclBpcGVsaW5lISIpOworfQorCitmdW5jdGlvbiBjaGVja0JhZFJlbmRl
clBpcGVsaW5lKGRlc2NyaXB0b3IsIHRlc3RTdWJqZWN0TmFtZSkgeworICAgIGxldCBwaXBlbGlu
ZSA9IGRlZmF1bHREZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoZGVzY3JpcHRvcik7CisKKyAg
ICBpZiAocGlwZWxpbmUpCisgICAgICAgIHRlc3RGYWlsZWQoYFdlYkdQVVJlbmRlclBpcGVsaW5l
IHdhcyBjcmVhdGVkIHdpdGggYW4gaW52YWxpZCAke3Rlc3RTdWJqZWN0TmFtZX0hYCk7CisgICAg
ZWxzZQorICAgICAgICB0ZXN0UGFzc2VkKGBXZWJHUFVSZW5kZXJQaXBlbGluZSB3aXRoIGludmFs
aWQgJHt0ZXN0U3ViamVjdE5hbWV9IHdhcyBub3QgY3JlYXRlZC5gKTsKK30KKworZnVuY3Rpb24g
c2V0VXBCYWRQaXBlbGluZXMoKSB7CisgICAgY2hlY2tCYWRSZW5kZXJQaXBlbGluZSh7fSwgIldl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciIpOworCisgICAgbGV0IG5vTW9kdWxlVmVydGV4
RGVzY3JpcHRvciA9IHsKKyAgICAgICAgc3RhZ2U6IFdlYkdQVVNoYWRlclN0YWdlLlZFUlRFWCwK
KyAgICAgICAgZW50cnlQb2ludDogInZlcnRleF9tYWluIgorICAgIH0KKyAgICBsZXQgbm9Nb2R1
bGVQaXBlbGluZURlc2NyaXB0b3IgPSB7CisgICAgICAgIHN0YWdlczogW25vTW9kdWxlVmVydGV4
RGVzY3JpcHRvciwgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3JdLAorICAgICAgICBwcmltaXRpdmVU
b3BvbG9neTogInRyaWFuZ2xlTGlzdCIKKyAgICB9CisgICAgY2hlY2tCYWRSZW5kZXJQaXBlbGlu
ZShub01vZHVsZVBpcGVsaW5lRGVzY3JpcHRvciwgInNoYWRlciBtb2R1bGUiKTsKKworICAgIC8v
IEEgKE1ldGFsKSByZW5kZXJwaXBlbGluZSBtdXN0IGhhdmUgYSB2ZXJ0ZXggZnVuY3Rpb24uCisg
ICAgbGV0IG5vVmVydGV4UGlwZWxpbmVEZXNjcmlwdG9yID0geworICAgICAgICBzdGFnZXM6IFtm
cmFnbWVudFN0YWdlRGVzY3JpcHRvcl0sCisgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAidHJp
YW5nbGVMaXN0IgorICAgIH0KKyAgICBjaGVja0JhZFJlbmRlclBpcGVsaW5lKG5vVmVydGV4UGlw
ZWxpbmVEZXNjcmlwdG9yLCAidmVydGV4IHNoYWRlciBzdGFnZSIpCisKKyAgICBsZXQgYmFkRW50
cnlQb2ludERlc2NyaXB0b3IgPSB7IAorICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwgCisg
ICAgICAgIHN0YWdlOiBXZWJHUFVTaGFkZXJTdGFnZS5WRVJURVgsIAorICAgICAgICBlbnRyeVBv
aW50OiAiVmVydGV4X01haW4iIAorICAgIH07CisgICAgbGV0IGJhZEVudHJ5UG9pbnRQaXBlbGlu
ZURlc2NzcmlwdG9yID0geworICAgICAgICBzdGFnZXM6IFtiYWRFbnRyeVBvaW50RGVzY3JpcHRv
ciwgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3JdLAorICAgICAgICBwcmltaXRpdmVUb3BvbG9neTog
InRyaWFuZ2xlTGlzdCIKKyAgICB9CisgICAgY2hlY2tCYWRSZW5kZXJQaXBlbGluZShiYWRFbnRy
eVBvaW50UGlwZWxpbmVEZXNjc3JpcHRvciwgInZlcnRleCBzaGFkZXIgZW50cnkgcG9pbnQiKTsK
KworICAgIGxldCBiYWRTdGFnZUVudW1EZXNjcmlwdG9yID0geyAKKyAgICAgICAgbW9kdWxlOiBz
aGFkZXJNb2R1bGUsIAorICAgICAgICBzdGFnZTogV2ViR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwg
CisgICAgICAgIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhfbWFpbiIgCisgICAgfTsKKyAgICBsZXQgYmFk
U3RhZ2VFbnVtUGlwZWxpbmVEZXNjcmlwdG9yID0geworICAgICAgICBzdGFnZXM6IFtiYWRTdGFn
ZUVudW1EZXNjcmlwdG9yLCBmcmFnbWVudFN0YWdlRGVzY3JpcHRvcl0sCisgICAgICAgIHByaW1p
dGl2ZVRvcG9sb2d5OiAidHJpYW5nbGVMaXN0IgorICAgIH0KKyAgICBjaGVja0JhZFJlbmRlclBp
cGVsaW5lKGJhZFN0YWdlRW51bVBpcGVsaW5lRGVzY3JpcHRvciwgIldlYkdQVVNoYWRlclN0YWdl
RW51bSIpOworfQorCitydW5XZWJHUFVUZXN0cyhbc2V0VXBQaXBlbGluZSwgc2V0VXBCYWRQaXBl
bGluZXNdKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvc2hhZGVy
LW1vZHVsZXMtZXhwZWN0ZWQudHh0CmluZGV4IGZhOTRiMzMwNzVlOGQ5YzA2MGVlZWIxZjE3MzAx
MzM3YTExMGNmMDYuLjBmODRlZGI2MzFlYjg4ZTk2YzQwNTg0ZTc2ZDhhZDUwZmIwZTZjY2YgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4cGVjdGVkLnR4dApAQCAt
MSw2ICsxLDggQEAKK1BBU1MgW29iamVjdCBXZWJHUFVdIGlzIGRlZmluZWQuCiBQQVNTIEJhZCBz
aGFkZXIgY29kZSBzaG91bGQgbm90IGNyZWF0ZSBhIG1vZHVsZS4KIFBBU1MgSW5jb21wbGV0ZSBz
aGFkZXIgY29kZSBzaG91bGQgbm90IGNyZWF0ZSBhIG1vZHVsZS4KIFBBU1MgU2hhZGVyIG1vZHVs
ZSBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4KK0FsbCB0ZXN0cyBjb21wbGV0ZS4KIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvc2hh
ZGVyLW1vZHVsZXMuaHRtbAppbmRleCA4MjNiZTkyZDllNDlhOWRiNDljNTMzMDFiM2JhZWQ4NTYy
NzYwNDg4Li4yNjdjODAyNzBiMmNlYWZiNDViZjU3YmVkZjA3ZDVjZDMzZWRmMWYzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvc2hhZGVyLW1vZHVsZXMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvc2hhZGVyLW1vZHVsZXMuaHRtbApAQCAtMSw2ICsxLDcgQEAKIDwhRE9DVFlQ
RSBodG1sPgogPGh0bWw+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJqcy9zZXQtdXAtd2ViZ3B1LWNvbnRleHRzLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgaWQ9ImxpYnJhcnlfZnVsbCIgdHlwZT0ieC1zaGFkZXIveC1tZXRh
bCI+CiAgICAgI2luY2x1ZGUgPG1ldGFsX3N0ZGxpYj4KICAgICAKQEAgLTcwLDIwICs3MSw2IEBA
CiBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogCi1sZXQgY2FudmFzOwotbGV0IGNvbnRleHQ7Ci1sZXQgYWRhcHRlcjsKLWxldCBkZWZh
dWx0RGV2aWNlOwotCi1hc3luYyBmdW5jdGlvbiBzZXRVcENvbnRleHRzKCkgewotICAgIGNhbnZh
cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgIGNvbnRleHQgPSBjYW52
YXMuZ2V0Q29udGV4dCgid2ViZ3B1Iik7Ci0gICAgYWRhcHRlciA9IGF3YWl0IHdpbmRvdy53ZWJn
cHUucmVxdWVzdEFkYXB0ZXIoe30pOwotICAgIGRlZmF1bHREZXZpY2UgPSBhZGFwdGVyLmNyZWF0
ZURldmljZSgpOwotCi0gICAgc2V0VXBTaGFkZXJzKCk7Ci19Ci0KIGZ1bmN0aW9uIHNldFVwU2hh
ZGVycygpIHsKICAgICBsZXQgc2hhZGVyRGVzY3JpcHRvcjAgPSB7CiAgICAgICAgIGNvZGUgOiAi
SGVsbG8gV29ybGQiCkBAIC0xMTUsOSArMTAyLDkgQEAgZnVuY3Rpb24gc2V0VXBTaGFkZXJzKCkg
ewogICAgICAgICB0ZXN0RmFpbGVkKCJTaGFkZXIgbW9kdWxlIG5vdCBjcmVhdGVkIHN1Y2Nlc3Nm
dWxseSEiKTsKIH0KIAotc2V0VXBDb250ZXh0cygpOworcnVuV2ViR1BVVGVzdHMoW3NldFVwU2hh
ZGVyc10pOwogCi12YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK3N1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXgg
ZWIxZTUyNDEyMDFjODQxYzcxOGMwM2VjZWY2NGU2OWEwMThiOGM4MC4uNDBkNTJlZDZiYzA0OGY2
ZWZiNDI3OTUxNzYxNWEyZWM3MGJiY2U4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dlYmdwdS1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS93ZWJn
cHUtYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKIFBBU1MgW29iamVjdCBXZWJH
UFVdIGlzIGRlZmluZWQuCitBbGwgdGVzdHMgY29tcGxldGUuCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93ZWJncHUtYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2lj
cy5odG1sCmluZGV4IGY3Yzc2NzJmZDVjMTE5YWEyODVhNTM0NjEwY2UwZTQxM2M0YjdjNWIuLjMw
ODRmNmQwZDliNjViNDQ2OTY1ODdjMmRiY2M1MGI5MDk5YzI5YjUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93ZWJncHUtYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dlYmdwdS1iYXNpY3MuaHRtbApAQCAtMSw2ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0
bWw+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJqcy9zZXQtdXAtd2ViZ3B1LWNvbnRleHRzLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgaWQ9ImxpYnJhcnkiIHR5cGU9Ingtc2hhZGVyL3gtbWV0YWwiPgogICAgICNpbmNsdWRl
IDxtZXRhbF9zdGRsaWI+CiAgICAgCkBAIC00MSw0NiArNDIsOTYgQEAKIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKICAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKLWxldCBjYW52
YXM7Ci1sZXQgY29udGV4dDsKLWxldCBhZGFwdGVyOwotbGV0IGRlZmF1bHREZXZpY2U7CitsZXQg
cmVuZGVyUGlwZWxpbmU7CiAKLWFzeW5jIGZ1bmN0aW9uIHNldFVwQ29udGV4dHMoKSB7Ci0gICAg
Y2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgY29udGV4dCA9
IGNhbnZhcy5nZXRDb250ZXh0KCJ3ZWJncHUiKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAg
IHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVIGNvbnRleHQhIik7CitmdW5jdGlv
biBzZXRVcFBpcGVsaW5lKCkgeworICAgIGxldCBzaGFkZXJEZXNjcmlwdG9yID0geworICAgICAg
ICBjb2RlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibGlicmFyeSIpLnRleHQKKyAgICB9Owor
ICAgIGxldCBzaGFkZXJNb2R1bGUgPSBkZWZhdWx0RGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZShz
aGFkZXJEZXNjcmlwdG9yKTsKKyAgICBpZiAoIXNoYWRlck1vZHVsZSkgeworICAgICAgICB0ZXN0
RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVVNoYWRlck1vZHVsZSEiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KIAotICAgIHNob3VsZEJlRGVmaW5lZCh3aW5kb3cud2ViZ3B1KTsKLSAg
ICAKLSAgICBhZGFwdGVyID0gYXdhaXQgd2luZG93LndlYmdwdS5yZXF1ZXN0QWRhcHRlcih7fSk7
Ci0gICAgaWYgKCFhZGFwdGVyKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVh
dGUgZGVmYXVsdCBXZWJHUFVBZGFwdGVyISIpCisgICAgbGV0IHZlcnRleFN0YWdlRGVzY3JpcHRv
ciA9IHsgCisgICAgICAgIG1vZHVsZTogc2hhZGVyTW9kdWxlLCAKKyAgICAgICAgc3RhZ2U6IFdl
YkdQVVNoYWRlclN0YWdlLlZFUlRFWCwgCisgICAgICAgIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhfbWFp
biIgCisgICAgfTsKKworICAgIGxldCBmcmFnbWVudFN0YWdlRGVzY3JpcHRvciA9IHsKKyAgICAg
ICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUsCisgICAgICAgIHN0YWdlOiBXZWJHUFVTaGFkZXJTdGFn
ZS5GUkFHTUVOVCwKKyAgICAgICAgZW50cnlQb2ludDogImZyYWdtZW50X21haW4iCisgICAgfTsK
KworICAgIGlmICghdmVydGV4U3RhZ2VEZXNjcmlwdG9yIHx8ICFmcmFnbWVudFN0YWdlRGVzY3Jp
cHRvcikgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVVBpcGVs
aW5lU3RhZ2VEZXNjcmlwdG9yISIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZGVm
YXVsdERldmljZSA9IGFkYXB0ZXIuY3JlYXRlRGV2aWNlKCk7Ci0gICAgaWYgKCFkZWZhdWx0RGV2
aWNlKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVRGV2aWNl
ISIpOworICAgIGxldCBwaXBlbGluZURlc2NyaXB0b3IgPSB7CisgICAgICAgIHN0YWdlczogW3Zl
cnRleFN0YWdlRGVzY3JpcHRvciwgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3JdLAorICAgICAgICBw
cmltaXRpdmVUb3BvbG9neTogInRyaWFuZ2xlTGlzdCIKKyAgICB9OworCisgICAgaWYgKCFwaXBl
bGluZURlc2NyaXB0b3IpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IhIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBzZXRVcFNoYWRlcnMoKTsKKyAgICByZW5kZXJQaXBlbGluZSA9IGRlZmF1bHREZXZp
Y2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUocGlwZWxpbmVEZXNjcmlwdG9yKTsKKyAgICBpZiAoIXJl
bmRlclBpcGVsaW5lKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2Vi
R1BVUmVuZGVyUGlwZWxpbmUhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiB9CiAKLWZ1bmN0
aW9uIHNldFVwU2hhZGVycygpIHsKLSAgICBsZXQgc2hhZGVyRGVzY3JpcHRvciA9IHsKLSAgICAg
ICAgY29kZTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpYnJhcnkiKS50ZXh0Ci0gICAgfTsK
LSAgICBsZXQgc2hhZGVyTW9kdWxlID0gZGVmYXVsdERldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUo
c2hhZGVyRGVzY3JpcHRvcik7Ci0gICAgaWYgKCFzaGFkZXJNb2R1bGUpCi0gICAgICAgIHRlc3RG
YWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVU2hhZGVyTW9kdWxlISIpOworZnVuY3Rpb24g
cmVuZGVyKCkgeworICAgIC8vIGxldCBjb21tYW5kQnVmZmVyID0gZGVmYXVsdERldmljZS5jcmVh
dGVDb21tYW5kQnVmZmVyKCk7CisgICAgLy8gaWYgKCFjb21tYW5kQnVmZmVyKSB7CisgICAgLy8g
ICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVQ29tbWFuZEJ1ZmZlciEiKTsK
KyAgICAvLyAgICAgcmV0dXJuOworICAgIC8vIH0KKworICAgIC8vIGxldCB0ZXh0dXJlID0gY29u
dGV4dC5nZXROZXh0VGV4dHVyZSgpOworICAgIC8vIGlmICghdGV4dHVyZSkgeworICAgIC8vICAg
ICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgZ2V0IG5leHQgV2ViR1BVVGV4dHVyZSEiKTsKKyAgICAv
LyAgICAgcmV0dXJuOworICAgIC8vIH0KKworICAgIC8vIGxldCB0ZXh0dXJlVmlldyA9IGNvbnRl
eHQuY3JlYXRlVGV4dHVyZVZpZXcoKTsKKyAgICAvLyBpZiAoIXRleHR1cmVWaWV3KSB7CisgICAg
Ly8gICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVVGV4dHVyZVZpZXchIik7
CisgICAgLy8gICAgIHJldHVybjsKKyAgICAvLyB9CisKKyAgICAvLyAvLyBGSVhNRTogRmxlc2gg
b3V0IHRoZSByZXN0IG9mIFdlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLiBEZWZhdWx0IGxvYWRP
cCwgc3RvcmVPcCwgY2xlYXJDb2xvciBmb3Igbm93LgorICAgIC8vIGxldCByZW5kZXJQYXNzRGVz
Y3JpcHRvciA9IHsKKyAgICAvLyAgICAgYXR0YWNobWVudCA6IHRleHR1cmVWaWV3CisgICAgLy8g
fTsKKworICAgIC8vIGxldCByZW5kZXJQYXNzRW5jb2RlciA9IGNvbW1hbmRCdWZmZXIuYmVnaW5S
ZW5kZXJQYXNzKHJlbmRlclBhc3NEZXNjcmlwdG9yKTsKKyAgICAvLyByZW5kZXJQYXNzRW5jb2Rl
ci5zZXRQaXBlbGluZShyZW5kZXJQaXBlbGluZSk7CisKKyAgICAvLyAvLyBOb3RlIHRoYXQgd2Ug
ZGlkbid0IGF0dGFjaCBhbnkgYnVmZmVycyAtIHRoZSBzaGFkZXIgaXMgZ2VuZXJhdGluZyB0aGUg
dmVydGljZXMgZm9yIHVzLgorICAgIC8vIHJlbmRlclBhc3NFbmNvZGVyLmRyYXcoMywgMSwgMCwg
MCk7CisgICAgLy8gcmVuZGVyUGFzc0VuY29kZXIuZW5kUGFzcygpOworCisgICAgLy8gbGV0IHF1
ZXVlID0gZGV2aWNlLmdldFF1ZXVlKCk7CisgICAgLy8gaWYgKCFxdWV1ZSkgeworICAgIC8vICAg
ICB0ZXN0RmFpbGVkKCJVbmFibGUgdG8gY3JlYXRlIGRlZmF1bHQgV2ViR1BVUXVldWUhIik7Cisg
ICAgLy8gICAgIHJldHVybjsKKyAgICAvLyB9CisgICAgLy8gcXVldWUuc3VibWl0KFtjb21tYW5k
QnVmZmVyXSk7CisKKyAgICAvLyBjb250ZXh0LnByZXNlbnQoKTsKIH0KIAotc2V0VXBDb250ZXh0
cygpOworcnVuV2ViR1BVVGVzdHMoW3NldFVwUGlwZWxpbmUsIHJlbmRlcl0pOwogCi12YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354048</attachid>
            <date>2018-11-06 19:01:01 -0800</date>
            <delta_ts>2018-11-06 20:37:12 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-191291-20181106190101.patch</filename>
            <type>text/plain</type>
            <size>96136</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3ODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
N2U0ODU5NGZhOTc0MTJiZDI3MDZhYTk4ZmIyZDY3NGI4YzdmM2Y1Li4yZGZkZGE2ZTBiNThjM2Zh
MDBiMGQ4MDJmZTcyN2UyM2EwNzYyNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxOC0xMS0wNiAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29t
PgorCisgICAgICAgIFtXZWJHUFVdIEV4cGVyaW1lbnRhbCBwcm90b3R5cGUgZm9yIFdlYkdQVVJl
bmRlclBpcGVsaW5lIGFuZCBXZWJHUFVTd2FwQ2hhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTI5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE15
bGVzIE1heGZpZWxkLgorCisgICAgICAgIFByb3Blcmx5IGRpc2FibGUgV0VCR1BVIG9uIGFsbCBu
b24tTWV0YWwgcGxhdGZvcm1zIGZvciBub3cuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxOC0xMS0wNSAgRG9uIE9sbXN0ZWFkICA8ZG9u
Lm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIEZpeCB0eXBvcyBpbiBjbG9zaW5nIEVOQUJM
RSBndWFyZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggM2Y5ZGI3NTI3Zjk3Y2Q3YzVlMzNhNmRiOGI4MmFiY2Y5OTgzM2UzMi4u
Nzk0N2IxYThhZjU2NDA1YjFmMzgxNjM4YWYyMDY2MDZjMmJjNmRlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxOC0xMS0wNiAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFtXZWJHUFVdIEV4cGVyaW1lbnRhbCBwcm90b3R5cGUgZm9yIFdlYkdQVVJlbmRlclBp
cGVsaW5lIGFuZCBXZWJHUFVTd2FwQ2hhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MTI5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE15bGVzIE1h
eGZpZWxkLgorCisgICAgICAgIFByb3Blcmx5IGRpc2FibGUgV0VCR1BVIG9uIGFsbCBub24tTWV0
YWwgcGxhdGZvcm1zIGZvciBub3cuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAx
OC0xMS0wMSAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWJHUFVdIEV4cGVyaW1lbnRhbCBwcm90b3R5cGUgZm9yIE1TTCBzaGFkZXJzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggZGM0NWVjODFlOTM1MDQxZGZkMmM5MTU2OThlMWM0NjIwNzNlOWZmMy4uMDU1NWJlNmE5MzRl
OGU5MGRhYTAxNDE0YzIwY2JmZTVlYmNlNzBkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBA
CisyMDE4LTExLTA2ICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYkdQVV0gRXhwZXJpbWVudGFsIHByb3RvdHlwZSBmb3IgV2ViR1BVUmVuZGVyUGlwZWxp
bmUgYW5kIFdlYkdQVVN3YXBDaGFpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkxMjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTXlsZXMgTWF4Zmll
bGQuCisKKyAgICAgICAgVGVzdDogd2ViZ3B1L3JlbmRlci1waXBlbGluZXMuaHRtbAorICAgICAg
ICBBbHNvIHVwZGF0ZSB0ZXN0IHdlYmdwdS93ZWJncHUtYmFzaWNzLmh0bWwgdG8gY3JlYXRlIGEg
V2ViR1BVUmVuZGVyUGlwZWxpbmUuCisKKyAgICAgICAgQmVnaW4gaW1wbGVtZW50YXRpb24gb2Yg
V2ViR1BVUmVuZGVyUGlwZWxpbmUgYW5kIFdlYkdQVVN3YXBDaGFpbi4gQSBXZWJHUFVSZW5kZXJQ
aXBlbGluZSBpcyBiYWNrZWQgYnkgYQorICAgICAgICBHUFVSZW5kZXJQaXBlbGluZSwgY3JlYXRl
ZCBsYXppbHkgdXNpbmcgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHBhc3NlZC1pbiBXZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuCisgICAgICAgIE9uIE1ldGFsLXN1cHBvcnRlZCBzeXN0ZW1z
LCBHUFVSZW5kZXJQaXBlbGluZSBpcyBhbiBpbnRlcmZhY2UgdG8gYSBNVExSZW5kZXJQaXBlbGlu
ZVN0YXRlLgorICAgICAgICBUaGUgTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSBpcyBjcmVhdGVkIHdp
dGggdGhlIFdlYkdQVURldmljZSBjdXJyZW50bHkgY29uZmlndXJlZCBvbiB0aGUgV2ViR1BVUmVu
ZGVyaW5nQ29udGV4dC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdQVURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUgY29uc3QpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L0dQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9HUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOgorICAgICAgICAoV2ViQ29yZTo6R1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOjpwcmltaXRpdmVU
b3BvbG9neSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdQVURldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR1BVRGV2aWNlOjphZGFwdGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdQVURldmljZTo6ZGV2aWNlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGlu
ZVN0YWdlRGVzY3JpcHRvci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lU3RhZ2VEZXNjcmlwdG9yLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5kZXJQaXBlbGlu
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVJlbmRlclBpcGVsaW5lOjpXZWJH
UFVSZW5kZXJQaXBlbGluZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
UGlwZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGlu
ZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpXZWJHUFVS
ZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJp
bmdDb250ZXh0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVTaGFkZXJNb2R1bGU6Om1vZHVsZSBjb25zdCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5pZGw6CisgICAgICAgICogTW9kdWxl
cy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVN3
YXBDaGFpbjo6Y29uZmlndXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdQVVN3YXBDaGFpbjo6
cmVzaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHUFVTd2FwQ2hhaW46Om1hcmtMYXllckNv
bXBvc2l0ZWQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR1BVU3dhcENoYWluOjpXZWJHUFVTd2FwQ2hhaW4pOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGw6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdQVVJlbmRlclBpcGVsaW5lOjpwbGF0Zm9ybVJlbmRlclBpcGVsaW5lIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldEZ1bmN0aW9uc0ZvclBpcGVsaW5lRGVzY3JpcHRvcik6
CisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdQVVJlbmRlclBpcGVsaW5lOjpHUFVSZW5kZXJQaXBlbGluZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENoYWluLmg6CisgICAgICAgIChXZWJDb3Jl
OjpHUFVTd2FwQ2hhaW46OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tOgorICAgICAgICAoV2ViQ29yZTo6R1BV
U3dhcENoYWluOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpHUFVT
d2FwQ2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpzZXREZXZpY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R1BVU3dhcENoYWluOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdQVVN3YXBDaGFpbjo6cHJlc2VudCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
OgorCiAyMDE4LTExLTAxICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dlYkdQVV0gRXhwZXJpbWVudGFsIHByb3RvdHlwZSBmb3IgTVNMIHNoYWRlcnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCmluZGV4IDM1MTEwY2E4ZDQzMDJmMjMyMGYxNmU5YWU3ZDUyMWM5YzY2NWYz
Y2IuLjNiMGZlZjZlNTY5NTVlNWUzOTVlZjhlNjY4YjFkNDJlMGI0ODc0NmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTExLTA2ICBKdXN0aW4gRmFuICA8anVzdGlu
X2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRXhwZXJpbWVudGFsIHByb3RvdHlw
ZSBmb3IgV2ViR1BVUmVuZGVyUGlwZWxpbmUgYW5kIFdlYkdQVVN3YXBDaGFpbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMjkxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTXlsZXMgTWF4ZmllbGQuCisKKyAgICAgICAgUHJvcGVybHkgZGlzYWJsZSBX
RUJHUFUgb24gYWxsIG5vbi1NZXRhbCBwbGF0Zm9ybXMgZm9yIG5vdy4KKworICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDE4LTExLTAyICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBOb3JtYWxpemUg
Y2hhcmFjdGVyIHN0cmluZyBiYXNlZCBvbiBrZXkgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2OWExNzg2NDEy
ZjdjN2Q2YmE5YTA1Y2NhYmIxZmZjOTUyNDUzODZmLi5jNWNhNDA5NmM5NWM1MzQyNjJmMzE3ODdm
NzM3NDgwM2E2MmJlMGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTExLTA2ICBK
dXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRXhw
ZXJpbWVudGFsIHByb3RvdHlwZSBmb3IgV2ViR1BVUmVuZGVyUGlwZWxpbmUgYW5kIFdlYkdQVVN3
YXBDaGFpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkxMjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTXlsZXMgTWF4ZmllbGQuCisKKyAgICAgICAg
UHJvcGVybHkgZGlzYWJsZSBXRUJHUFUgb24gYWxsIG5vbi1NZXRhbCBwbGF0Zm9ybXMgZm9yIG5v
dy4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgor
CiAyMDE4LTExLTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
VXNlIHNhbWUgbGltaXQgZm9yIHBhZ2UgY2FjaGUgYW5kIHN1c3BlbmRlZCBwYWdlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGIzODdkN2U3NDZiMmM1ODQ0MjI1ZWZiNzVjNWRlMzFh
YjNiYTk0ZWIuLjM1ZTI2MzAyYTc3N2EyN2M5MDg3MTQ5ODUyZjJhYTk2YzQ3MmUwMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOC0xMS0wNiAgSnVz
dGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEV4cGVy
aW1lbnRhbCBwcm90b3R5cGUgZm9yIFdlYkdQVVJlbmRlclBpcGVsaW5lIGFuZCBXZWJHUFVTd2Fw
Q2hhaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MTI5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE15bGVzIE1heGZpZWxkLgorCisgICAgICAgIFBy
b3Blcmx5IGRpc2FibGUgV0VCR1BVIG9uIGFsbCBub24tTWV0YWwgcGxhdGZvcm1zIGZvciBub3cu
CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwog
MjAxOC0xMS0wMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
W2lPU10gV2ViS2l0IHNob3VsZCBkaXNwYXRjaCBET00gZXZlbnRzIHdoZW4gYSBtb2RpZmllciBr
ZXkgaXMgcHJlc3NlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDljOTNkOGY5NWQ5YTFl
MTNmODJlMzUzYzYxMzllY2I0YzY0YTFmMTMuLjg2NzI4MDBmMjZmMmY2NDYzN2MwY2JjMzcxMDI2
MTUzYjJjZDY4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTM2Niw3ICszNjYsMTEg
QEAgRU5BQkxFX1dFQkdMID0gRU5BQkxFX1dFQkdMOwogCiBFTkFCTEVfV0VCR0wyID0gRU5BQkxF
X1dFQkdMMjsKIAotRU5BQkxFX1dFQkdQVSA9IEVOQUJMRV9XRUJHUFU7CitFTkFCTEVfV0VCR1BV
ID0gJChFTkFCTEVfV0VCR1BVXyQoV0tfUExBVEZPUk1fTkFNRSkpOworRU5BQkxFX1dFQkdQVV9p
cGhvbmVvcyA9IEVOQUJMRV9XRUJHUFU7CitFTkFCTEVfV0VCR1BVX3dhdGNob3MgPSBFTkFCTEVf
V0VCR1BVOworRU5BQkxFX1dFQkdQVV9hcHBsZXR2b3MgPSBFTkFCTEVfV0VCR1BVOworRU5BQkxF
X1dFQkdQVV9tYWNvc3ggPSBFTkFCTEVfV0VCR1BVOwogCiBFTkFCTEVfV0VCTUVUQUwgPSAkKEVO
QUJMRV9XRUJNRVRBTF8kKFdLX1BMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9XRUJNRVRBTF9pcGhv
bmVvcyA9IEVOQUJMRV9XRUJNRVRBTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDZlMjgzN2ExZTlkMGEzNTE2
M2M3ZmNiM2EwZGVjNmE4Yzc4NTFkYWEuLjEwZjQ0M2YwYzkxOGZiOTNkZWI3ZGY5OTc2MmQ3ZWZk
YjA0ZTBiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTM4MSw3ICsxMzgxLDMgQEAKICNpZiBQTEFURk9S
TShDT0NPQSkgJiYgVVNFKENBKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAj
ZGVmaW5lIFVTRV9JT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUgMQogI2VuZGlmCi0KLSNp
ZiBQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQotI2Rl
ZmluZSBFTkFCTEVfV0VCR1BVIDEKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5YWVi
MmRkY2NkOWIwYTg2MjI2NzUzMzU3NjY2NjdjNWI3YWZkNjZjLi4yMTE0MTA5NTg3N2M5NThlOWU5
NWEzOTEwNTAyNDY5MDUwNjEwZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDUzLDkgKzQ1
MywxNCBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVUFkYXB0ZXIuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlckRlc2Ny
aXB0b3IuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAorICAgIE1vZHVs
ZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaWRsCisgICAgTW9kdWxlcy93
ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsCisgICAgTW9kdWxlcy93ZWJn
cHUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRsCisgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRl
cmluZ0NvbnRleHQuaWRsCiAgICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlLmlk
bAogICAgIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaWRsCisg
ICAgTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRsCiAgICAgTW9kdWxlcy93ZWJn
cHUvV2ViR1BVU3dhcENoYWluLmlkbAogCiAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZl
bnQuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCmluZGV4IDljOTNkOGY5NWQ5YTFlMTNmODJlMzUzYzYxMzllY2I0YzY0
YTFmMTMuLjg2NzI4MDBmMjZmMmY2NDYzN2MwY2JjMzcxMDI2MTUzYjJjZDY4MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCkBAIC0zNjYsNyArMzY2LDExIEBAIEVOQUJMRV9XRUJHTCA9IEVOQUJMRV9XRUJHTDsKIAog
RU5BQkxFX1dFQkdMMiA9IEVOQUJMRV9XRUJHTDI7CiAKLUVOQUJMRV9XRUJHUFUgPSBFTkFCTEVf
V0VCR1BVOworRU5BQkxFX1dFQkdQVSA9ICQoRU5BQkxFX1dFQkdQVV8kKFdLX1BMQVRGT1JNX05B
TUUpKTsKK0VOQUJMRV9XRUJHUFVfaXBob25lb3MgPSBFTkFCTEVfV0VCR1BVOworRU5BQkxFX1dF
QkdQVV93YXRjaG9zID0gRU5BQkxFX1dFQkdQVTsKK0VOQUJMRV9XRUJHUFVfYXBwbGV0dm9zID0g
RU5BQkxFX1dFQkdQVTsKK0VOQUJMRV9XRUJHUFVfbWFjb3N4ID0gRU5BQkxFX1dFQkdQVTsKIAog
RU5BQkxFX1dFQk1FVEFMID0gJChFTkFCTEVfV0VCTUVUQUxfJChXS19QTEFURk9STV9OQU1FKSk7
CiBFTkFCTEVfV0VCTUVUQUxfaXBob25lb3MgPSBFTkFCTEVfV0VCTUVUQUw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCBkY2M3NzJjNjY2YjdmOWEwMGQ4ZTcwZGRhYjhjODhkYWM2
YzQ0MDMxLi5mOTU5MDkwMzA4YzI1NTEyMWM0ZmZlOTUzNDc0NjAxMDI0NjYyNmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTM3Myw5ICszNzMsMTQgQEAgSlNfQklORElOR19J
RExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlci5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVQWRhcHRlckRlc2NyaXB0b3Iu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwgXAor
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFz
ZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlcmluZ0NvbnRleHQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVJlbmRlclBpcGVsaW5lLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJncHUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5pZGwgXAorICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L0dQVURldmljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9H
UFVEZXZpY2UuY3BwCmluZGV4IGU4NTExNDQwNThkYjM3MmYwYzRkMTM2NWMwMmY1ODZiYTk3MTVl
NjAuLjA0Yzk2N2YyYmRlNDhmYWFmNTU4Y2Y3OTQ3NDVkN2U1ODk0ODlmZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmNwcApAQCAtMjgsNiArMjgsOCBAQAog
CiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorI2luY2x1ZGUgIkdQVVJlbmRlclBpcGVsaW5lLmgiCisj
aW5jbHVkZSAiR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiR1BVU2hh
ZGVyTW9kdWxlLmgiCiAjaW5jbHVkZSAiR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgogCkBA
IC0zOCw2ICs0MCwxMSBAQCBSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBHUFVEZXZpY2U6OmNyZWF0
ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJgogICAgIHJldHVybiBHUFVT
aGFkZXJNb2R1bGU6OmNyZWF0ZSgqdGhpcywgV1RGTW92ZShkZXNjcmlwdG9yKSk7CiB9CiAKK1Jl
ZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZShH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAoreworICAgIHJl
dHVybiBHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0b3Ip
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdQ
VSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVURldmljZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVRGV2aWNlLmgKaW5kZXggYzE5ZTFl
Y2ZmNWI3ZjhkMDNkNzVmM2M4NzE5MWNkODc5MTg3YjFhYi4uODhiMGNkMmJlZGQ1YThiZDdlZTAx
Yzc4ODlkNjg3Zjc3MzUwZDY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvR1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BV
RGV2aWNlLmgKQEAgLTQ2LDE0ICs0NiwxNyBAQCB1c2luZyBQbGF0Zm9ybURldmljZVNtYXJ0UHRy
ID0gUmVmUHRyPHZvaWQ+OwogI2VuZGlmCiAKIGNsYXNzIEdQVVNoYWRlck1vZHVsZTsKK2NsYXNz
IEdQVVJlbmRlclBpcGVsaW5lOwogCiBzdHJ1Y3QgR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsK
K3N0cnVjdCBHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7CiAKIGNsYXNzIEdQVURldmljZSA6
IHB1YmxpYyBSZWZDb3VudGVkPEdQVURldmljZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQ
dHI8R1BVRGV2aWNlPiBjcmVhdGUoKTsKIAogICAgIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IGNy
ZWF0ZVNoYWRlck1vZHVsZShHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJiYpIGNvbnN0OworICAg
IFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gY3JlYXRlUmVuZGVyUGlwZWxpbmUoR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yJiYpIGNvbnN0OwogCiAgICAgUGxhdGZvcm1EZXZpY2UgKnBsYXRm
b3JtRGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURldmljZS5nZXQoKTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZURlc2Ny
aXB0b3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9HUFVQaXBlbGluZURl
c2NyaXB0b3JCYXNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmUyNzU1YjllMjY2YTJlOGIzOGZhNWQ0YjA4ZmQ3
ZTE0ZTI4MTI2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L0dQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaApAQCAtMCwwICsxLDQyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiR1BV
UGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7
CisgICAgVmVjdG9yPEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yPiBzdGFnZXM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvR1BVUGlwZWxpbmVTdGFnZURlc2Ny
aXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVBpcGVsaW5lU3RhZ2VE
ZXNjcmlwdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBjZGQ0OGQwYmIxNGM5M2RmZDI5Y2EyMjA5Y2QwZTc0
Y2FlOWE3NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L0dQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIkdQVVNo
YWRlck1vZHVsZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yIHsKKyAg
ICBjb25zdCBHUFVTaGFkZXJNb2R1bGUmIG1vZHVsZTsKKyAgICB1bnNpZ25lZCBsb25nIHN0YWdl
OworICAgIFN0cmluZyBlbnRyeVBvaW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDAzNWVhNjIyMTU4ZDM0NjhlMzdmZDFkNTZkODMyMzVjZDNhNTRjNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L0dQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
LmgiCisjaW5jbHVkZSAiR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKKworI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yIDogR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSB7CisgICAgZW51
bSB7CisgICAgICAgIFBvaW50TGlzdCwKKyAgICAgICAgTGluZUxpc3QsCisgICAgICAgIExpbmVT
dHJpcCwKKyAgICAgICAgVHJpYW5nbGVMaXN0LAorICAgICAgICBUcmlhbmdsZVN0cmlwCisgICAg
fTsKKworICAgIEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcihWZWN0b3I8R1BVUGlwZWxpbmVT
dGFnZURlc2NyaXB0b3I+JiYgc3RhZ2VzLCBpbnQgdG9wb2xvZ3kpCisgICAgICAgIDogR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZSB7IFdURk1vdmUoc3RhZ2VzKSB9CisgICAgICAgICwgcHJpbWl0
aXZlVG9wb2xvZ3kodG9wb2xvZ3kpCisgICAgeworICAgIH0KKworICAgIGludCBwcmltaXRpdmVU
b3BvbG9neTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
LmNwcAppbmRleCAxMGI5YmYzZGY1ODFhOTVhZTM3NmI2MmQ4YWRkMWEyYWVjYTlhNzc0Li5jYzA0
ZGZjZmJjNWIyYjZlZTMxMzc1OGIxMGVkYTQwOTU5ZTZkZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTI4LDkgKzI4LDEzIEBACiAK
ICNpZiBFTkFCTEUoV0VCR1BVKQogCi0jaW5jbHVkZSAiV2ViR1BVQWRhcHRlci5oIgotCisjaW5j
bHVkZSAiR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9y
LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIldlYkdQVVBpcGVsaW5lU3RhZ2VE
ZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKKyNpbmNsdWRl
ICJXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJXZWJHUFVTaGFk
ZXJNb2R1bGUuaCIKICNpbmNsdWRlICJXZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCiAK
QEAgLTU3LDYgKzYxLDIwIEBAIFJlZlB0cjxXZWJHUFVTaGFkZXJNb2R1bGU+IFdlYkdQVURldmlj
ZTo6Y3JlYXRlU2hhZGVyTW9kdWxlKFdlYkdQVVNoYWRlck1vZHVsZURlCiAgICAgcmV0dXJuIFdl
YkdQVVNoYWRlck1vZHVsZTo6Y3JlYXRlKG1fZGV2aWNlLT5jcmVhdGVTaGFkZXJNb2R1bGUoR1BV
U2hhZGVyTW9kdWxlRGVzY3JpcHRvciB7IGRlc2NyaXB0b3IuY29kZSB9KSk7CiB9CiAKK1JlZlB0
cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGlu
ZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKSBjb25zdAorewor
ICAgIFZlY3RvcjxHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcj4gc3RhZ2VzOworICAgIGZvciAo
Y29uc3QgYXV0byYgc3RhZ2VEZXNjcmlwdG9yIDogZGVzY3JpcHRvci5zdGFnZXMpIHsKKyAgICAg
ICAgaWYgKCFzdGFnZURlc2NyaXB0b3IubW9kdWxlKSB7CisgICAgICAgICAgICBMT0coV2ViR1BV
LCAiV2ViR1BVRGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSgpOiBXZWJHUFVTaGFkZXJNb2R1
bGUgbm90IGZvdW5kISIpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0K
KyAgICAgICAgc3RhZ2VzLmFwcGVuZCh7IHN0YWdlRGVzY3JpcHRvci5tb2R1bGUtPm1vZHVsZSgp
LCBzdGFnZURlc2NyaXB0b3Iuc3RhZ2UsIHN0YWdlRGVzY3JpcHRvci5lbnRyeVBvaW50IH0pOwor
ICAgIH0KKworICAgIHJldHVybiBXZWJHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKG1fZGV2aWNl
LT5jcmVhdGVSZW5kZXJQaXBlbGluZShHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgeyBXVEZN
b3ZlKHN0YWdlcyksIHN0YXRpY19jYXN0PGludD4oZGVzY3JpcHRvci5wcmltaXRpdmVUb3BvbG9n
eSkgfSkpOworfQorCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaAppbmRleCA0ZDViMGJhYzE3NTk2MWE4ZGVl
N2U5MjE4NjZiZmJhNzBmYTEzNzMxLi43YzI3ZTBiOTcyMzJkMjhhNjA1YTA0ZWJlMzFiNjY4OTQ4
ZjBiZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVE
ZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
aApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShXRUJHUFUpCiAKICNpbmNsdWRlICJHUFVE
ZXZpY2UuaCIKKyNpbmNsdWRlICJXZWJHUFVBZGFwdGVyLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTM3LDE3ICszOCwyMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBX
ZWJHUFVBZGFwdGVyOworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmU7CiBjbGFzcyBXZWJHUFVT
aGFkZXJNb2R1bGU7CiAKK3N0cnVjdCBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7CiBz
dHJ1Y3QgV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsKIAogY2xhc3MgV2ViR1BVRGV2aWNl
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVRGV2aWNlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZlB0cjxXZWJHUFVEZXZpY2U+IGNyZWF0ZShSZWY8V2ViR1BVQWRhcHRlcj4mJik7CiAKLSAg
ICBXZWJHUFVBZGFwdGVyJiBhZGFwdGVyKCkgY29uc3QgeyByZXR1cm4gbV9hZGFwdGVyLmdldCgp
OyB9CisgICAgY29uc3QgV2ViR1BVQWRhcHRlciYgYWRhcHRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
YWRhcHRlci5nZXQoKTsgfQorICAgIGNvbnN0IEdQVURldmljZSYgZGV2aWNlKCkgY29uc3QgeyBy
ZXR1cm4gKm1fZGV2aWNlOyB9CiAKICAgICBSZWZQdHI8V2ViR1BVU2hhZGVyTW9kdWxlPiBjcmVh
dGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYmKSBjb25zdDsKKyAg
ICBSZWZQdHI8V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZVJlbmRlclBpcGVsaW5lKFdlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYmKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBXZWJH
UFVEZXZpY2UoUmVmPFdlYkdQVUFkYXB0ZXI+JiYsIFJlZlB0cjxHUFVEZXZpY2U+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwKaW5kZXggZDFh
OWYxYTJjOWMzM2Q1NzMwMmFkMjk3NDg2MTg1Y2I2YmUyN2NlYy4uNjAzZTM3NmNiMzhlMTA0NWVk
ODkxYzAyZDMxZjY5NTkxYzgzYzcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV2ViR1BVRGV2aWNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVEZXZpY2UuaWRsCkBAIC0zNCw2ICszNCw3IEBACiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFdlYkdQVUFkYXB0ZXIgYWRhcHRlcjsKIAogICAgIFdlYkdQVVNoYWRlck1vZHVsZSBj
cmVhdGVTaGFkZXJNb2R1bGUoV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciBkZXNjcmlwdG9y
KTsKKyAgICBXZWJHUFVSZW5kZXJQaXBlbGluZSBjcmVhdGVSZW5kZXJQaXBlbGluZShXZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAKIC8qIFRvIEJlIEltcGxlbWVu
dGVkOgogICAgIFdlYkdQVUJ1ZmZlciBjcmVhdGVCdWZmZXIoV2ViR1BVQnVmZmVyRGVzY3JpcHRv
ciBkZXNjcmlwdG9yKTsKQEAgLTQ5LDggKzUwLDYgQEAKICAgICBXZWJHUFVJbnB1dFN0YXRlIGNy
ZWF0ZUlucHV0U3RhdGUoV2ViR1BVSW5wdXRTdGF0ZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAg
ICAgV2ViR1BVQXR0YWNobWVudFN0YXRlIGNyZWF0ZUF0dGFjaG1lbnRTdGF0ZShXZWJHUFVBdHRh
Y2htZW50U3RhdGVEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogICAgIFdlYkdQVUNvbXB1dGVQaXBl
bGluZSBjcmVhdGVDb21wdXRlUGlwZWxpbmUoV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
ciBkZXNjcmlwdG9yKTsKLSAgICBXZWJHUFVSZW5kZXJQaXBlbGluZSBjcmVhdGVSZW5kZXJQaXBl
bGluZShXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgZGVzY3JpcHRvcik7Ci0KICAgICBX
ZWJHUFVDb21tYW5kQnVmZmVyIGNyZWF0ZUNvbW1hbmRCdWZmZXIoV2ViR1BVQ29tbWFuZEJ1ZmZl
ckRlc2NyaXB0b3IgZGVzY3JpcHRvcik7CiAgICAgV2ViR1BVRmVuY2UgY3JlYXRlRmVuY2UoV2Vi
R1BVRmVuY2VEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzEyMWE5YmE1NjgzNzQwMTQzY2VjMzA1OTA4MmJjODJjYTU0MTU5MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVs
aW5lRGVzY3JpcHRvckJhc2UuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVUGlwZWxpbmVT
dGFnZURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RydWN0IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgeworICAgIFZl
Y3RvcjxXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvcj4gc3RhZ2VzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJh
c2UuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMzZjdhNzY2MTdhYjE5NTlmMjA3MTg4NjliNTk3ZTdmNWMyZTQ5
MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
Ky8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL2Jsb2IvbWFzdGVyL2Rlc2lnbi9z
a2V0Y2gud2ViaWRsCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJHUFUsCisgICAgRW5hYmxlZEF0
UnVudGltZT1XZWJHUFUKK10gZGljdGlvbmFyeSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
IHsKKyAgICAvLyBXZWJHUFVQaXBlbGluZUxheW91dCBsYXlvdXQ7CisgICAgc2VxdWVuY2U8V2Vi
R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3I+IHN0YWdlczsKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2Ny
aXB0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zM2YzYWUwOTU2NTAwZDRmN2IzN2M1ZTUwN2QwODdhZGYwYWRh
MTY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2Vi
R1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BV
U2hhZGVyTW9kdWxlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBXZWJHUFVTaGFkZXJTdGFnZUVudW0gPSB1bnNpZ25l
ZCBsb25nOworCitzdHJ1Y3QgV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IgeworICAgIGNv
bnN0IFdlYkdQVVNoYWRlck1vZHVsZSogbW9kdWxlID0gbnVsbHB0cjsKKyAgICBXZWJHUFVTaGFk
ZXJTdGFnZUVudW0gc3RhZ2U7CisgICAgU3RyaW5nIGVudHJ5UG9pbnQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0
b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNmIwODgxN2Q5MmRhN2JjY2QwMjhhYzdmZTNl
Y2MxMTIyMzU5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5pZGwKQEAgLTAsMCArMSwzNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9ibG9iL21hc3Rl
ci9kZXNpZ24vc2tldGNoLndlYmlkbAorCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgV2ViR1BVU2hh
ZGVyU3RhZ2VFbnVtOworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRB
dFJ1bnRpbWU9V2ViR1BVCitdIGRpY3Rpb25hcnkgV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0
b3IgeworICAgIFdlYkdQVVNoYWRlck1vZHVsZSBtb2R1bGU7CisgICAgV2ViR1BVU2hhZGVyU3Rh
Z2VFbnVtIHN0YWdlOworICAgIERPTVN0cmluZyBlbnRyeVBvaW50OworfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hYjNjMDIwMDQyODJkN2JlYTIzMmZhZWZkZDc1Njg1N2Q1NGZkYTRmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVy
UGlwZWxpbmUuY3BwCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKKworI2lmIEVOQUJMRShX
RUJHUFUpCisKKyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1JlZlB0cjxXZWJHUFVSZW5kZXJQaXBlbGluZT4gV2ViR1BVUmVuZGVyUGlwZWxp
bmU6OmNyZWF0ZShSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCit7CisgICAg
aWYgKCFwaXBlbGluZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKSk7Cit9CisK
K1dlYkdQVVJlbmRlclBpcGVsaW5lOjpXZWJHUFVSZW5kZXJQaXBlbGluZShSZWZQdHI8R1BVUmVu
ZGVyUGlwZWxpbmU+JiYgcGlwZWxpbmUpCisgICAgOiBtX3JlbmRlclBpcGVsaW5lKHBpcGVsaW5l
KQoreworICAgIFVOVVNFRF9QQVJBTShtX3JlbmRlclBpcGVsaW5lKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjhiNTEwNjJjZGQyNjE5OGMwZmEwZTk3Zjg2OTJiZjc2YzZmYWExMWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGlu
ZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVSZW5kZXJQaXBlbGluZS5oIgorCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR1BVUmVuZGVyUGlwZWxpbmUgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJHUFVSZW5kZXJQaXBlbGluZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8
V2ViR1BVUmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+JiYp
OworCitwcml2YXRlOgorICAgIFdlYkdQVVJlbmRlclBpcGVsaW5lKFJlZlB0cjxHUFVSZW5kZXJQ
aXBlbGluZT4mJik7CisKKyAgICBSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IG1fcmVuZGVyUGlw
ZWxpbmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
UmVuZGVyUGlwZWxpbmUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0NmQwMWEyOTVlMWFhZGRhMTc2ZDk1NWFk
MjllZTQ5MGI0MTAzZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9ibG9iL21hc3Rlci9kZXNp
Z24vc2tldGNoLndlYmlkbAorCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJs
ZWRBdFJ1bnRpbWU9V2ViR1BVLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKK10gaW50
ZXJmYWNlIFdlYkdQVVJlbmRlclBpcGVsaW5lIHsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA2ZWVjNWQ4YjZmZWUyOTVlNWY0MDExMDlkYTFiYWQ4MWUyZThkNTIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV2ViR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBX
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IgOiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JC
YXNlIHsKKyAgICBlbnVtIGNsYXNzIFByaW1pdGl2ZVRvcG9sb2d5IHsKKyAgICAgICAgUG9pbnRM
aXN0LAorICAgICAgICBMaW5lTGlzdCwKKyAgICAgICAgTGluZVN0cmlwLAorICAgICAgICBUcmlh
bmdsZUxpc3QsCisgICAgICAgIFRyaWFuZ2xlU3RyaXAKKyAgICB9OworCisgICAgUHJpbWl0aXZl
VG9wb2xvZ3kgcHJpbWl0aXZlVG9wb2xvZ3k7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2ZhNTQ0NzQzZGYyNjlmMmNjMzhiODQxZjI4YTU3YTIzNTBhMTU5NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisv
LyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2dwdXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tl
dGNoLndlYmlkbAorCitlbnVtIFdlYkdQVVByaW1pdGl2ZVRvcG9sb2d5IHsKKyAgICAicG9pbnRM
aXN0IiwKKyAgICAibGluZUxpc3QiLAorICAgICJsaW5lU3RyaXAiLAorICAgICJ0cmlhbmdsZUxp
c3QiLAorICAgICJ0cmlhbmdsZVN0cmlwIgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQkdQ
VSwKKyAgICBFbmFibGVkQXRSdW50aW1lPVdlYkdQVQorXSBkaWN0aW9uYXJ5IFdlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciA6IFdlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UgeworICAg
IFdlYkdQVVByaW1pdGl2ZVRvcG9sb2d5IHByaW1pdGl2ZVRvcG9sb2d5OworICAgIC8qIFRvIEJl
IEltcGxlbWVudGVkOgorICAgIHNlcXVlbmNlPFdlYkdQVUJsZW5kU3RhdGU+IGJsZW5kU3RhdGVz
OworICAgIFdlYkdQVURlcHRoU3RlbmNpbFN0YXRlIGRlcHRoU3RlbmNpbFN0YXRlOworICAgIFdl
YkdQVUlucHV0U3RhdGUgaW5wdXRTdGF0ZTsKKyAgICBXZWJHUFVBdHRhY2htZW50c1N0YXRlIGF0
dGFjaG1lbnRzU3RhdGU7ICovCisgICAgLy8gVE9ETyBvdGhlciBwcm9wZXJ0aWVzCit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCAwYmQyNzY0M2FlYjFlNWVlZDE2MjQ2NDkwNjE5ZmQ2MTFjZGU0Yzdj
Li5lYzNlMDc2ZDViMmQwMzQxOWMxODcxZDA2NjQxZTQzZmU5ZWViMjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0
LmNwcApAQCAtMzIsMTMgKzMyLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjp1bmlx
dWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+IFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZShDYW52YXNCYXNlJiBjYW52YXMpCiB7Ci0gICAgYXV0byBjb250ZXh0ID0gc3RkOjp1bmlx
dWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+KG5ldyBXZWJHUFVSZW5kZXJpbmdDb250ZXh0
KGNhbnZhcykpOworICAgIGF1dG8gc3dhcENoYWluID0gR1BVU3dhcENoYWluOjpjcmVhdGUoKTsK
KworICAgIGlmICghc3dhcENoYWluKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1
dG8gY29udGV4dCA9IHN0ZDo6dW5pcXVlX3B0cjxXZWJHUFVSZW5kZXJpbmdDb250ZXh0PihuZXcg
V2ViR1BVUmVuZGVyaW5nQ29udGV4dChjYW52YXMsIFdURk1vdmUoc3dhcENoYWluKSkpOwogICAg
IGNvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBjb250ZXh0OwogfQogCi1X
ZWJHUFVSZW5kZXJpbmdDb250ZXh0OjpXZWJHUFVSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2Um
IGNhbnZhcykKLSAgICA6IFdlYkdQVVN3YXBDaGFpbihjYW52YXMpCitXZWJHUFVSZW5kZXJpbmdD
b250ZXh0OjpXZWJHUFVSZW5kZXJpbmdDb250ZXh0KENhbnZhc0Jhc2UmIGNhbnZhcywgUmVmUHRy
PEdQVVN3YXBDaGFpbj4mJiBzd2FwQ2hhaW4pCisgICAgOiBXZWJHUFVTd2FwQ2hhaW4oY2FudmFz
LCBXVEZNb3ZlKHN3YXBDaGFpbikpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA0OWE3ZGFmMTM4
NmEzMTg2NjlhYjkzMmNhYTNmYjIyYjVmOTFlZTY3Li42ZjFhN2Q5N2Q4MzRmM2JmMzhlMGRiMDZi
YjM5YzAxMTNhN2MyMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdlYkdQVVJlbmRlcmluZ0NvbnRleHQ+IGNyZWF0
ZShDYW52YXNCYXNlJik7CiAKIHByaXZhdGU6Ci0gICAgV2ViR1BVUmVuZGVyaW5nQ29udGV4dChD
YW52YXNCYXNlJik7CisgICAgV2ViR1BVUmVuZGVyaW5nQ29udGV4dChDYW52YXNCYXNlJiwgUmVm
UHRyPEdQVVN3YXBDaGFpbj4mJik7CiAgICAgLy8gQ2FudmFzUmVuZGVyaW5nQ29udGV4dAogICAg
IGJvb2wgaXNXZWJHUFUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgLy8gQWN0
aXZlRE9NT2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVTaGFkZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVNoYWRlck1vZHVsZS5oCmluZGV4IDk3OTgyOTA5NWU0OWZkY2JhNWYwOTA1OWJjYjIxM2ExYmQy
MDEyMjIuLjUwNjBkNTZhOGM1OTcwOWJhMTA5YWZiOGVkOTI3NzExODJhZDVlOGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlck1vZHVsZS5oCkBA
IC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKFdFQkdQVSkKIAogI2luY2x1ZGUgIkdQVVNoYWRl
ck1vZHVsZS5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CisKICNp
bmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtMzgs
NiArMzgsOCBAQCBjbGFzcyBXZWJHUFVTaGFkZXJNb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJHUFVTaGFkZXJNb2R1bGU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVNo
YWRlck1vZHVsZT4gY3JlYXRlKFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+JiYpOwogCisgICAgY29u
c3QgR1BVU2hhZGVyTW9kdWxlJiBtb2R1bGUoKSBjb25zdCB7IHJldHVybiAqbV9tb2R1bGU7IH0K
KwogcHJpdmF0ZToKICAgICBXZWJHUFVTaGFkZXJNb2R1bGUoUmVmUHRyPEdQVVNoYWRlck1vZHVs
ZT4mJik7CiAKQEAgLTQ3LDMgKzQ5LDQgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVNoYWRlclN0YWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxN2Q0MmY1OTY4
YTk4Nzg3YTlmOTY5OTg3N2UwNzVmNTA0MmJjMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5oCkBAIC0wLDAgKzEsNDUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFdlYkdQVVNoYWRlclN0YWdlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViR1BVU2hhZGVyU3RhZ2U+
IHsKK3B1YmxpYzoKKyAgICBlbnVtIHsKKyAgICAgICAgVkVSVEVYID0gMCwKKyAgICAgICAgRlJB
R01FTlQgPSAxLAorICAgICAgICBDT01QVVRFID0gMgorICAgIH07Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyU3RhZ2UuaWRsCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNhMzdhMzc0MTJkNDkzMDFiYmY1NzgxN2U4NTZjOTZkMDYzNGNlNmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTaGFkZXJTdGFnZS5pZGwK
QEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisvLyBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2Vi
L2dwdXdlYi9ibG9iL21hc3Rlci9kZXNpZ24vc2tldGNoLndlYmlkbAorCit0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgdTMyOworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAorICAgIEVuYWJsZWRB
dFJ1bnRpbWU9V2ViR1BVLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKK10gaW50ZXJm
YWNlIFdlYkdQVVNoYWRlclN0YWdlIHsKKyAgICBjb25zdCB1MzIgVkVSVEVYID0gMDsKKyAgICBj
b25zdCB1MzIgRlJBR01FTlQgPSAxOworICAgIGNvbnN0IHUzMiBDT01QVVRFID0gMjsKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcApp
bmRleCAwMzgyYWU3YmRmYzc1YjVhNTIwOGUzYjVlNzA1YWZlZWFiOWY4ZTQ5Li44YWE2YTY4MmJl
NDc5OTRlZGI4OGU2MWU4ZmIzMjRkYmYwNGMxMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5jcHAKQEAgLTI4LDEyICsyOCwxNyBAQAog
CiAjaWYgRU5BQkxFKFdFQkdQVSkKIAorI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdlYkdQVVN3YXBDaGFpbjo6fldlYkdQVVN3YXBDaGFpbigpID0g
ZGVmYXVsdDsKIAotdm9pZCBXZWJHUFVTd2FwQ2hhaW46OmNvbmZpZ3VyZShjb25zdCBEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQordm9pZCBXZWJHUFVTd2FwQ2hhaW46OmNvbmZpZ3VyZShEZXNjcmlw
dG9yJiYgZGVzY3JpcHRvcikKIHsKKyAgICBpZiAoZGVzY3JpcHRvci5kZXZpY2UpCisgICAgICAg
IG1fc3dhcENoYWluLT5zZXREZXZpY2UoZGVzY3JpcHRvci5kZXZpY2UtPmRldmljZSgpKTsKKwog
ICAgIHJlc2hhcGUoZGVzY3JpcHRvci53aWR0aCwgZGVzY3JpcHRvci5oZWlnaHQpOwogfQogCkBA
IC00NCwxMyArNDksMTIgQEAgdm9pZCBXZWJHUFVTd2FwQ2hhaW46OnByZXNlbnQoKQogCiB2b2lk
IFdlYkdQVVN3YXBDaGFpbjo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7Ci0gICAg
bV93aWR0aCA9IHdpZHRoOwotICAgIG1faGVpZ2h0ID0gaGVpZ2h0OworICAgIG1fc3dhcENoYWlu
LT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOwogfQogCiB2b2lkIFdlYkdQVVN3YXBDaGFpbjo6bWFy
a0xheWVyQ29tcG9zaXRlZCgpCiB7Ci0gICAgLy8gRklYTUU6IFVuaW1wbGVtZW50ZWQgc3R1Yi4K
KyAgICBtX3N3YXBDaGFpbi0+cHJlc2VudCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hh
aW4uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oCmlu
ZGV4IGY1NmQzNjFmODVkNGJiYjA0YjcwNjA5MzAwNGM4OTRmMmYwMzM4NDcuLjA2Nzk1MDYyMTVi
YmYyZTgxOGI1MzFlZjE2ZGM0YmUyMjgyZjA0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5oCkBAIC0yOCwyNSArMjgsMjkgQEAKICNpZiBF
TkFCTEUoV0VCR1BVKQogCiAjaW5jbHVkZSAiR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0
LmgiCisjaW5jbHVkZSAiR1BVU3dhcENoYWluLmgiCisjaW5jbHVkZSAiV2ViR1BVRGV2aWNlLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR1BVU3dhcENoYWluIDogcHVibGlj
IEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgc3RydWN0IERl
c2NyaXB0b3IgeworICAgICAgICBjb25zdCBXZWJHUFVEZXZpY2UqIGRldmljZSA9IG51bGxwdHI7
CiAgICAgICAgIC8vIEZJWE1FOiBNb3JlIHRleHR1cmUgcHJvcGVydGllcy4KICAgICAgICAgdW5z
aWduZWQgbG9uZyB3aWR0aDsKICAgICAgICAgdW5zaWduZWQgbG9uZyBoZWlnaHQ7CiAgICAgfTsK
IAogICAgIHZpcnR1YWwgfldlYkdQVVN3YXBDaGFpbigpID0gMDsKLSAgICB2b2lkIGNvbmZpZ3Vy
ZShjb25zdCBEZXNjcmlwdG9yJik7CisgICAgdm9pZCBjb25maWd1cmUoRGVzY3JpcHRvciYmKTsK
ICAgICAvLyBGSVhNRTogV2ViR1BVVGV4dHVyZSBnZXROZXh0VGV4dHVyZSgpOwogICAgIHZvaWQg
cHJlc2VudCgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViR1BVU3dhcENoYWluKENhbnZhc0Jhc2Um
IGNhbnZhcykKKyAgICBXZWJHUFVTd2FwQ2hhaW4oQ2FudmFzQmFzZSYgY2FudmFzLCBSZWZQdHI8
R1BVU3dhcENoYWluPiYmIHN3YXBDaGFpbikKICAgICAgICAgOiBHUFVCYXNlZENhbnZhc1JlbmRl
cmluZ0NvbnRleHQoY2FudmFzKQorICAgICAgICAsIG1fc3dhcENoYWluKFdURk1vdmUoc3dhcENo
YWluKSkKICAgICB7CiAgICAgfQogCkBAIC02Myw4ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzdG9wKCkgb3ZlcnJpZGUgeyB9CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNw
ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHVuc2lnbmVk
IGxvbmcgbV93aWR0aDsKLSAgICB1bnNpZ25lZCBsb25nIG1faGVpZ2h0OworICAgIFJlZlB0cjxH
UFVTd2FwQ2hhaW4+IG1fc3dhcENoYWluOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWlu
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVN3YXBDaGFpbi5pZGwK
aW5kZXggOTljYTkwZTQzY2E2MjM2OGUxZjlhYWViYTEzNDNmZjQzZTJhY2YyMC4uZWVmODVlYmM1
YmQyNzQwMGE3NjU4Mzk2ODhkNWE5Y2NiOTAxN2JkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVTd2FwQ2hhaW4uaWRsCkBAIC0zNiw3ICszNiwxMSBAQAog
CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdTMyOwogCi1kaWN0aW9uYXJ5IFdlYkdQVVN3YXBDaGFp
bkRlc2NyaXB0b3IgeworWworICAgIENvbmRpdGlvbmFsPVdFQkdQVSwKKyAgICBFbmFibGVkQXRS
dW50aW1lPVdlYkdQVQorXSBkaWN0aW9uYXJ5IFdlYkdQVVN3YXBDaGFpbkRlc2NyaXB0b3Igewor
ICAgIFdlYkdQVURldmljZSBkZXZpY2U7IC8vIEZJWE1FOiBQcm9wb3NlIHRoaXMgYWRkaXRpb24g
dG8gSURMLgogICAgIC8vIFdlYkdQVVRleHR1cmVVc2FnZUZsYWdzIHVzYWdlOwogICAgIC8vIFdl
YkdQVVRleHR1cmVGb3JtYXRFbnVtIGZvcm1hdDsKICAgICB1MzIgd2lkdGg7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNzkyYTkzMTQwOGYyNjVjOWRiNGJiNGJhMGI0YTI1MDE5MmE5ZjdmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BV
UmVuZGVyUGlwZWxpbmUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisj
aWYgVVNFKE1FVEFMKQorT0JKQ19QUk9UT0NPTChNVExSZW5kZXJQaXBlbGluZVN0YXRlKTsKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdQVURldmljZTsKKworc3RydWN0
IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKKworI2lmIFVTRShNRVRBTCkKK3VzaW5nIFBs
YXRmb3JtUmVuZGVyUGlwZWxpbmUgPSBNVExSZW5kZXJQaXBlbGluZVN0YXRlOwordXNpbmcgUGxh
dGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyID0gUmV0YWluUHRyPE1UTFJlbmRlclBpcGVsaW5l
U3RhdGU+OworI2Vsc2UKK3VzaW5nIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmUgPSB2b2lkOwordXNp
bmcgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyID0gUmVmUHRyPHZvaWQ+OworI2VuZGlm
CisKK2NsYXNzIEdQVVJlbmRlclBpcGVsaW5lIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVUmVuZGVy
UGlwZWxpbmU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVVJlbmRlclBpcGVsaW5l
PiBjcmVhdGUoY29uc3QgR1BVRGV2aWNlJiwgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYp
OworCisgICAgUGxhdGZvcm1SZW5kZXJQaXBlbGluZSAqcGxhdGZvcm1SZW5kZXJQaXBlbGluZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1SZW5kZXJQaXBlbGluZS5nZXQoKTsgfQorCitwcml2
YXRlOgorICAgIEdQVVJlbmRlclBpcGVsaW5lKFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0
ciYmKTsKKworICAgIFBsYXRmb3JtUmVuZGVyUGlwZWxpbmVTbWFydFB0ciBtX3BsYXRmb3JtUmVu
ZGVyUGlwZWxpbmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
Y29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY0ZDJm
MWE3ZGU5ODBjOTlhMTEzM2M3MmFhN2JkYmNhZWUwMjkyOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwu
bW0KQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIkdQVVJlbmRlclBpcGVsaW5lLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW1w
b3J0ICJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIK
KyNpbXBvcnQgIldlYkdQVVNoYWRlclN0YWdlLmgiCisKKyNpbXBvcnQgPE1ldGFsL01ldGFsLmg+
CisjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0YXRpYyBib29sIHNldEZ1bmN0aW9uc0ZvclBpcGVsaW5lRGVzY3JpcHRvcihjb25z
dCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIE1UTFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciAq
bXRsRGVzY3JpcHRvciwgR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikK
K3sKKyNpZiBMT0dfRElTQUJMRUQKKyAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKKyNl
bmRpZgorICAgIGZvciAoY29uc3QgYXV0byYgc3RhZ2VEZXNjcmlwdG9yIDogZGVzY3JpcHRvci5z
dGFnZXMpIHsKKyAgICAgICAgYXV0byBtdGxMaWJyYXJ5ID0gcmV0YWluUHRyKHN0YWdlRGVzY3Jp
cHRvci5tb2R1bGUucGxhdGZvcm1TaGFkZXJNb2R1bGUoKSk7CisKKyAgICAgICAgaWYgKCFtdGxM
aWJyYXJ5KSB7CisgICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE1UTExpYnJhcnkgZG9lcyBu
b3QgZXhpc3QhIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGF1dG8gZnVuY3Rpb24gPSBhZG9wdE5TKFttdGxMaWJyYXJ5IG5l
d0Z1bmN0aW9uV2l0aE5hbWU6c3RhZ2VEZXNjcmlwdG9yLmVudHJ5UG9pbnRdKTsKKworICAgICAg
ICBpZiAoIWZ1bmN0aW9uKSB7CisgICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IE1UTEZ1bmN0
aW9uICVzIG5vdCBmb3VuZCEiLCBmdW5jdGlvbk5hbWUsIHN0YWdlRGVzY3JpcHRvci5lbnRyeVBv
aW50LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgc3dpdGNoIChzdGFnZURlc2NyaXB0b3Iuc3RhZ2UpIHsKKyAgICAgICAgY2Fz
ZSBXZWJHUFVTaGFkZXJTdGFnZTo6VkVSVEVYOgorICAgICAgICAgICAgW210bERlc2NyaXB0b3Ig
c2V0VmVydGV4RnVuY3Rpb246ZnVuY3Rpb24uZ2V0KCldOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgV2ViR1BVU2hhZGVyU3RhZ2U6OkZSQUdNRU5UOgorICAgICAgICAgICAgW210
bERlc2NyaXB0b3Igc2V0RnJhZ21lbnRGdW5jdGlvbjpmdW5jdGlvbi5nZXQoKV07CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPRyhXZWJHUFUsICIl
czogSW52YWxpZCBzaGFkZXIgc3RhZ2Ugc3BlY2lmaWVkISIsIGZ1bmN0aW9uTmFtZSk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCitSZWZQdHI8R1BVUmVuZGVyUGlwZWxpbmU+IEdQ
VVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UsIEdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCit7CisgICAgY29uc3QgY2hhciogY29u
c3QgZnVuY3Rpb25OYW1lID0gIkdQVVJlbmRlclBpcGVsaW5lOjpjcmVhdGUoKSI7CisKKyAgICBp
ZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7CisgICAgICAgIExPRyhXZWJHUFUsICIlczog
TVRMRGV2aWNlIGRvZXMgbm90IGV4aXN0ISIsIGZ1bmN0aW9uTmFtZSk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIFJldGFpblB0cjxNVExSZW5kZXJQaXBlbGluZURlc2Ny
aXB0b3I+IG10bERlc2NyaXB0b3I7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
CisKKyAgICBtdGxEZXNjcmlwdG9yID0gYWRvcHROUyhbTVRMUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yIG5ld10pOworCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIGlmICgh
bXRsRGVzY3JpcHRvcikgeworICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEVycm9yIGNyZWF0aW5n
IE1UTERlc2NyaXB0b3IhIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgaWYgKCFzZXRGdW5jdGlvbnNGb3JQaXBlbGluZURlc2NyaXB0b3IoZnVu
Y3Rpb25OYW1lLCBtdGxEZXNjcmlwdG9yLmdldCgpLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBGSVhNRTogR2V0IHRoZSBwaXhlbEZvcm1h
dCBhcyBjb25maWd1cmVkIGZvciB0aGUgY29udGV4dC9DQU1ldGFsTGF5ZXIuCisgICAgbXRsRGVz
Y3JpcHRvci5nZXQoKS5jb2xvckF0dGFjaG1lbnRzWzBdLnBpeGVsRm9ybWF0ID0gTVRMUGl4ZWxG
b3JtYXRCR1JBOFVub3JtOworCisgICAgUGxhdGZvcm1SZW5kZXJQaXBlbGluZVNtYXJ0UHRyIHBp
cGVsaW5lOworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgaWYgKFtt
dGxEZXNjcmlwdG9yIHZlcnRleEZ1bmN0aW9uXSkKKyAgICAgICAgcGlwZWxpbmUgPSBhZG9wdE5T
KFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2Ny
aXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKSBlcnJvcjpuaWxdKTsKKyAgICBlbHNlCisgICAgICAg
IExPRyhXZWJHUFUsICIlczogTm8gdmVydGV4IGZ1bmN0aW9uIGFzc2lnbmVkIGZvciBNVExSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IhIiwgZnVuY3Rpb25OYW1lKTsKKworICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CisKKyAgICBpZiAoIXBpcGVsaW5lKSB7CisgICAgICAgIExPRyhXZWJH
UFUsICIlczogRXJyb3IgY3JlYXRpbmcgTVRMUmVuZGVyUGlwZWxpbmVTdGF0ZSEiLCBmdW5jdGlv
bk5hbWUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxpbmUpKSk7Cit9CisKK0dQ
VVJlbmRlclBpcGVsaW5lOjpHUFVSZW5kZXJQaXBlbGluZShQbGF0Zm9ybVJlbmRlclBpcGVsaW5l
U21hcnRQdHImJiBwaXBlbGluZSkKKyAgICA6IG1fcGxhdGZvcm1SZW5kZXJQaXBlbGluZShXVEZN
b3ZlKHBpcGVsaW5lKSkKK3sKKyAgICBVTlVTRURfUEFSQU0obV9wbGF0Zm9ybVJlbmRlclBpcGVs
aW5lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkdQVSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2NvY29hL0dQ
VVN3YXBDaGFpbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU3dh
cENoYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJlNjJlMzk4ZWExNjBmNGI0YzY3OTliMTg3ZDRiZWZkMjE4
ODM2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L2Nv
Y29hL0dQVVN3YXBDaGFpbi5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKE1FVEFMKQorT0JKQ19DTEFTUyBD
QU1ldGFsTGF5ZXI7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHUFVE
ZXZpY2U7CisKKyNpZiBVU0UoTUVUQUwpCit1c2luZyBQbGF0Zm9ybVN3YXBMYXllciA9IENBTWV0
YWxMYXllcjsKK3VzaW5nIFBsYXRmb3JtU3dhcExheWVyU21hcnRQdHIgPSBSZXRhaW5QdHI8Q0FN
ZXRhbExheWVyPjsKKyNlbHNlCit1c2luZyBQbGF0Zm9ybVN3YXBMYXllciA9IHZvaWQ7Cit1c2lu
ZyBQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRyID0gUmVmUHRyPHZvaWQ+OworI2VuZGlmCisKK2Ns
YXNzIEdQVVN3YXBDaGFpbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVN3YXBDaGFpbj4geworcHVi
bGljOgorICAgIHN0YXRpYyBSZWZQdHI8R1BVU3dhcENoYWluPiBjcmVhdGUoKTsKKworICAgIHZv
aWQgc2V0RGV2aWNlKGNvbnN0IEdQVURldmljZSYpOworICAgIHZvaWQgcmVzaGFwZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpOworICAgIHZvaWQgcHJlc2VudCgpOworCisgICAgUGxhdGZvcm1Td2Fw
TGF5ZXIgKnBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtU3dhcExheWVy
LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgR1BVU3dhcENoYWluKFBsYXRmb3JtU3dhcExheWVy
U21hcnRQdHImJik7CisKKyAgICBQbGF0Zm9ybVN3YXBMYXllclNtYXJ0UHRyIG1fcGxhdGZvcm1T
d2FwTGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvY29j
b2EvR1BVU3dhcENoYWluTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9j
b2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGZkMTYyZWJiODIzMTc3ZTQz
NWNiOTY3YTJjNjNjZjdiNTVkYjk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KQEAgLTAsMCArMSw5MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiR1BVU3dhcENoYWlu
LmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW1wb3J0ICJHUFVEZXZpY2UuaCIKKyNpbXBv
cnQgIkxvZ2dpbmcuaCIKKworI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKyNpbXBvcnQgPFF1YXJ0
ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8R1BVU3dhcENoYWluPiBHUFVTd2FwQ2hh
aW46OmNyZWF0ZSgpCit7CisgICAgUGxhdGZvcm1Td2FwTGF5ZXJTbWFydFB0ciBwbGF0Zm9ybUxh
eWVyOworCisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgcGxhdGZvcm1M
YXllciA9IGFkb3B0TlMoW1tDQU1ldGFsTGF5ZXIgYWxsb2NdIGluaXRdKTsKKworICAgIFtwbGF0
Zm9ybUxheWVyIHNldE9wYXF1ZTowXTsKKyAgICBbcGxhdGZvcm1MYXllciBzZXROYW1lOkAiV2Vi
R1BVIExheWVyIl07CisKKyAgICAvLyBGSVhNRTogRm9yIG5vdywgZGVmYXVsdCB0byB0aGVzZSBz
ZXR0aW5ncy4KKyAgICBbcGxhdGZvcm1MYXllciBzZXRQaXhlbEZvcm1hdDpNVExQaXhlbEZvcm1h
dEJHUkE4VW5vcm1dOworICAgIFtwbGF0Zm9ybUxheWVyIHNldEZyYW1lYnVmZmVyT25seTpZRVNd
OworCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIGlmICghcGxhdGZvcm1M
YXllcikgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjpjcmVhdGUoKTogVW5h
YmxlIHRvIGNyZWF0ZSBDQU1ldGFsTGF5ZXIhIik7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIHJldHVybiBhZG9wdFJlZihuZXcgR1BVU3dhcENoYWluKFdURk1vdmUocGxh
dGZvcm1MYXllcikpKTsKK30KKworR1BVU3dhcENoYWluOjpHUFVTd2FwQ2hhaW4oUGxhdGZvcm1T
d2FwTGF5ZXJTbWFydFB0ciYmIHBsYXRmb3JtTGF5ZXIpCisgICAgOiBtX3BsYXRmb3JtU3dhcExh
eWVyKFdURk1vdmUocGxhdGZvcm1MYXllcikpCit7Cit9CisKK3ZvaWQgR1BVU3dhcENoYWluOjpz
ZXREZXZpY2UoY29uc3QgR1BVRGV2aWNlJiBkZXZpY2UpCit7CisgICAgaWYgKCFkZXZpY2UucGxh
dGZvcm1EZXZpY2UoKSkgeworICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjpzZXRE
ZXZpY2UoKTogTVRMRGV2aWNlIGRvZXMgbm90IGV4aXN0ISIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgW21fcGxhdGZvcm1Td2FwTGF5ZXIgc2V0RGV2aWNlOmRldmljZS5wbGF0Zm9y
bURldmljZSgpXTsKK30KKwordm9pZCBHUFVTd2FwQ2hhaW46OnJlc2hhcGUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KQoreworICAgIFttX3BsYXRmb3JtU3dhcExheWVyIHNldEJvdW5kczpDR1JlY3RN
YWtlKDAsIDAsIHdpZHRoLCBoZWlnaHQpXTsKKyAgICBbbV9wbGF0Zm9ybVN3YXBMYXllciBzZXRE
cmF3YWJsZVNpemU6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07Cit9CisKK3ZvaWQgR1BVU3dh
cENoYWluOjpwcmVzZW50KCkKK3sKKyAgICAvLyBGSVhNRTogVW5pbXBsZW1lbnRlZCBzdHViLgor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCmluZGV4IDljOTNkOGY5NWQ5YTFlMTNmODJlMzUzYzYxMzllY2I0YzY0
YTFmMTMuLjg2NzI4MDBmMjZmMmY2NDYzN2MwY2JjMzcxMDI2MTUzYjJjZDY4MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcKQEAgLTM2Niw3ICszNjYsMTEgQEAgRU5BQkxFX1dFQkdMID0gRU5BQkxFX1dF
QkdMOwogCiBFTkFCTEVfV0VCR0wyID0gRU5BQkxFX1dFQkdMMjsKIAotRU5BQkxFX1dFQkdQVSA9
IEVOQUJMRV9XRUJHUFU7CitFTkFCTEVfV0VCR1BVID0gJChFTkFCTEVfV0VCR1BVXyQoV0tfUExB
VEZPUk1fTkFNRSkpOworRU5BQkxFX1dFQkdQVV9pcGhvbmVvcyA9IEVOQUJMRV9XRUJHUFU7CitF
TkFCTEVfV0VCR1BVX3dhdGNob3MgPSBFTkFCTEVfV0VCR1BVOworRU5BQkxFX1dFQkdQVV9hcHBs
ZXR2b3MgPSBFTkFCTEVfV0VCR1BVOworRU5BQkxFX1dFQkdQVV9tYWNvc3ggPSBFTkFCTEVfV0VC
R1BVOwogCiBFTkFCTEVfV0VCTUVUQUwgPSAkKEVOQUJMRV9XRUJNRVRBTF8kKFdLX1BMQVRGT1JN
X05BTUUpKTsKIEVOQUJMRV9XRUJNRVRBTF9pcGhvbmVvcyA9IEVOQUJMRV9XRUJNRVRBTDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKaW5kZXggZDUwMjc3NzJiMWU2ZmFjNmJmOTQ4ZmUyZjcwMmQ4YTVkMmYxOGI5MC4u
ZWEzZThmZTE5ZGIwZTFmMWQ2YzE0NDkyOGVhMmI3NDNlMjc5MzQ5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
QEAgLTMwMiw2ICszMDIsNyBAQCBNb2R1bGVzL3dlYmdwdS9XZWJHUFUuY3BwCiBNb2R1bGVzL3dl
YmdwdS9XZWJHUFVBZGFwdGVyLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNlLmNwcAog
TW9kdWxlcy93ZWJncHUvV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5jcHAKK01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVJlbmRlclBpcGVsaW5lLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVU2hhZGVyTW9k
dWxlLmNwcAogTW9kdWxlcy93ZWJncHUvV2ViR1BVU3dhcENoYWluLmNwcAogCkBAIC0zMTk1LDkg
KzMxOTYsMTQgQEAgSlNXZWJHUFUuY3BwCiBKU1dlYkdQVUFkYXB0ZXIuY3BwCiBKU1dlYkdQVUFk
YXB0ZXJEZXNjcmlwdG9yLmNwcAogSlNXZWJHUFVEZXZpY2UuY3BwCitKU1dlYkdQVVBpcGVsaW5l
RGVzY3JpcHRvckJhc2UuY3BwCitKU1dlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yLmNwcAog
SlNXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcAorSlNXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHAK
K0pTV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcAogSlNXZWJHUFVTaGFkZXJNb2R1
bGUuY3BwCiBKU1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwCitKU1dlYkdQVVNoYWRl
clN0YWdlLmNwcAogSlNXZWJHUFVTd2FwQ2hhaW4uY3BwCiBKU1dlYk1ldGFsQnVmZmVyLmNwcAog
SlNXZWJNZXRhbENvbW1hbmRCdWZmZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAx
NDc0ZTU5MjU5NTA0OTM3YWI4Y2NlNTJmNTY0N2JkODdmOGUwYTc0Li4zMjlmYTg2MDYzODAzNjBl
NGVlOWJlZGEwNzAwNzY5MWU4NTdhZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI4
LDcgKzI4LDkgQEAgTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAK
IE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KIAogTW9k
dWxlcy93ZWJncHUvY29jb2EvR1BVRGV2aWNlTWV0YWwubW0KK01vZHVsZXMvd2ViZ3B1L2NvY29h
L0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0KIE1vZHVsZXMvd2ViZ3B1L2NvY29hL0dQVVNoYWRl
ck1vZHVsZU1ldGFsLm1tCitNb2R1bGVzL3dlYmdwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5t
bQogCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCiBhY2Nlc3Np
YmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjkwNTczOTMxNTVlMDJhOWVmNTJl
NmRiMmI5YmU3MDA1MTdjZTY1Yy4uMTNhNjg1NGU3Mjg3YjNmYTA5M2VkMDJiNTgwNjNlZTI5ODE4
MmUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTM3NzksNiArMTM3NzksOSBAQAogCQlEMDQ1QUQyMTIxNjgyNDc0MDAwQTZF
OUIgLyogV2ViTWV0YWxCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWV0YWxCdWZm
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDQ1QUQyMjIxNjgyNDc0MDAw
QTZFOUIgLyogV2ViTWV0YWxDb21tYW5kQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1ldGFs
Q29tbWFuZEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDQ1QUQyMzIx
NjgyNDc1MDAwQTZFOUIgLyogV2ViTWV0YWxDb21tYW5kUXVldWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViTWV0YWxDb21tYW5kUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlEMDQ2RkI2NTIxOEQwNzNDMDBDQjhGNjIgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDQ2RkI2NzIxOEQxODAzMDBDQjhGNjIgLyogR1BV
UGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUGlwZWxpbmVTdGFn
ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDA0NkZCNjgyMThE
MThDRDAwQ0I4RjYyIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEMDU3M0Q0MjIxN0VCODFFMDBEMUJFOTEgLyogR1BVTGVnYWN5VGV4dHVyZU1ldGFsLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVTGVnYWN5VGV4dHVy
ZU1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDVDRUQyNzBBNDBCQjJD
MDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMDVDRUQyODBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21t
YW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtYXRCbG9ja0NvbW1h
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzODAyLDYgKzEzODA1LDggQEAK
IAkJRDA5M0QyMjUyMTc5NTFENDAwMzI5MjE3IC8qIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEMDkzRDIyNzIxNzk1MUQ0MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVyaW5n
Q29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwOTNEMjI5MjE3OTU0MTYwMDMyOTIxNyAvKiBXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdQVVJlbmRlcmluZ0NvbnRl
eHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDk3MjdCNTIxODdGNDQzMDA5
NDJGM0EgLyogR1BVU3dhcENoYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdQVVN3YXBDaGFpbi5oOyBw
YXRoID0gY29jb2EvR1BVU3dhcENoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUQwOTcyN0I2MjE4N0Y0NDMwMDk0MkYzQSAvKiBHUFVTd2FwQ2hhaW5NZXRhbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEdQVVN3YXBDaGFpbk1ldGFsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMDk3MjdDMjIxOEE0NzI5MDA5NDJGM0EgLyogR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwOTcyN0NBMjE4QkQ3QTUwMDk0MkYzQSAvKiBH
UFVEZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR1BVRGV2aWNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBBMjBENTQyMDkyQTBBNjAwRTBDMjU5IC8qIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMzgxMiw2ICsxMzgxNywxOSBAQAogCQlEMEJDNTQ0ODE0NDNBQzRBMDBFMTA1REEgLyogQ2Fj
aGVkU3R5bGVTaGVldENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWNoZWRTdHlsZVNoZWV0Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQw
QkQ0RjVBMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpY3RhdGlvbkNvbW1hbmRJT1MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMEJENEY1QjE0MDg4NTBGMDA2ODM5QjYgLyog
RGljdGF0aW9uQ29tbWFuZElPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
aWN0YXRpb25Db21tYW5kSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQx
OUVCMjE4M0NGQTIwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlFQzIxODNDRkEyMDA5RUMxREUgLyogV2ViR1BVUGlw
ZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlw
dG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RUUyMTgzRDlDODAw
OUVDMURFIC8qIFdlYkdQVVNoYWRlclN0YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVNoYWRl
clN0YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUVGMjE4M0Q5Qzgw
MDlFQzFERSAvKiBXZWJHUFVTaGFkZXJTdGFnZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVU2hhZGVyU3RhZ2Uu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlGMDIxODNFQjMxMDA5RUMx
REUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJH
UFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUQwQzQxOUYxMjE4M0VCMzEwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RjIyMTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDBDNDE5RjMyMTgz
RUZFQzAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRDBDNDE5RjcyMTg0MDREQTAwOUVDMURFIC8qIFdlYkdQVVJlbmRlclBpcGVsaW5l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVJlbmRlclBpcGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUQwQzQxOUY4MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQ
aXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHUFVSZW5kZXJQaXBlbGluZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwQzQxOUY5MjE4NDA0REEwMDlFQzFERSAv
KiBXZWJHUFVSZW5kZXJQaXBlbGluZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR1BVUmVuZGVyUGlwZWxpbmUuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMEM0MTlGQTIxODQwRjZDMDA5RUMxREUg
LyogR1BVUmVuZGVyUGlwZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR1BVUmVuZGVyUGlwZWxpbmUu
aDsgcGF0aCA9IGNvY29hL0dQVVJlbmRlclBpcGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUQwQzQxOUZCMjE4NDBGNkMwMDlFQzFERSAvKiBHUFVSZW5kZXJQaXBlbGluZU1l
dGFsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDBDQUFFOTgyMTY4MjRBNjAwMUM5MUM3IC8q
IFdlYk1ldGFsQnVmZmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJNZXRhbEJ1ZmZlci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTlBMjE2ODI0QTYwMDFDOTFDNyAvKiBXZWJNZXRhbENv
bW1hbmRCdWZmZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYk1ldGFsQ29tbWFuZEJ1ZmZlci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwQ0FBRTlCMjE2ODI0QTcwMDFDOTFDNyAvKiBXZWJNZXRh
bENvbW1hbmRRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZXRhbENvbW1hbmRRdWV1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU0NDgsOCArMjU0NjYsMTMgQEAKIAkJCQlE
MDBGNTk0MjIxNkVDQzdBMDAwRDcxREIgLyogRE9NV2luZG93V2ViR1BVLmlkbCAqLywKIAkJCQlE
MDk3MjdDQTIxOEJEN0E1MDA5NDJGM0EgLyogR1BVRGV2aWNlLmNwcCAqLywKIAkJCQlEMDYxNUZD
RjIxN0ZGMTg1MDA4QTQ4QTggLyogR1BVRGV2aWNlLmggKi8sCisJCQkJRDA0NkZCNjgyMThEMThD
RDAwQ0I4RjYyIC8qIEdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuaCAqLywKKwkJCQlEMDQ2RkI2
NzIxOEQxODAzMDBDQjhGNjIgLyogR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCAqLywKKwkJ
CQlEMEM0MTlGQTIxODQwRjZDMDA5RUMxREUgLyogR1BVUmVuZGVyUGlwZWxpbmUuaCAqLywKKwkJ
CQlEMDQ2RkI2NTIxOEQwNzNDMDBDQjhGNjIgLyogR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmggKi8sCiAJCQkJRDA2MEQ4ODgyMTgyODBDMTAwMzM5MzE4IC8qIEdQVVNoYWRlck1vZHVsZS5o
ICovLAogCQkJCUQwOTcyN0MyMjE4QTQ3MjkwMDk0MkYzQSAvKiBHUFVTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yLmggKi8sCisJCQkJRDA5NzI3QjUyMTg3RjQ0MzAwOTQyRjNBIC8qIEdQVVN3YXBDaGFp
bi5oICovLAogCQkJCUQwMEY1OTQ3MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUuY3BwICovLAog
CQkJCUQwMEY1OTQ2MjE2RUZFNTQwMDBENzFEQiAvKiBXZWJHUFUuaCAqLywKIAkJCQlEMDBGNTk0
ODIxNkVGRTU0MDAwRDcxREIgLyogV2ViR1BVLmlkbCAqLywKQEAgLTI1NDYxLDE0ICsyNTQ4NCwy
NSBAQAogCQkJCUQwMEY1OTUzMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuY3BwICov
LAogCQkJCUQwMEY1OTUyMjE3MDFEOEMwMDBENzFEQiAvKiBXZWJHUFVEZXZpY2UuaCAqLywKIAkJ
CQlEMDBGNTk1NDIxNzAxRDhDMDAwRDcxREIgLyogV2ViR1BVRGV2aWNlLmlkbCAqLywKKwkJCQlE
MEM0MTlGMDIxODNFQjMxMDA5RUMxREUgLyogV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5o
ICovLAorCQkJCUQwQzQxOUYxMjE4M0VCMzEwMDlFQzFERSAvKiBXZWJHUFVQaXBlbGluZURlc2Ny
aXB0b3JCYXNlLmlkbCAqLywKKwkJCQlEMEM0MTlFQjIxODNDRkEyMDA5RUMxREUgLyogV2ViR1BV
UGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaCAqLywKKwkJCQlEMEM0MTlFQzIxODNDRkEyMDA5RUMx
REUgLyogV2ViR1BVUGlwZWxpbmVTdGFnZURlc2NyaXB0b3IuaWRsICovLAogCQkJCUQwOTNEMjI5
MjE3OTU0MTYwMDMyOTIxNyAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0LmNwcCAqLywKIAkJCQlE
MDkzRDIyNTIxNzk1MUQ0MDAzMjkyMTcgLyogV2ViR1BVUmVuZGVyaW5nQ29udGV4dC5oICovLAog
CQkJCUQwOTNEMjI3MjE3OTUxRDQwMDMyOTIxNyAvKiBXZWJHUFVSZW5kZXJpbmdDb250ZXh0Lmlk
bCAqLywKKwkJCQlEMEM0MTlGODIxODQwNERBMDA5RUMxREUgLyogV2ViR1BVUmVuZGVyUGlwZWxp
bmUuY3BwICovLAorCQkJCUQwQzQxOUY3MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5kZXJQ
aXBlbGluZS5oICovLAorCQkJCUQwQzQxOUY5MjE4NDA0REEwMDlFQzFERSAvKiBXZWJHUFVSZW5k
ZXJQaXBlbGluZS5pZGwgKi8sCisJCQkJRDBDNDE5RjIyMTgzRUZFQzAwOUVDMURFIC8qIFdlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oICovLAorCQkJCUQwQzQxOUYzMjE4M0VGRUMwMDlF
QzFERSAvKiBXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaWRsICovLAogCQkJCUQwNjE1
RkNEMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuY3BwICovLAogCQkJCUQw
NjE1RkNDMjE3RkU1QzYwMDhBNDhBOCAvKiBXZWJHUFVTaGFkZXJNb2R1bGUuaCAqLywKIAkJCQlE
MDYxNUZDRTIxN0ZFNUM2MDA4QTQ4QTggLyogV2ViR1BVU2hhZGVyTW9kdWxlLmlkbCAqLywKIAkJ
CQlEMDYwRDg4NzIxODI2OTcwMDAzMzkzMTggLyogV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ci5oICovLAogCQkJCUQwNjBEODg0MjE4MjVENUYwMDMzOTMxOCAvKiBXZWJHUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yLmlkbCAqLywKKwkJCQlEMEM0MTlFRTIxODNEOUM4MDA5RUMxREUgLyogV2Vi
R1BVU2hhZGVyU3RhZ2UuaCAqLywKKwkJCQlEMEM0MTlFRjIxODNEOUM4MDA5RUMxREUgLyogV2Vi
R1BVU2hhZGVyU3RhZ2UuaWRsICovLAogCQkJCUQwREEwQkU1MjE3OTMwRTIwMDdGRTJBQyAvKiBX
ZWJHUFVTd2FwQ2hhaW4uY3BwICovLAogCQkJCUQwREEwQkU0MjE3OTMwRTIwMDdGRTJBQyAvKiBX
ZWJHUFVTd2FwQ2hhaW4uaCAqLywKIAkJCQlEMERBMEJFNjIxNzkzMEUyMDA3RkUyQUMgLyogV2Vi
R1BVU3dhcENoYWluLmlkbCAqLywKQEAgLTI1NDgwLDcgKzI1NTE0LDkgQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRDA2MTVGRDEyMTdGRjFFMTAwOEE0OEE4IC8q
IEdQVURldmljZU1ldGFsLm1tICovLAorCQkJCUQwQzQxOUZCMjE4NDBGNkMwMDlFQzFERSAvKiBH
UFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tICovLAogCQkJCUQwNjBEODg5MjE4MjgwQzEwMDMzOTMx
OCAvKiBHUFVTaGFkZXJNb2R1bGVNZXRhbC5tbSAqLywKKwkJCQlEMDk3MjdCNjIxODdGNDQzMDA5
NDJGM0EgLyogR1BVU3dhcENoYWluTWV0YWwubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29h
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCBkMjlkYmJkNTdjNDgyZGZhYTAyMzM4
NjAxYjEwZjA4NmM0YTQ2MzZlLi4wYjg4ODNjZGVmYjY1MjVhNzc2OTYxOGI3ODNlNzM1ZTdiNjMz
YjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRp
bk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oCkBAIC0xNzgsNiArMTc4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3Jv
KFdlYkdQVUFkYXB0ZXIpIFwKICAgICBtYWNybyhXZWJHUFVEZXZpY2UpIFwKICAgICBtYWNybyhX
ZWJHUFVSZW5kZXJpbmdDb250ZXh0KSBcCisgICAgbWFjcm8oV2ViR1BVUmVuZGVyUGlwZWxpbmUp
IFwKKyAgICBtYWNybyhXZWJHUFVTaGFkZXJTdGFnZSkgXAogICAgIG1hY3JvKFdlYkdQVVNoYWRl
ck1vZHVsZSkgXAogICAgIG1hY3JvKFdlYkdQVVN3YXBDaGFpbikgXAogICAgIG1hY3JvKFdlYk1l
dGFsQnVmZmVyKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCA5YzkzZDhmOTVkOWExZTEzZjgyZTM1M2M2MTM5ZWNi
NGM2NGExZjEzLi44NjcyODAwZjI2ZjJmNjQ2MzdjMGNiYzM3MTAyNjE1M2IyY2Q2ODJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKQEAgLTM2Niw3ICszNjYsMTEgQEAgRU5BQkxFX1dFQkdMID0gRU5BQkxFX1dFQkdMOwog
CiBFTkFCTEVfV0VCR0wyID0gRU5BQkxFX1dFQkdMMjsKIAotRU5BQkxFX1dFQkdQVSA9IEVOQUJM
RV9XRUJHUFU7CitFTkFCTEVfV0VCR1BVID0gJChFTkFCTEVfV0VCR1BVXyQoV0tfUExBVEZPUk1f
TkFNRSkpOworRU5BQkxFX1dFQkdQVV9pcGhvbmVvcyA9IEVOQUJMRV9XRUJHUFU7CitFTkFCTEVf
V0VCR1BVX3dhdGNob3MgPSBFTkFCTEVfV0VCR1BVOworRU5BQkxFX1dFQkdQVV9hcHBsZXR2b3Mg
PSBFTkFCTEVfV0VCR1BVOworRU5BQkxFX1dFQkdQVV9tYWNvc3ggPSBFTkFCTEVfV0VCR1BVOwog
CiBFTkFCTEVfV0VCTUVUQUwgPSAkKEVOQUJMRV9XRUJNRVRBTF8kKFdLX1BMQVRGT1JNX05BTUUp
KTsKIEVOQUJMRV9XRUJNRVRBTF9pcGhvbmVvcyA9IEVOQUJMRV9XRUJNRVRBTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKaW5kZXggOWM5M2Q4Zjk1ZDlhMWUxM2Y4MmUzNTNjNjEzOWVjYjRj
NjRhMWYxMy4uODY3MjgwMGYyNmYyZjY0NjM3YzBjYmMzNzEwMjYxNTNiMmNkNjgyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTM2Niw3ICszNjYsMTEgQEAgRU5BQkxFX1dFQkdM
ID0gRU5BQkxFX1dFQkdMOwogCiBFTkFCTEVfV0VCR0wyID0gRU5BQkxFX1dFQkdMMjsKIAotRU5B
QkxFX1dFQkdQVSA9IEVOQUJMRV9XRUJHUFU7CitFTkFCTEVfV0VCR1BVID0gJChFTkFCTEVfV0VC
R1BVXyQoV0tfUExBVEZPUk1fTkFNRSkpOworRU5BQkxFX1dFQkdQVV9pcGhvbmVvcyA9IEVOQUJM
RV9XRUJHUFU7CitFTkFCTEVfV0VCR1BVX3dhdGNob3MgPSBFTkFCTEVfV0VCR1BVOworRU5BQkxF
X1dFQkdQVV9hcHBsZXR2b3MgPSBFTkFCTEVfV0VCR1BVOworRU5BQkxFX1dFQkdQVV9tYWNvc3gg
PSBFTkFCTEVfV0VCR1BVOwogCiBFTkFCTEVfV0VCTUVUQUwgPSAkKEVOQUJMRV9XRUJNRVRBTF8k
KFdLX1BMQVRGT1JNX05BTUUpKTsKIEVOQUJMRV9XRUJNRVRBTF9pcGhvbmVvcyA9IEVOQUJMRV9X
RUJNRVRBTDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBkNWY1YjQ0YjA4YWRkYWJlODFiNDdjOWZjM2Q5YmExYTZmYjhiZDUxLi5jZmQwMTk0ZTEy
ZWJlYTdhYTAzZmNhZjk0NzhjNzAzNDQ1M2VmZDhiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTEtMDYgIEp1
c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBFeHBl
cmltZW50YWwgcHJvdG90eXBlIGZvciBXZWJHUFVSZW5kZXJQaXBlbGluZSBhbmQgV2ViR1BVU3dh
cENoYWluCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTEyOTEKKworICAgICAgICBSZXZpZXdlZCBieSBNeWxlcyBNYXhmaWVsZC4KKworICAgICAgICBQ
cm9wZXJseSBkaXNhYmxlIFdFQkdQVSBvbiBhbGwgbm9uLU1ldGFsIHBsYXRmb3JtcyBmb3Igbm93
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZzoKKwogMjAxOC0xMS0wNSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgd2Via2l0cHk6IEdlbmVyYWxpemUgdHJhaWxpbmcgU0RLIHNwZWNp
ZmllciAoUGFydCAxKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggOWM5M2Q4Zjk1ZDlhMWUxM2Y4
MmUzNTNjNjEzOWVjYjRjNjRhMWYxMy4uODY3MjgwMGYyNmYyZjY0NjM3YzBjYmMzNzEwMjYxNTNi
MmNkNjgyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0zNjYsNyArMzY2LDExIEBAIEVOQUJM
RV9XRUJHTCA9IEVOQUJMRV9XRUJHTDsKIAogRU5BQkxFX1dFQkdMMiA9IEVOQUJMRV9XRUJHTDI7
CiAKLUVOQUJMRV9XRUJHUFUgPSBFTkFCTEVfV0VCR1BVOworRU5BQkxFX1dFQkdQVSA9ICQoRU5B
QkxFX1dFQkdQVV8kKFdLX1BMQVRGT1JNX05BTUUpKTsKK0VOQUJMRV9XRUJHUFVfaXBob25lb3Mg
PSBFTkFCTEVfV0VCR1BVOworRU5BQkxFX1dFQkdQVV93YXRjaG9zID0gRU5BQkxFX1dFQkdQVTsK
K0VOQUJMRV9XRUJHUFVfYXBwbGV0dm9zID0gRU5BQkxFX1dFQkdQVTsKK0VOQUJMRV9XRUJHUFVf
bWFjb3N4ID0gRU5BQkxFX1dFQkdQVTsKIAogRU5BQkxFX1dFQk1FVEFMID0gJChFTkFCTEVfV0VC
TUVUQUxfJChXS19QTEFURk9STV9OQU1FKSk7CiBFTkFCTEVfV0VCTUVUQUxfaXBob25lb3MgPSBF
TkFCTEVfV0VCTUVUQUw7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTcxODYwNTIwYzBiMGQ5N2EzNWJkNTA1ZjM1ZDI5M2E1
OGU2MTU5ZC4uNWExZThkMzIzMDZhZWE3ZGFiOTQzNjM0ZGJiODZlYjc5MWI3N2JhOCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDE4LTExLTA2ICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRXhwZXJpbWVudGFsIHByb3RvdHlwZSBmb3IgV2Vi
R1BVUmVuZGVyUGlwZWxpbmUgYW5kIFdlYkdQVVN3YXBDaGFpbgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMjkxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTXlsZXMgTWF4ZmllbGQuCisKKyAgICAgICAgKiB3ZWJncHUvanMvc2V0LXVwLXdlYmdwdS1j
b250ZXh0cy5qczogQWRkZWQgaGVscGVyIHNjcmlwdCBmb3IgcnVubmluZyBkaWZmZXJlbnQgd2Vi
Z3B1IHRlc3RzLgorICAgICAgICAocnVuV2ViR1BVVGVzdHMpOgorICAgICAgICAoYXN5bmMucnVu
V2ViR1BVVGVzdHNPbkNhbnZhcyk6CisgICAgICAgIChhc3luYy5zZXRVcENvbnRleHRzKToKKyAg
ICAgICAgKiB3ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHdlYmdwdS9yZW5kZXItcGlwZWxpbmVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
YmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViZ3B1L3NoYWRl
ci1tb2R1bGVzLmh0bWw6IFVwZGF0ZWQgdG8gdXNlIGZ1bmN0aW9ucyBpbiBzZXQtdXAtd2ViZ3B1
LWNvbnRleHRzLmpzLgorICAgICAgICAqIHdlYmdwdS93ZWJncHUtYmFzaWNzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiB3ZWJncHUvd2ViZ3B1LWJhc2ljcy5odG1sOiBVcGRhdGVkIHRocm91Z2gg
Y3JlYXRpbmcgYSBXZWJHUFVSZW5kZXJQaXBlbGluZS4KKwogMjAxOC0xMS0wMSAgSnVzdGluIEZh
biAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEV4cGVyaW1lbnRh
bCBwcm90b3R5cGUgZm9yIE1TTCBzaGFkZXJzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJn
cHUvanMvc2V0LXVwLXdlYmdwdS1jb250ZXh0cy5qcyBiL0xheW91dFRlc3RzL3dlYmdwdS9qcy9z
ZXQtdXAtd2ViZ3B1LWNvbnRleHRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MzA1NjA0ZGFlZTNmYmE1NzVj
M2I0OThmZDhlOGJjY2IyZDMwYzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJn
cHUvanMvc2V0LXVwLXdlYmdwdS1jb250ZXh0cy5qcwpAQCAtMCwwICsxLDQ2IEBACisndXNlIHN0
cmljdCc7CisKK2xldCBjb250ZXh0LCBhZGFwdGVyLCBkZWZhdWx0RGV2aWNlOworCitmdW5jdGlv
biBydW5XZWJHUFVUZXN0cyh0ZXN0cykgeworICAgIHJ1bldlYkdQVVRlc3RzT25DYW52YXMoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksIHRlc3RzKTsKK30KKworYXN5bmMgZnVuY3Rp
b24gcnVuV2ViR1BVVGVzdHNPbkNhbnZhcyhjYW52YXMsIHRlc3RzKSB7CisgICAgdHJ5IHsKKyAg
ICAgICAgYXdhaXQgc2V0VXBDb250ZXh0cyhjYW52YXMpOworCisgICAgICAgIGZvciAobGV0IHRl
c3Qgb2YgdGVzdHMpCisgICAgICAgICAgICB0ZXN0KCk7CisKKyAgICAgICAgZGVidWcoIkFsbCB0
ZXN0cyBjb21wbGV0ZS4iKTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBjb25zb2xl
LmVycm9yKGVycm9yKTsKKyAgICAgICAgdGVzdEZhaWxlZChgWyR7ZXJyb3J9XTogU2VlIGNvbnNv
bGUhYCk7CisgICAgfQorfQorCithc3luYyBmdW5jdGlvbiBzZXRVcENvbnRleHRzKGNhbnZhcykg
eworICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgid2ViZ3B1Iik7CisgICAgaWYgKCFj
b250ZXh0KQorICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVSBjb250
ZXh0ISIpOworCisgICAgc2hvdWxkQmVEZWZpbmVkKHdpbmRvdy53ZWJncHUpOworICAgIAorICAg
IC8vIEZJWE1FOiByZXF1ZXN0QWRhcHRlciBzaG91bGQgdGFrZSBhIFdlYkdQVUFkYXB0ZXJEZXNj
cmlwdG9yLgorICAgIGFkYXB0ZXIgPSBhd2FpdCB3aW5kb3cud2ViZ3B1LnJlcXVlc3RBZGFwdGVy
KHt9KTsKKyAgICBpZiAoIWFkYXB0ZXIpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90
IGNyZWF0ZSBkZWZhdWx0IFdlYkdQVUFkYXB0ZXIhIikKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIEZJWE1FOiByZXF1ZXN0RGV2aWNlIHNob3VsZCB0YWtlIGEgV2ViR1BVRGV2aWNl
RGVzY3JpcHRvci4KKyAgICBkZWZhdWx0RGV2aWNlID0gYWRhcHRlci5jcmVhdGVEZXZpY2UoKTsK
KyAgICBpZiAoIWRlZmF1bHREZXZpY2UpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90
IGNyZWF0ZSBXZWJHUFVEZXZpY2UhIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAv
LyBGSVhNRTogRGVmYXVsdCB0byAiQjhHOFI4QThVbm9ybSIgZm9ybWF0IGZvciBub3cuCisgICAg
Y29udGV4dC5jb25maWd1cmUoeyBkZXZpY2U6IGRlZmF1bHREZXZpY2UsIHdpZHRoOiBjYW52YXMu
d2lkdGgsIGhlaWdodDogY2FudmFzLmhlaWdodCB9KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzI1YjQ3ZjlkZjVjMjU2ZWNjOWQyYTk1YjY2ZTBjNTZmMzkwNjdm
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlwZWxpbmVz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitQQVNTIFtvYmplY3QgV2ViR1BVXSBpcyBk
ZWZpbmVkLgorUEFTUyBTdWNjZXNzZnVsbHkgY3JlYXRlZCBXZWJHUFVSZW5kZXJQaXBlbGluZS4K
K1BBU1MgV2ViR1BVUmVuZGVyUGlwZWxpbmUgd2l0aCBpbnZhbGlkIFdlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvciB3YXMgbm90IGNyZWF0ZWQuCitQQVNTIFdlYkdQVVJlbmRlclBpcGVsaW5l
IHdpdGggaW52YWxpZCBzaGFkZXIgbW9kdWxlIHdhcyBub3QgY3JlYXRlZC4KK1BBU1MgV2ViR1BV
UmVuZGVyUGlwZWxpbmUgd2l0aCBpbnZhbGlkIHZlcnRleCBzaGFkZXIgc3RhZ2Ugd2FzIG5vdCBj
cmVhdGVkLgorUEFTUyBXZWJHUFVSZW5kZXJQaXBlbGluZSB3aXRoIGludmFsaWQgdmVydGV4IHNo
YWRlciBlbnRyeSBwb2ludCB3YXMgbm90IGNyZWF0ZWQuCitQQVNTIFdlYkdQVVJlbmRlclBpcGVs
aW5lIHdpdGggaW52YWxpZCBXZWJHUFVTaGFkZXJTdGFnZUVudW0gd2FzIG5vdCBjcmVhdGVkLgor
QWxsIHRlc3RzIGNvbXBsZXRlLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS9yZW5kZXItcGlw
ZWxpbmVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg1ZDRjMGEzY2M2NDliYzQwMzY0ODZmYWZmNDViYTYwYTM2YjQzODgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvcmVuZGVyLXBpcGVsaW5lcy5odG1sCkBA
IC0wLDAgKzEsMTM5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ianMvc2V0
LXVwLXdlYmdwdS1jb250ZXh0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJsaWJyYXJ5IiB0
eXBlPSJ4LXNoYWRlci94LW1ldGFsIj4KKyAgICAjaW5jbHVkZSA8bWV0YWxfc3RkbGliPgorICAg
IAorICAgIHVzaW5nIG5hbWVzcGFjZSBtZXRhbDsKKyAgICAKKyAgICBzdHJ1Y3QgVmVydGV4Cisg
ICAgeworICAgICAgICBmbG9hdDQgcG9zaXRpb24gW1twb3NpdGlvbl1dOworICAgIH07CisgICAg
CisgICAgdmVydGV4IFZlcnRleCB2ZXJ0ZXhfbWFpbih1aW50IHZpZCBbW3ZlcnRleF9pZF1dKQor
ICAgIHsKKyAgICAgICAgVmVydGV4IHY7CisgICAgICAgIHN3aXRjaCAodmlkKSB7CisgICAgICAg
IGNhc2UgMDoKKyAgICAgICAgICAgIHYucG9zaXRpb24gPSBmbG9hdDQoLS43NSwgLS43NSwgMCwg
MSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgdi5w
b3NpdGlvbiA9IGZsb2F0NCguNzUsIC0uNzUsIDAsIDEpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHYucG9zaXRpb24gPSBmbG9hdDQoMCwgLjc1LCAw
LCAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
di5wb3NpdGlvbiA9IGZsb2F0NCgwLCAwLCAwLCAxKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdjsKKyAgICB9CisgICAgCisgICAgZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oVmVy
dGV4IHZlcnRleEluIFtbc3RhZ2VfaW5dXSkKKyAgICB7CisgICAgICAgIHJldHVybiBmbG9hdDQo
MS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQ+CisndXNlIHN0
cmljdCc7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisKK2xldCBzaGFkZXJEZXNjcmlwdG9yLCBzaGFkZXJNb2R1bGUsIHZlcnRl
eFN0YWdlRGVzY3JpcHRvciwgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3I7CisKK2Z1bmN0aW9uIHNl
dFVwUGlwZWxpbmUoKSB7CisgICAgc2hhZGVyRGVzY3JpcHRvciA9IHsKKyAgICAgICAgY29kZTog
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpYnJhcnkiKS50ZXh0CisgICAgfTsKKworICAgIHNo
YWRlck1vZHVsZSA9IGRlZmF1bHREZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHNoYWRlckRlc2Ny
aXB0b3IpOworICAgIGlmICghc2hhZGVyTW9kdWxlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNv
dWxkIG5vdCBjcmVhdGUgV2ViR1BVU2hhZGVyTW9kdWxlISIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdmVydGV4U3RhZ2VEZXNjcmlwdG9yID0geyAKKyAgICAgICAgbW9kdWxlOiBz
aGFkZXJNb2R1bGUsIAorICAgICAgICBzdGFnZTogV2ViR1BVU2hhZGVyU3RhZ2UuVkVSVEVYLCAK
KyAgICAgICAgZW50cnlQb2ludDogInZlcnRleF9tYWluIiAKKyAgICB9OworCisgICAgZnJhZ21l
bnRTdGFnZURlc2NyaXB0b3IgPSB7CisgICAgICAgIG1vZHVsZTogc2hhZGVyTW9kdWxlLAorICAg
ICAgICBzdGFnZTogV2ViR1BVU2hhZGVyU3RhZ2UuRlJBR01FTlQsCisgICAgICAgIGVudHJ5UG9p
bnQ6ICJmcmFnbWVudF9tYWluIgorICAgIH07CisKKyAgICBsZXQgcGlwZWxpbmVEZXNjcmlwdG9y
ID0geworICAgICAgICBzdGFnZXM6IFt2ZXJ0ZXhTdGFnZURlc2NyaXB0b3IsIGZyYWdtZW50U3Rh
Z2VEZXNjcmlwdG9yXSwKKyAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3k6ICJ0cmlhbmdsZUxpc3Qi
CisgICAgfTsKKworICAgIGxldCByZW5kZXJQaXBlbGluZSA9IGRlZmF1bHREZXZpY2UuY3JlYXRl
UmVuZGVyUGlwZWxpbmUocGlwZWxpbmVEZXNjcmlwdG9yKTsKKyAgICBpZiAocmVuZGVyUGlwZWxp
bmUpCisgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIFdlYkdQVVJlbmRl
clBpcGVsaW5lLiIpCisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3Jl
YXRlIFdlYkdQVVJlbmRlclBpcGVsaW5lISIpOworfQorCitmdW5jdGlvbiBjaGVja0JhZFJlbmRl
clBpcGVsaW5lKGRlc2NyaXB0b3IsIHRlc3RTdWJqZWN0TmFtZSkgeworICAgIGxldCBwaXBlbGlu
ZSA9IGRlZmF1bHREZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoZGVzY3JpcHRvcik7CisKKyAg
ICBpZiAocGlwZWxpbmUpCisgICAgICAgIHRlc3RGYWlsZWQoYFdlYkdQVVJlbmRlclBpcGVsaW5l
IHdhcyBjcmVhdGVkIHdpdGggYW4gaW52YWxpZCAke3Rlc3RTdWJqZWN0TmFtZX0hYCk7CisgICAg
ZWxzZQorICAgICAgICB0ZXN0UGFzc2VkKGBXZWJHUFVSZW5kZXJQaXBlbGluZSB3aXRoIGludmFs
aWQgJHt0ZXN0U3ViamVjdE5hbWV9IHdhcyBub3QgY3JlYXRlZC5gKTsKK30KKworZnVuY3Rpb24g
c2V0VXBCYWRQaXBlbGluZXMoKSB7CisgICAgY2hlY2tCYWRSZW5kZXJQaXBlbGluZSh7fSwgIldl
YkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciIpOworCisgICAgbGV0IG5vTW9kdWxlVmVydGV4
RGVzY3JpcHRvciA9IHsKKyAgICAgICAgc3RhZ2U6IFdlYkdQVVNoYWRlclN0YWdlLlZFUlRFWCwK
KyAgICAgICAgZW50cnlQb2ludDogInZlcnRleF9tYWluIgorICAgIH0KKyAgICBsZXQgbm9Nb2R1
bGVQaXBlbGluZURlc2NyaXB0b3IgPSB7CisgICAgICAgIHN0YWdlczogW25vTW9kdWxlVmVydGV4
RGVzY3JpcHRvciwgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3JdLAorICAgICAgICBwcmltaXRpdmVU
b3BvbG9neTogInRyaWFuZ2xlTGlzdCIKKyAgICB9CisgICAgY2hlY2tCYWRSZW5kZXJQaXBlbGlu
ZShub01vZHVsZVBpcGVsaW5lRGVzY3JpcHRvciwgInNoYWRlciBtb2R1bGUiKTsKKworICAgIC8v
IEEgKE1ldGFsKSByZW5kZXJwaXBlbGluZSBtdXN0IGhhdmUgYSB2ZXJ0ZXggZnVuY3Rpb24uCisg
ICAgbGV0IG5vVmVydGV4UGlwZWxpbmVEZXNjcmlwdG9yID0geworICAgICAgICBzdGFnZXM6IFtm
cmFnbWVudFN0YWdlRGVzY3JpcHRvcl0sCisgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAidHJp
YW5nbGVMaXN0IgorICAgIH0KKyAgICBjaGVja0JhZFJlbmRlclBpcGVsaW5lKG5vVmVydGV4UGlw
ZWxpbmVEZXNjcmlwdG9yLCAidmVydGV4IHNoYWRlciBzdGFnZSIpCisKKyAgICBsZXQgYmFkRW50
cnlQb2ludERlc2NyaXB0b3IgPSB7IAorICAgICAgICBtb2R1bGU6IHNoYWRlck1vZHVsZSwgCisg
ICAgICAgIHN0YWdlOiBXZWJHUFVTaGFkZXJTdGFnZS5WRVJURVgsIAorICAgICAgICBlbnRyeVBv
aW50OiAiVmVydGV4X01haW4iIAorICAgIH07CisgICAgbGV0IGJhZEVudHJ5UG9pbnRQaXBlbGlu
ZURlc2NzcmlwdG9yID0geworICAgICAgICBzdGFnZXM6IFtiYWRFbnRyeVBvaW50RGVzY3JpcHRv
ciwgZnJhZ21lbnRTdGFnZURlc2NyaXB0b3JdLAorICAgICAgICBwcmltaXRpdmVUb3BvbG9neTog
InRyaWFuZ2xlTGlzdCIKKyAgICB9CisgICAgY2hlY2tCYWRSZW5kZXJQaXBlbGluZShiYWRFbnRy
eVBvaW50UGlwZWxpbmVEZXNjc3JpcHRvciwgInZlcnRleCBzaGFkZXIgZW50cnkgcG9pbnQiKTsK
KworICAgIGxldCBiYWRTdGFnZUVudW1EZXNjcmlwdG9yID0geyAKKyAgICAgICAgbW9kdWxlOiBz
aGFkZXJNb2R1bGUsIAorICAgICAgICBzdGFnZTogV2ViR1BVU2hhZGVyU3RhZ2UuQ09NUFVURSwg
CisgICAgICAgIGVudHJ5UG9pbnQ6ICJ2ZXJ0ZXhfbWFpbiIgCisgICAgfTsKKyAgICBsZXQgYmFk
U3RhZ2VFbnVtUGlwZWxpbmVEZXNjcmlwdG9yID0geworICAgICAgICBzdGFnZXM6IFtiYWRTdGFn
ZUVudW1EZXNjcmlwdG9yLCBmcmFnbWVudFN0YWdlRGVzY3JpcHRvcl0sCisgICAgICAgIHByaW1p
dGl2ZVRvcG9sb2d5OiAidHJpYW5nbGVMaXN0IgorICAgIH0KKyAgICBjaGVja0JhZFJlbmRlclBp
cGVsaW5lKGJhZFN0YWdlRW51bVBpcGVsaW5lRGVzY3JpcHRvciwgIldlYkdQVVNoYWRlclN0YWdl
RW51bSIpOworfQorCitydW5XZWJHUFVUZXN0cyhbc2V0VXBQaXBlbGluZSwgc2V0VXBCYWRQaXBl
bGluZXNdKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdw
dS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvc2hhZGVy
LW1vZHVsZXMtZXhwZWN0ZWQudHh0CmluZGV4IGZhOTRiMzMwNzVlOGQ5YzA2MGVlZWIxZjE3MzAx
MzM3YTExMGNmMDYuLjBmODRlZGI2MzFlYjg4ZTk2YzQwNTg0ZTc2ZDhhZDUwZmIwZTZjY2YgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmdwdS9zaGFkZXItbW9kdWxlcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLWV4cGVjdGVkLnR4dApAQCAt
MSw2ICsxLDggQEAKK1BBU1MgW29iamVjdCBXZWJHUFVdIGlzIGRlZmluZWQuCiBQQVNTIEJhZCBz
aGFkZXIgY29kZSBzaG91bGQgbm90IGNyZWF0ZSBhIG1vZHVsZS4KIFBBU1MgSW5jb21wbGV0ZSBz
aGFkZXIgY29kZSBzaG91bGQgbm90IGNyZWF0ZSBhIG1vZHVsZS4KIFBBU1MgU2hhZGVyIG1vZHVs
ZSBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4KK0FsbCB0ZXN0cyBjb21wbGV0ZS4KIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3NoYWRlci1tb2R1bGVzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvc2hh
ZGVyLW1vZHVsZXMuaHRtbAppbmRleCA4MjNiZTkyZDllNDlhOWRiNDljNTMzMDFiM2JhZWQ4NTYy
NzYwNDg4Li4yNjdjODAyNzBiMmNlYWZiNDViZjU3YmVkZjA3ZDVjZDMzZWRmMWYzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvc2hhZGVyLW1vZHVsZXMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvc2hhZGVyLW1vZHVsZXMuaHRtbApAQCAtMSw2ICsxLDcgQEAKIDwhRE9DVFlQ
RSBodG1sPgogPGh0bWw+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJqcy9zZXQtdXAtd2ViZ3B1LWNvbnRleHRzLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgaWQ9ImxpYnJhcnlfZnVsbCIgdHlwZT0ieC1zaGFkZXIveC1tZXRh
bCI+CiAgICAgI2luY2x1ZGUgPG1ldGFsX3N0ZGxpYj4KICAgICAKQEAgLTcwLDIwICs3MSw2IEBA
CiBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogCi1sZXQgY2FudmFzOwotbGV0IGNvbnRleHQ7Ci1sZXQgYWRhcHRlcjsKLWxldCBkZWZh
dWx0RGV2aWNlOwotCi1hc3luYyBmdW5jdGlvbiBzZXRVcENvbnRleHRzKCkgewotICAgIGNhbnZh
cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgIGNvbnRleHQgPSBjYW52
YXMuZ2V0Q29udGV4dCgid2ViZ3B1Iik7Ci0gICAgYWRhcHRlciA9IGF3YWl0IHdpbmRvdy53ZWJn
cHUucmVxdWVzdEFkYXB0ZXIoe30pOwotICAgIGRlZmF1bHREZXZpY2UgPSBhZGFwdGVyLmNyZWF0
ZURldmljZSgpOwotCi0gICAgc2V0VXBTaGFkZXJzKCk7Ci19Ci0KIGZ1bmN0aW9uIHNldFVwU2hh
ZGVycygpIHsKICAgICBsZXQgc2hhZGVyRGVzY3JpcHRvcjAgPSB7CiAgICAgICAgIGNvZGUgOiAi
SGVsbG8gV29ybGQiCkBAIC0xMTUsOSArMTAyLDkgQEAgZnVuY3Rpb24gc2V0VXBTaGFkZXJzKCkg
ewogICAgICAgICB0ZXN0RmFpbGVkKCJTaGFkZXIgbW9kdWxlIG5vdCBjcmVhdGVkIHN1Y2Nlc3Nm
dWxseSEiKTsKIH0KIAotc2V0VXBDb250ZXh0cygpOworcnVuV2ViR1BVVGVzdHMoW3NldFVwU2hh
ZGVyc10pOwogCi12YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK3N1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXgg
ZWIxZTUyNDEyMDFjODQxYzcxOGMwM2VjZWY2NGU2OWEwMThiOGM4MC4uNDBkNTJlZDZiYzA0OGY2
ZWZiNDI3OTUxNzYxNWEyZWM3MGJiY2U4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dlYmdwdS1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmdwdS93ZWJn
cHUtYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKIFBBU1MgW29iamVjdCBXZWJH
UFVdIGlzIGRlZmluZWQuCitBbGwgdGVzdHMgY29tcGxldGUuCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmdwdS93ZWJncHUtYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvd2ViZ3B1LWJhc2lj
cy5odG1sCmluZGV4IGY3Yzc2NzJmZDVjMTE5YWEyODVhNTM0NjEwY2UwZTQxM2M0YjdjNWIuLjNh
MWFmMWJlMGU0ODdlNzljMDgyMmJkZWZmMGY1Y2YzYzRmMGEyZDYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3dlYmdwdS93ZWJncHUtYmFzaWNzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3dlYmdwdS1iYXNpY3MuaHRtbApAQCAtMSw2ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPGh0
bWw+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJqcy9zZXQtdXAtd2ViZ3B1LWNvbnRleHRzLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgaWQ9ImxpYnJhcnkiIHR5cGU9Ingtc2hhZGVyL3gtbWV0YWwiPgogICAgICNpbmNsdWRl
IDxtZXRhbF9zdGRsaWI+CiAgICAgCkBAIC00MSw0NiArNDIsNTUgQEAKIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKICAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKLWxldCBjYW52
YXM7Ci1sZXQgY29udGV4dDsKLWxldCBhZGFwdGVyOwotbGV0IGRlZmF1bHREZXZpY2U7CitsZXQg
cmVuZGVyUGlwZWxpbmU7CiAKLWFzeW5jIGZ1bmN0aW9uIHNldFVwQ29udGV4dHMoKSB7Ci0gICAg
Y2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0gICAgY29udGV4dCA9
IGNhbnZhcy5nZXRDb250ZXh0KCJ3ZWJncHUiKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAg
IHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgV2ViR1BVIGNvbnRleHQhIik7Ci0KLSAgICBz
aG91bGRCZURlZmluZWQod2luZG93LndlYmdwdSk7Ci0gICAgCi0gICAgYWRhcHRlciA9IGF3YWl0
IHdpbmRvdy53ZWJncHUucmVxdWVzdEFkYXB0ZXIoe30pOwotICAgIGlmICghYWRhcHRlcikgewot
ICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIGRlZmF1bHQgV2ViR1BVQWRhcHRl
ciEiKQorZnVuY3Rpb24gc2V0VXBQaXBlbGluZSgpIHsKKyAgICBsZXQgc2hhZGVyRGVzY3JpcHRv
ciA9IHsKKyAgICAgICAgY29kZTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxpYnJhcnkiKS50
ZXh0CisgICAgfTsKKyAgICBsZXQgc2hhZGVyTW9kdWxlID0gZGVmYXVsdERldmljZS5jcmVhdGVT
aGFkZXJNb2R1bGUoc2hhZGVyRGVzY3JpcHRvcik7CisgICAgaWYgKCFzaGFkZXJNb2R1bGUpIHsK
KyAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFVTaGFkZXJNb2R1bGUh
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkZWZhdWx0RGV2aWNlID0gYWRhcHRl
ci5jcmVhdGVEZXZpY2UoKTsKLSAgICBpZiAoIWRlZmF1bHREZXZpY2UpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBXZWJHUFVEZXZpY2UhIik7CisgICAgbGV0IHZlcnRl
eFN0YWdlRGVzY3JpcHRvciA9IHsgCisgICAgICAgIG1vZHVsZTogc2hhZGVyTW9kdWxlLCAKKyAg
ICAgICAgc3RhZ2U6IFdlYkdQVVNoYWRlclN0YWdlLlZFUlRFWCwgCisgICAgICAgIGVudHJ5UG9p
bnQ6ICJ2ZXJ0ZXhfbWFpbiIgCisgICAgfTsKKworICAgIGxldCBmcmFnbWVudFN0YWdlRGVzY3Jp
cHRvciA9IHsKKyAgICAgICAgbW9kdWxlOiBzaGFkZXJNb2R1bGUsCisgICAgICAgIHN0YWdlOiBX
ZWJHUFVTaGFkZXJTdGFnZS5GUkFHTUVOVCwKKyAgICAgICAgZW50cnlQb2ludDogImZyYWdtZW50
X21haW4iCisgICAgfTsKKworICAgIGlmICghdmVydGV4U3RhZ2VEZXNjcmlwdG9yIHx8ICFmcmFn
bWVudFN0YWdlRGVzY3JpcHRvcikgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3Jl
YXRlIFdlYkdQVVBpcGVsaW5lU3RhZ2VEZXNjcmlwdG9yISIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgc2V0VXBTaGFkZXJzKCk7Ci19Ci0KLWZ1bmN0aW9uIHNldFVwU2hhZGVycygp
IHsKLSAgICBsZXQgc2hhZGVyRGVzY3JpcHRvciA9IHsKLSAgICAgICAgY29kZTogZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxpYnJhcnkiKS50ZXh0CisgICAgbGV0IHBpcGVsaW5lRGVzY3JpcHRv
ciA9IHsKKyAgICAgICAgc3RhZ2VzOiBbdmVydGV4U3RhZ2VEZXNjcmlwdG9yLCBmcmFnbWVudFN0
YWdlRGVzY3JpcHRvcl0sCisgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5OiAidHJpYW5nbGVMaXN0
IgogICAgIH07Ci0gICAgbGV0IHNoYWRlck1vZHVsZSA9IGRlZmF1bHREZXZpY2UuY3JlYXRlU2hh
ZGVyTW9kdWxlKHNoYWRlckRlc2NyaXB0b3IpOwotICAgIGlmICghc2hhZGVyTW9kdWxlKQotICAg
ICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVVNoYWRlck1vZHVsZSEiKTsK
KworICAgIGlmICghcGlwZWxpbmVEZXNjcmlwdG9yKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNv
dWxkIG5vdCBjcmVhdGUgV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yISIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgcmVuZGVyUGlwZWxpbmUgPSBkZWZhdWx0RGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKHBpcGVsaW5lRGVzY3JpcHRvcik7CisgICAgaWYgKCFyZW5kZXJQ
aXBlbGluZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCJDb3VsZCBub3QgY3JlYXRlIFdlYkdQVVJl
bmRlclBpcGVsaW5lISIpOworICAgICAgICByZXR1cm47CisgICAgfQogfQogCi1zZXRVcENvbnRl
eHRzKCk7CitydW5XZWJHUFVUZXN0cyhbc2V0VXBQaXBlbGluZV0pOwogCi12YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>