<?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>194409</bug_id>
          
          <creation_ts>2019-02-07 13:03:19 -0800</creation_ts>
          <short_desc>[Web GPU] GPUDevice::createTexture implementation prototype</short_desc>
          <delta_ts>2019-02-07 18:01:47 -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>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Fan">justin_fan</reporter>
          <assigned_to name="Justin Fan">justin_fan</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1503885</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-02-07 13:03:19 -0800</bug_when>
    <thetext>[Web GPU] GPUDevice::createTexture implementation prototype</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503886</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-07 13:03:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/47894312&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503890</commentid>
    <comment_count>2</comment_count>
      <attachid>361432</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-02-07 13:20:14 -0800</bug_when>
    <thetext>Created attachment 361432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503912</commentid>
    <comment_count>3</comment_count>
      <attachid>361438</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-02-07 13:40:17 -0800</bug_when>
    <thetext>Created attachment 361438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503926</commentid>
    <comment_count>4</comment_count>
      <attachid>361441</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-02-07 14:10:38 -0800</bug_when>
    <thetext>Created attachment 361441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504008</commentid>
    <comment_count>5</comment_count>
      <attachid>361441</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-02-07 16:38:29 -0800</bug_when>
    <thetext>Comment on attachment 361441
Patch

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

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUTextureMetal.mm:66
&gt; +        if (usage &amp; MTLTextureUsageShaderWrite)

I&apos;m not sure if we should be testing for the MTL form or the GPUTextureUsage::Storage flag. I think the latter makes more sense.

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUTextureMetal.mm:75
&gt; +    return usage;

Should it be an error (nullopt) to return unknown?

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUTextureMetal.mm:110
&gt; +    auto usage = mtlTextureUsageForGPUTextureUsageFlags(descriptor.usage);
&gt; +    if (!usage) {

Yeah, so here.... if we&apos;re usage type unknown, should we error?

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPUTextureMetal.mm:111
&gt; +        LOG(WebGPU, &quot;%s: Invalid GPUTextureUsageFlags!&quot;);

You forgot functionName. Surprised it compiled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504051</commentid>
    <comment_count>6</comment_count>
      <attachid>361474</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-02-07 17:32:28 -0800</bug_when>
    <thetext>Created attachment 361474
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504063</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-07 18:00:55 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 361474:

media/modern-media-controls/compact-media-controls/compact-media-controls-constructor.html bug 193587 (author: graouts@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504065</commentid>
    <comment_count>8</comment_count>
      <attachid>361474</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-07 18:01:45 -0800</bug_when>
    <thetext>Comment on attachment 361474
Patch for landing

Clearing flags on attachment: 361474

Committed r241181: &lt;https://trac.webkit.org/changeset/241181&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504067</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-07 18:01:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361432</attachid>
            <date>2019-02-07 13:20:14 -0800</date>
            <delta_ts>2019-02-07 13:40:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194409-20190207132013.patch</filename>
            <type>text/plain</type>
            <size>30605</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA4NDBjNjBkYWZhNzA2
ZDUxNDU1MDgxZmM2MTg5NGY5MGZjZmM3OS4uNDg4NjM0MjcwYmUxZWQ1Yjk3NzZkNjRjNjJhZTcy
Y2Q5YjAwZGNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE5LTAyLTA3ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBHUFVdIEdQVURl
dmljZTo6Y3JlYXRlVGV4dHVyZSBpbXBsZW1lbnRhdGlvbiBwcm90b3R5cGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQwOQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNDc4OTQzMTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdDogdGV4dHVyZXMtdGV4dHVyZXZpZXdzLmh0bWwgdXBkYXRlZCB0
byB0ZXN0IG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIEltcGxlbWVudCBHUFVEZXZpY2U6
OmNyZWF0ZVRleHR1cmUoKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVUZXh0dXJlIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVVGV4dHVyZTo6Y3Jl
YXRlKTogTW9kaWZpZWQgdG8gcmV0dXJuIG5vbi1udWxsYWJsZSB0byBtYXRjaCBkaXJlY3Rpb24g
b2YgQVBJLgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVVGV4dHVyZTo6V2ViR1BVVGV4dHVyZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oOgorCisgICAgICAgIE1l
dGFsIGJhY2tlbmQgTVRMVGV4dHVyZURlc2NyaXB0b3IgYW5kIE1UTFRleHR1cmUgY3JlYXRpb246
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHUFVEZXZpY2U6OnRyeUNyZWF0ZVRleHR1cmUgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW06CisgICAgICAgIChXZWJDb3JlOjptdGxUZXh0dXJl
VHlwZUZvckdQVVRleHR1cmVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Om10bFRleHR1
cmVVc2FnZUZvckdQVVRleHR1cmVVc2FnZUZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OnN0b3Jh
Z2VNb2RlRm9yUGl4ZWxGb3JtYXRBbmRTYW1wbGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjp0
cnlDcmVhdGVNdGxUZXh0dXJlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpHUFVUZXh0
dXJlOjp0cnlDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVVGV4dHVyZTo6Y3JlYXRlRGVm
YXVsdFRleHR1cmVWaWV3KTogQWRkIE9iakMgdHJ5L2NhdGNoIGd1YXJkcy4KKworICAgICAgICBB
ZGQgR1BVVXRpbHMuaC9jcHAgZm9yIHNoYXJlZCB1dGlsaXR5IGZ1bmN0aW9uczoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVXRpbHMuaDogQWRk
ZWQuIE1vdmVkIHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQgaGVyZS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwu
bW06CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OnNldEZvcm1hdCk6CisgICAgICAg
IChXZWJDb3JlOjpwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KTogTW92
ZWQgdG8gR1BVVXRpbHMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VVV0aWxzTWV0YWwubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1UZXh0dXJl
Rm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdCk6IE1vdmVkIGhlcmUgdG8gYmUgcmVmZXJlbmNlZCBi
eSBtdWx0aXBsZSBmaWxlcy4KKwogMjAxOS0wMi0wNiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBGb3J3YXJkIEFkIENsaWNrIEF0dHJpYnV0aW9uIGRhdGEg
ZnJvbSBIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2soKSB0byBXZWJLaXQ6Ok5hdmlnYXRp
b25BY3Rpb25EYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2
aWNlLmNwcAppbmRleCA0ZGQwYTk0MjBkYmI3NmQ2MzMzMmExZTgzMDJkMDUwNDZjZDdlYzEyLi4z
YzY4MDI4NGE0OGYwYWUwZTgwOGFjNDQ4ZmVhOGQxMDgwNWMzOTJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZURlc2Ny
aXB0b3IuaCIKKyNpbmNsdWRlICJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXAuaCIKICNpbmNsdWRlICJXZWJHUFVC
aW5kR3JvdXBCaW5kaW5nLmgiCkBAIC01Miw2ICs1Myw3IEBACiAjaW5jbHVkZSAiV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgi
CiAjaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldl
YkdQVVRleHR1cmUuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC03OCw2ICs4MCwxMiBAQCBSZWZQdHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVEZXZp
Y2U6OmNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yJiYgZGVzY3JpcAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCitSZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVRGV2aWNlOjpjcmVh
dGVUZXh0dXJlKEdQVVRleHR1cmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKK3sKKyAg
ICBhdXRvIHRleHR1cmUgPSBtX2RldmljZS0+dHJ5Q3JlYXRlVGV4dHVyZShXVEZNb3ZlKGRlc2Ny
aXB0b3IpKTsKKyAgICByZXR1cm4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFdURk1vdmUodGV4dHVy
ZSkpOworfQorCiBSZWY8V2ViR1BVQmluZEdyb3VwTGF5b3V0PiBXZWJHUFVEZXZpY2U6OmNyZWF0
ZUJpbmRHcm91cExheW91dChXZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yJiYgZGVzY3Jp
cHRvcikgY29uc3QKIHsKICAgICBhdXRvIGxheW91dCA9IG1fZGV2aWNlLT50cnlDcmVhdGVCaW5k
R3JvdXBMYXlvdXQoR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciB7IGRlc2NyaXB0b3IuYmlu
ZGluZ3MgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5o
CmluZGV4IDg5OThhZDYzY2QwZjliYWFkMDZlMzI0ZjU2MDVjNGU5YTFiYWQzMjEuLjljYWUzYWU5
ODYyNjZjYzZmMGM5OTg0Yjc4NDk5M2E2OWFkNmYwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCkBAIC00Nyw3ICs0Nyw5IEBAIGNsYXNzIFdlYkdQ
VUNvbW1hbmRCdWZmZXI7CiBjbGFzcyBXZWJHUFVQaXBlbGluZUxheW91dDsKIGNsYXNzIFdlYkdQ
VVJlbmRlclBpcGVsaW5lOwogY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxlOworY2xhc3MgV2ViR1BV
VGV4dHVyZTsKIAorc3RydWN0IEdQVVRleHR1cmVEZXNjcmlwdG9yOwogc3RydWN0IFdlYkdQVUJp
bmRHcm91cERlc2NyaXB0b3I7CiBzdHJ1Y3QgV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
Owogc3RydWN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKQEAgLTYxLDYgKzYzLDcg
QEAgcHVibGljOgogICAgIGNvbnN0IEdQVURldmljZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4g
bV9kZXZpY2UuZ2V0KCk7IH0KIAogICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGNyZWF0ZUJ1ZmZl
cihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yJiYpIGNvbnN0OworICAgIFJlZjxXZWJHUFVUZXh0dXJl
PiBjcmVhdGVUZXh0dXJlKEdQVVRleHR1cmVEZXNjcmlwdG9yJiYpIGNvbnN0OwogCiAgICAgUmVm
PFdlYkdQVUJpbmRHcm91cExheW91dD4gY3JlYXRlQmluZEdyb3VwTGF5b3V0KFdlYkdQVUJpbmRH
cm91cExheW91dERlc2NyaXB0b3ImJikgY29uc3Q7CiAgICAgUmVmPFdlYkdQVVBpcGVsaW5lTGF5
b3V0PiBjcmVhdGVQaXBlbGluZUxheW91dChXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3Im
JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
LmlkbAppbmRleCAyYzg2YjNjODBiMGIxYjI4NDk1ZGI0OWE4ZWZhZjlmYTFkYzBkNzE0Li44MzQy
YTVkMGFiYjVjNTE4MGMyM2M0YTUxOGI0Y2U2ZjkxOGE4Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwKQEAgLTMyLDYgKzMyLDcgQEAKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgV2ViR1BVQWRhcHRlciBhZGFwdGVyOwogCiAgICAgV2ViR1BV
QnVmZmVyIGNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwor
ICAgIFdlYkdQVVRleHR1cmUgY3JlYXRlVGV4dHVyZShHUFVUZXh0dXJlRGVzY3JpcHRvciBkZXNj
cmlwdG9yKTsKIAogICAgIFdlYkdQVUJpbmRHcm91cExheW91dCBjcmVhdGVCaW5kR3JvdXBMYXlv
dXQoV2ViR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKICAgICBXZWJH
UFVQaXBlbGluZUxheW91dCBjcmVhdGVQaXBlbGluZUxheW91dChXZWJHUFVQaXBlbGluZUxheW91
dERlc2NyaXB0b3IgZGVzY3JpcHRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVRleHR1cmUuY3BwCmluZGV4IDlkOWQ3Zjk2M2JkMmU5MTU3ZDg1Y2RkMzdjMTgz
MDllMjYzNmNhZDEuLmQ1ZDNiZTZjYTkzNjM1ZWRiMjI3NDkxM2E3Y2MxYThjNDc0M2FhYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCkBA
IC0zMiwxMiArMzIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BV
VGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFJlZlB0cjxHUFVUZXh0dXJlPiYmIHRleHR1
cmUpCitSZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFJlZlB0cjxHUFVU
ZXh0dXJlPiYmIHRleHR1cmUpCiB7Ci0gICAgcmV0dXJuIHRleHR1cmUgPyBhZG9wdFJlZihuZXcg
V2ViR1BVVGV4dHVyZSh0ZXh0dXJlLnJlbGVhc2VOb25OdWxsKCkpKSA6IG51bGxwdHI7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKSk7CiB9
CiAKLVdlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUoUmVmPEdQVVRleHR1cmU+JiYgdGV4dHVy
ZSkKK1dlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUoUmVmUHRyPEdQVVRleHR1cmU+JiYgdGV4
dHVyZSkKICAgICA6IG1fdGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oCmluZGV4IDExYzA4ZGU0ZDI1
ZGMyY2JkZWQ5NDE4YjU1YWM3MjViOTEzNjdlNTUuLmM1OTBiZGY2OTQyZDdiOWJmZmZkMWU3MmI2
MTI4OWJkODBkMzliMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlLmgKQEAgLTM4LDE0ICszOCwxNCBAQCBjbGFzcyBXZWJHUFVUZXh0dXJlVmlldzsK
IAogY2xhc3MgV2ViR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVRleHR1cmU+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVRleHR1cmU+IGNyZWF0ZShSZWZQ
dHI8R1BVVGV4dHVyZT4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJlPiBjcmVhdGUo
UmVmUHRyPEdQVVRleHR1cmU+JiYpOwogCiAgICAgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBj
cmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJH
UFVUZXh0dXJlKFJlZjxHUFVUZXh0dXJlPiYmKTsKKyAgICBleHBsaWNpdCBXZWJHUFVUZXh0dXJl
KFJlZlB0cjxHUFVUZXh0dXJlPiYmKTsKIAotICAgIFJlZjxHUFVUZXh0dXJlPiBtX3RleHR1cmU7
CisgICAgUmVmUHRyPEdQVVRleHR1cmU+IG1fdGV4dHVyZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDA3MjIyODhkYTFjODkzNWE3OGY3
ZTE5MjA5NmE3YWQ4NTcyZTgwNDMuLjg1M2IxOGE5MTFjNGZmNDU2Y2IwZjNmMzNhMTgwNTliMGNl
ODllM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzMxLDYgKzMzMSw3IEBAIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVV0aWxzTWV0YWwubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMWRjZDk2NzBiOTlkMmVm
ODMzOGY4MjliMjk0NDcxZTI3Zjg1YTVmLi40ZGM0NjkxODJiZDkwNDUxYzY3YzYyN2RhODE4ODQw
MTNlNzhlYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNDA1OCw2ICsxNDA1OCw4IEBACiAJCUQwNkE5QTIxMjIwMjZDN0Ew
MDgzQzY2MiAvKiBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BV
UmVxdWVzdEFkYXB0ZXJPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQw
NkMwRDhEMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21tYW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW92ZUZvcm1hdENvbW1hbmQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2QzBEOEUwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZv
cm1hdENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3ZlRm9ybWF0Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwNkVG
NTUyMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVVdGls
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDZFRjU1MzIyMEJBMjZBMDAxODcy
NEUgLyogR1BVVXRpbHNNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVV0aWxzTWV0
YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwN0RFQUI3MEEzNjU1NEEwMENB
MzBGOCAvKiBJbnNlcnRMaXN0Q29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5zZXJ0TGlzdENvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMDdERUFCODBBMzY1NTRBMDBDQTMwRjggLyogSW5zZXJ0TGlzdENvbW1hbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc2VydExpc3RDb21tYW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwODNEOTg0MjFDNDgwNTAwMDhFOEVGRiAvKiBH
UFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91
cExheW91dERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NDkw
LDYgKzE4NDkyLDcgQEAKIAkJCQlEMDI2RjQ4NjIyMEE1MDU5MDBBQzVGNDkgLyogR1BVVGV4dHVy
ZURpbWVuc2lvbi5oICovLAogCQkJCTMxMkZGOEMzMjFBNEMyRjMwMEVCMTk5RCAvKiBHUFVUZXh0
dXJlRm9ybWF0LmggKi8sCiAJCQkJRDAyNkY0ODUyMjBBNDc3MjAwQUM1RjQ5IC8qIEdQVVRleHR1
cmVVc2FnZS5oICovLAorCQkJCUQwNkVGNTUyMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVVdGlscy5o
ICovLAogCQkJCUQwRDg2NDlCMjFCQTFDMkQwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhBdHRyaWJ1dGVE
ZXNjcmlwdG9yLmggKi8sCiAJCQkJRDBEODY0OUMyMUJBMUNFODAwM0M5ODNDIC8qIEdQVVZlcnRl
eElucHV0RGVzY3JpcHRvci5oICovLAogCQkJCTQ5ODc3MEQ3MTI0MkM1MzUwMDIyMjZCQSAvKiBU
ZXh0dXJlLmNwcCAqLywKQEAgLTI2MTc1LDYgKzI2MTc4LDcgQEAKIAkJCQlEMDg3Q0U0MDIxQUNB
OTQyMDBCREUxNzQgLyogR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0gKi8sCiAJCQkJRDA4N0NFM0Uy
MUFDQTk0MjAwQkRFMTc0IC8qIEdQVVN3YXBDaGFpbk1ldGFsLm1tICovLAogCQkJCUQwODdDRTNG
MjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVUZXh0dXJlTWV0YWwubW0gKi8sCisJCQkJRDA2RUY1NTMy
MjBCQTI2QTAwMTg3MjRFIC8qIEdQVVV0aWxzTWV0YWwubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAKaW5kZXggNDE1MjRhNTg3ZGFj
MWU4YWFmNDA3YzhiOTI3NjRlMmZmYjZlZTMzNS4uMTYzNTFlODBmZTdjZGNhZDRhYmQ0MzRmMTZk
OTY2NWEyNDY5MDMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVURldmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVURldmljZS5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGUuaCIKICNp
bmNsdWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiR1BVVGV4dHVy
ZS5oIgorI2luY2x1ZGUgIkdQVVRleHR1cmVEZXNjcmlwdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDcsNiArNDksMTEgQEAgUmVmUHRyPEdQVUJ1ZmZlcj4gR1BVRGV2aWNlOjpj
cmVhdGVCdWZmZXIoR1BVQnVmZmVyRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnMKICAgICBy
ZXR1cm4gR1BVQnVmZmVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZGVzY3JpcHRvcikpOwogfQog
CitSZWZQdHI8R1BVVGV4dHVyZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVUZXh0dXJlKEdQVVRleHR1
cmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKK3sKKyAgICByZXR1cm4gR1BVVGV4dHVy
ZTo6dHJ5Q3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKK30KKwogUmVmUHRyPEdQ
VUJpbmRHcm91cExheW91dD4gR1BVRGV2aWNlOjp0cnlDcmVhdGVCaW5kR3JvdXBMYXlvdXQoR1BV
QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIEdQVUJpbmRHcm91cExheW91dDo6dHJ5Q3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0
b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZp
Y2UuaAppbmRleCA5YzliNTk3N2E0YTAyYjE3NjE5MWFlNzNkZWM1ZTE1MzdkNTc1MTBhLi40NTZl
Yjg0NTVkZDRlNTY0YzQ1MzJiZDNiMmMzZmQ2MjcxYjU5YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oCkBAIC00Niw2ICs0Niw3IEBA
IGNsYXNzIEdQVUNvbW1hbmRCdWZmZXI7CiBjbGFzcyBHUFVQaXBlbGluZUxheW91dDsKIGNsYXNz
IEdQVVJlbmRlclBpcGVsaW5lOwogY2xhc3MgR1BVU2hhZGVyTW9kdWxlOworY2xhc3MgR1BVVGV4
dHVyZTsKIAogc3RydWN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3I7CiBzdHJ1Y3QgR1BV
QnVmZmVyRGVzY3JpcHRvcjsKQEAgLTUzLDEyICs1NCwxNCBAQCBzdHJ1Y3QgR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yOwogc3RydWN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKIHN0
cnVjdCBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM7CiBzdHJ1Y3QgR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvcjsKK3N0cnVjdCBHUFVUZXh0dXJlRGVzY3JpcHRvcjsKIAogY2xhc3MgR1BVRGV2aWNl
IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVRGV2aWNlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZlB0cjxHUFVEZXZpY2U+IGNyZWF0ZShPcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+
JiYpOwogCiAgICAgUmVmUHRyPEdQVUJ1ZmZlcj4gY3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2Ny
aXB0b3ImJikgY29uc3Q7CisgICAgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNyZWF0ZVRleHR1cmUo
R1BVVGV4dHVyZURlc2NyaXB0b3ImJikgY29uc3Q7CiAKICAgICBSZWZQdHI8R1BVQmluZEdyb3Vw
TGF5b3V0PiB0cnlDcmVhdGVCaW5kR3JvdXBMYXlvdXQoR1BVQmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvciYmKSBjb25zdDsKICAgICBSZWY8R1BVUGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZVBpcGVsaW5l
TGF5b3V0KEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciYmKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oCmluZGV4IDY5NTMx
NTVhN2EyYjg5MTJjZjE4OWNkZTYyYjhmZWUzNDI5NWFkMjkuLjUwMmIxMmJiODc5NzcwNTYxOTkz
NmFiMjBkMWZlZjc3OGY1YTRjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaApAQCAtMzUsMTEgKzM1LDE2IEBAIE9CSkNfUFJPVE9D
T0woTVRMVGV4dHVyZSk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR1BVRGV2aWNl
OworCitzdHJ1Y3QgR1BVVGV4dHVyZURlc2NyaXB0b3I7CisKIHVzaW5nIFBsYXRmb3JtVGV4dHVy
ZSA9IE1UTFRleHR1cmU7CiB1c2luZyBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciA9IFJldGFpblB0
cjxNVExUZXh0dXJlPjsKIAogY2xhc3MgR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQ
VVRleHR1cmU+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNy
ZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBHUFVUZXh0dXJlRGVzY3JpcHRvciYmKTsKICAgICBzdGF0
aWMgUmVmPEdQVVRleHR1cmU+IGNyZWF0ZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmKTsKIAog
ICAgIFBsYXRmb3JtVGV4dHVyZSAqcGxhdGZvcm1UZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9w
bGF0Zm9ybVRleHR1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVV0aWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI5MzVhMGI3OGQ4YzIzOWMxODE3ZTBl
NmQxYjI3Mzg2ZTEzYzY2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVVdGlscy5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVUZXh0
dXJlRm9ybWF0LmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworT3B0aW9uYWw8UGxhdGZvcm1UZXh0dXJlRm9ybWF0PiBwbGF0Zm9ybVRleHR1cmVG
b3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KEdQVVRleHR1cmVGb3JtYXQpOworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFs
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVN3YXBD
aGFpbk1ldGFsLm1tCmluZGV4IGY0OGRmNDFhZDVhZDVmMTY5ZTc0MGQxNGUzODQ1ZWQyZTg4YTNj
NjMuLjY5ODJiMDE4YzdmZTNkYTFhZDYxNjMzNDgzNTdjMWU1NWYyOTFhOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5N
ZXRhbC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2Ev
R1BVU3dhcENoYWluTWV0YWwubW0KQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgIkdQVURldmlj
ZS5oIgogI2ltcG9ydCAiR1BVVGV4dHVyZS5oIgogI2ltcG9ydCAiR1BVVGV4dHVyZUZvcm1hdC5o
IgorI2ltcG9ydCAiR1BVVXRpbHMuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIldl
YkdQVUxheWVyLmgiCi0KICNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CiAjaW1wb3J0IDxRdWFydHpD
b3JlL1F1YXJ0ekNvcmUuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CkBA
IC04MCwyOCArODAsMTMgQEAgdm9pZCBHUFVTd2FwQ2hhaW46OnNldERldmljZShjb25zdCBHUFVE
ZXZpY2UmIGRldmljZSkKICAgICBbbV9wbGF0Zm9ybVN3YXBMYXllciBzZXREZXZpY2U6ZGV2aWNl
LnBsYXRmb3JtRGV2aWNlKCldOwogfQogCi1zdGF0aWMgT3B0aW9uYWw8UGxhdGZvcm1UZXh0dXJl
Rm9ybWF0PiBwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KEdQVVRleHR1
cmVGb3JtYXQgZm9ybWF0KQotewotICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHUFVU
ZXh0dXJlRm9ybWF0OjpSOGc4YjhhOFVub3JtOgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3Jt
YXRSR0JBOFVub3JtOwotICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6UjhnOGI4YThVaW50Ogot
ICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRSR0JBOFVpbnQ7Ci0gICAgY2FzZSBHUFVUZXh0
dXJlRm9ybWF0OjpCOGc4cjhhOFVub3JtOgotICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRC
R1JBOFVub3JtOwotICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6RDMyRmxvYXRTOFVpbnQ6Ci0g
ICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdERlcHRoMzJGbG9hdF9TdGVuY2lsODsKLSAgICBk
ZWZhdWx0OgotICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENoYWluOjpzZXRGb3JtYXQoKTog
SW52YWxpZCB0ZXh0dXJlIGZvcm1hdCBzcGVjaWZpZWQhIik7Ci0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0gICAgfQotfQotCiB2b2lkIEdQVVN3YXBDaGFpbjo6c2V0Rm9ybWF0KEdQVVRl
eHR1cmVGb3JtYXQgZm9ybWF0KQogewogICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1UZXh0dXJl
Rm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChmb3JtYXQpOwotICAgIGlmICghcmVzdWx0KQorICAg
IGlmICghcmVzdWx0KSB7CisgICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2FwQ2hhaW46OnNldEZv
cm1hdCgpOiBJbnZhbGlkIHRleHR1cmUgZm9ybWF0IHNwZWNpZmllZCEiKTsKICAgICAgICAgcmV0
dXJuOworICAgIH0KIAogICAgIGF1dG8gbXRsUmVzdWx0ID0gc3RhdGljX2Nhc3Q8TVRMUGl4ZWxG
b3JtYXQ+KHJlc3VsdC52YWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KaW5kZXgg
NWNiYzFmOTViNjk2NDE2ZjJkNjNjZDMwYzQ1ZDc0ZWRlNDVlMWU2ZC4uOGVhZTUyNDkxMTQxOTlj
MzFhMjUzODRjZTFlZDVkNjdmZTdjNWFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVyZU1ldGFsLm1tCkBA
IC0yOCwxMyArMjgsMTQ4IEBACiAKICNpZiBFTkFCTEUoV0VCR1BVKQogCisjaW1wb3J0ICJHUFVE
ZXZpY2UuaCIKKyNpbXBvcnQgIkdQVVRleHR1cmVEZXNjcmlwdG9yLmgiCisjaW1wb3J0ICJHUFVV
dGlscy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgotCiAjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgog
I2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9PcHRpb25h
bC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBPcHRpb25hbDxNVExUZXh0dXJl
VHlwZT4gbXRsVGV4dHVyZVR5cGVGb3JHUFVUZXh0dXJlRGVzY3JpcHRvcihjb25zdCBHUFVUZXh0
dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICBzd2l0Y2ggKGRlc2NyaXB0b3IuZGlt
ZW5zaW9uKSB7CisgICAgY2FzZSBHUFVUZXh0dXJlRGltZW5zaW9uOjpfMWQ6CisgICAgICAgIHJl
dHVybiAoZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgPT0gMSkgPyBNVExUZXh0dXJlVHlwZTFE
IDogTVRMVGV4dHVyZVR5cGUxREFycmF5OworICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6
XzJkOiB7CisgICAgICAgIGlmIChkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCA9PSAxKQorICAg
ICAgICAgICAgcmV0dXJuIChkZXNjcmlwdG9yLnNhbXBsZUNvdW50ID09IDEpID8gTVRMVGV4dHVy
ZVR5cGUyRCA6IE1UTFRleHR1cmVUeXBlMkRNdWx0aXNhbXBsZUFycmF5OworCisgICAgICAgIHJl
dHVybiBNVExUZXh0dXJlVHlwZTJEQXJyYXk7CisgICAgfQorICAgIGNhc2UgR1BVVGV4dHVyZURp
bWVuc2lvbjo6XzNkOgorICAgICAgICByZXR1cm4gTVRMVGV4dHVyZVR5cGUzRDsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KK30KKworc3RhdGljIE9w
dGlvbmFsPE1UTFRleHR1cmVVc2FnZT4gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdl
RmxhZ3MoR1BVVGV4dHVyZVVzYWdlRmxhZ3MgZmxhZ3MpCit7CisgICAgTVRMVGV4dHVyZVVzYWdl
IHVzYWdlID0gTVRMVGV4dHVyZVVzYWdlVW5rbm93bjsKKworICAgIGlmIChmbGFncyAmIEdQVVRl
eHR1cmVVc2FnZTo6U3RvcmFnZSkKKyAgICAgICAgdXNhZ2UgfD0gTVRMVGV4dHVyZVVzYWdlU2hh
ZGVyV3JpdGUgfCBNVExUZXh0dXJlVXNhZ2VTaGFkZXJSZWFkIHwgTVRMVGV4dHVyZVVzYWdlUGl4
ZWxGb3JtYXRWaWV3OworCisgICAgaWYgKGZsYWdzICYgR1BVVGV4dHVyZVVzYWdlOjpTYW1wbGVk
KSB7CisgICAgICAgIC8vIFNBTVBMRUQgaXMgYSByZWFkLW9ubHkgdXNhZ2UuCisgICAgICAgIGlm
ICh1c2FnZSAmIE1UTFRleHR1cmVVc2FnZVNoYWRlcldyaXRlKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgICAgICB1c2FnZSB8PSBNVExUZXh0dXJlVXNhZ2VTaGFkZXJS
ZWFkIHwgTVRMVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3OworICAgIH0KKworICAgIGlmIChm
bGFncyAmIEdQVVRleHR1cmVVc2FnZTo6T3V0cHV0QXR0YWNobWVudCkKKyAgICAgICAgdXNhZ2Ug
fD0gTVRMVGV4dHVyZVVzYWdlUmVuZGVyVGFyZ2V0OworCisgICAgcmV0dXJuIHVzYWdlOworfQor
CitzdGF0aWMgTVRMU3RvcmFnZU1vZGUgc3RvcmFnZU1vZGVGb3JQaXhlbEZvcm1hdEFuZFNhbXBs
ZUNvdW50KE1UTFBpeGVsRm9ybWF0IGZvcm1hdCwgdW5zaWduZWQgbG9uZyBzYW1wbGVzKQorewor
ICAgIC8vIERlcHRoLCBTdGVuY2lsLCBEZXB0aFN0ZW5jaWwsIGFuZCBNdWx0aXNhbXBsZSB0ZXh0
dXJlcyBtdXN0IGJlIGFsbG9jYXRlZCB3aXRoIHRoZSBNVExTdG9yYWdlTW9kZVByaXZhdGUgcmVz
b3VyY2Ugb3B0aW9uLgorICAgIGlmIChmb3JtYXQgPT0gTVRMUGl4ZWxGb3JtYXREZXB0aDMyRmxv
YXRfU3RlbmNpbDggfHwgc2FtcGxlcyA+IDEpCisgICAgICAgIHJldHVybiBNVExTdG9yYWdlTW9k
ZVByaXZhdGU7CisKKyAgICByZXR1cm4gTVRMU3RvcmFnZU1vZGVNYW5hZ2VkOworfQorCitzdGF0
aWMgUmV0YWluUHRyPE1UTFRleHR1cmVEZXNjcmlwdG9yPiB0cnlDcmVhdGVNdGxUZXh0dXJlRGVz
Y3JpcHRvcihjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIGNvbnN0IEdQVVRleHR1cmVE
ZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKK3sKKyAgICBSZXRhaW5QdHI8TVRMVGV4dHVyZURlc2Ny
aXB0b3I+IG10bERlc2NyaXB0b3I7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
CisKKyAgICBtdGxEZXNjcmlwdG9yID0gYWRvcHROUyhbTVRMVGV4dHVyZURlc2NyaXB0b3IgbmV3
XSk7CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgaWYgKCFtdGxEZXNj
cmlwdG9yKSB7CisgICAgICAgIExPRyhXZWJHUFUsICIlczogVW5hYmxlIHRvIGNyZWF0ZSBuZXcg
TVRMVGV4dHVyZURlc2NyaXB0b3IhIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgLy8gRklYTUU6IEFkZCBtb3JlIHZhbGlkYXRpb24gYXMgY29u
c3RyYWludHMgYXJlIGFkZGVkIHRvIHNwZWMuCisgICAgYXV0byB0ZXh0dXJlVHlwZSA9IG10bFRl
eHR1cmVUeXBlRm9yR1BVVGV4dHVyZURlc2NyaXB0b3IoZGVzY3JpcHRvcik7CisgICAgaWYgKCF0
ZXh0dXJlVHlwZSkgeworICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgR1BVVGV4dHVy
ZURpbWVuc2lvbiEiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0
byBwaXhlbEZvcm1hdCA9IHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQo
ZGVzY3JpcHRvci5mb3JtYXQpOworICAgIGlmICghcGl4ZWxGb3JtYXQpIHsKKyAgICAgICAgTE9H
KFdlYkdQVSwgIiVzOiBJbnZhbGlkIEdQVVRleHR1cmVGb3JtYXQhIik7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIGF1dG8gdXNhZ2UgPSBtdGxUZXh0dXJlVXNhZ2VGb3JH
UFVUZXh0dXJlVXNhZ2VGbGFncyhkZXNjcmlwdG9yLnVzYWdlKTsKKyAgICBpZiAoIXVzYWdlKSB7
CisgICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBHUFVUZXh0dXJlVXNhZ2VGbGFncyEi
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBzdG9yYWdlTW9k
ZSA9IHN0b3JhZ2VNb2RlRm9yUGl4ZWxGb3JtYXRBbmRTYW1wbGVDb3VudChzdGF0aWNfY2FzdDxN
VExQaXhlbEZvcm1hdD4oKnBpeGVsRm9ybWF0KSwgZGVzY3JpcHRvci5zYW1wbGVDb3VudCk7CisK
KyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBbbXRsRGVzY3JpcHRvciBz
ZXRXaWR0aDpkZXNjcmlwdG9yLnNpemUud2lkdGhdOworICAgIFttdGxEZXNjcmlwdG9yIHNldEhl
aWdodDpkZXNjcmlwdG9yLnNpemUuaGVpZ2h0XTsKKyAgICBbbXRsRGVzY3JpcHRvciBzZXREZXB0
aDpkZXNjcmlwdG9yLnNpemUuZGVwdGhdOworICAgIFttdGxEZXNjcmlwdG9yIHNldEFycmF5TGVu
Z3RoOmRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50XTsKKyAgICBbbXRsRGVzY3JpcHRvciBzZXRN
aXBtYXBMZXZlbENvdW50OmRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudF07CisgICAgW210bERlc2Ny
aXB0b3Igc2V0U2FtcGxlQ291bnQ6ZGVzY3JpcHRvci5zYW1wbGVDb3VudF07CisgICAgW210bERl
c2NyaXB0b3Igc2V0VGV4dHVyZVR5cGU6KnRleHR1cmVUeXBlXTsKKyAgICBbbXRsRGVzY3JpcHRv
ciBzZXRQaXhlbEZvcm1hdDpzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4oKnBpeGVsRm9ybWF0
KV07CisgICAgW210bERlc2NyaXB0b3Igc2V0VXNhZ2U6KnVzYWdlXTsKKworICAgIFttdGxEZXNj
cmlwdG9yIHNldFN0b3JhZ2VNb2RlOnN0b3JhZ2VNb2RlXTsKKworICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CisKKyAgICByZXR1cm4gbXRsRGVzY3JpcHRvcjsKK30KKworUmVmUHRyPEdQ
VVRleHR1cmU+IEdQVVRleHR1cmU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwg
R1BVVGV4dHVyZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQoreworICAgIGNvbnN0IGNoYXIqIGNv
bnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVUZXh0dXJlOjp0cnlDcmVhdGUoKSI7CisKKyAgICBpZiAo
IWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7CisgICAgICAgIExPRyhXZWJHUFUsICIlczogSW52
YWxpZCBHUFVEZXZpY2UhIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgYXV0byBtdGxEZXNjcmlwdG9yID0gdHJ5Q3JlYXRlTXRsVGV4dHVyZURl
c2NyaXB0b3IoZnVuY3Rpb25OYW1lLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKKyAgICBpZiAoIW10
bERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmV0YWluUHRyPE1U
TFRleHR1cmU+IG10bFRleHR1cmU7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
CisKKyAgICBtdGxUZXh0dXJlID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3
VGV4dHVyZVdpdGhEZXNjcmlwdG9yOm10bERlc2NyaXB0b3IuZ2V0KCldKTsKKworICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBpZiAoIW10bFRleHR1cmUpIHsKKyAgICAgICAg
TE9HKFdlYkdQVSwgIiVzOiBVbmFibGUgdG8gY3JlYXRlIE1UTFRleHR1cmUhIiwgZnVuY3Rpb25O
YW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBHUFVUZXh0dXJlKFdURk1vdmUobXRsVGV4dHVyZSkpKTsKK30KKwogUmVmPEdQVVRl
eHR1cmU+IEdQVVRleHR1cmU6OmNyZWF0ZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmIHRleHR1
cmUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVVGV4dHVyZShXVEZNb3ZlKHRleHR1
cmUpKSk7CkBAIC00OSw4ICsxODQsMTIgQEAgUmVmUHRyPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6
OmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpCiB7CiAgICAgUmV0YWluUHRyPE1UTFRleHR1cmU+
IHRleHR1cmU7CiAKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKICAgICB0ZXh0
dXJlID0gYWRvcHROUyhbbV9wbGF0Zm9ybVRleHR1cmUgbmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxG
b3JtYXQ6bV9wbGF0Zm9ybVRleHR1cmUuZ2V0KCkucGl4ZWxGb3JtYXRdKTsKIAorICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CisKICAgICBpZiAoIXRleHR1cmUpIHsKICAgICAgICAgTE9H
KFdlYkdQVSwgIkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpOiBVbmFibGUg
dG8gY3JlYXRlIE1UTFRleHR1cmUgdmlldyEiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
VXRpbHNNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVVdGlsc01ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2Y2U4MTcxYTI2Njc4MzBmNTNjYmNkNzc3
NDA3ZmRlZDRjOTllODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVXRpbHNNZXRhbC5tbQpAQCAtMCwwICsxLDUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVVdGlscy5oIgorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitPcHRpb25hbDxQbGF0Zm9ybVRleHR1cmVGb3JtYXQ+IHBsYXRmb3JtVGV4
dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQoR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQpCit7
CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OlI4Zzhi
OGE4VW5vcm06CisgICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdFJHQkE4VW5vcm07CisgICAg
Y2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSOGc4YjhhOFVpbnQ6CisgICAgICAgIHJldHVybiBNVExQ
aXhlbEZvcm1hdFJHQkE4VWludDsKKyAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OkI4ZzhyOGE4
VW5vcm06CisgICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm07CisgICAgY2Fz
ZSBHUFVUZXh0dXJlRm9ybWF0OjpEMzJGbG9hdFM4VWludDoKKyAgICAgICAgcmV0dXJuIE1UTFBp
eGVsRm9ybWF0RGVwdGgzMkZsb2F0X1N0ZW5jaWw4OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ4YTM5NzRmYTZlNmZlNzAzNmRiODYw
NjQ2Njk5ZTk0ODBmMjhmYjMuLjIxZjZkZTY4NDdhNTQwN2Q0MzdiYjA1NmQzNzFiMjQwNmQ2ZmU0
YzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0wMi0wNyAgSnVzdGluIEZhbiAgPGp1c3Rp
bl9mYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWIgR1BVXSBHUFVEZXZpY2U6OmNyZWF0ZVRl
eHR1cmUgaW1wbGVtZW50YXRpb24gcHJvdG90eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ0MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3
ODk0MzEyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSB0ZXh0dXJlcy10ZXh0dXJldmlld3MuaHRtbCB0byBXUFQgZm9ybWF0IGFuZCB0byB0
ZXN0IGNyZWF0aW9uIG9mIHRleHR1cmVzIHZpYSB0aGUgR1BVRGV2aWNlLgorCisgICAgICAgICog
d2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2Vi
Z3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy5odG1sOgorCiAyMDE5LTAyLTA2ICBKdXN0aW4gRmFu
ICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBHUFVdIEltcGxlbWVudCBz
dXBwb3J0aW5nIGRpY3Rpb25hcmllcyBmb3IgR1BVVGV4dHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLWV4cGVjdGVkLnR4dAppbmRleCA2MjAz
Y2MxODFiZDhlMzg2MmFmYTJkZDc4ZDU1MDk2OTQ1NzMxNmE3Li44MmU3MGQ4MTE4NjVmYjFkOWJh
N2IwZjgwZDVkODdjYTY1N2M1MGZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4
dHVyZXMtdGV4dHVyZXZpZXdzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUv
dGV4dHVyZXMtdGV4dHVyZXZpZXdzLWV4cGVjdGVkLnR4dApAQCAtMSw4ICsxLDYgQEAKLVBBU1Mg
W29iamVjdCBXZWJHUFVdIGlzIGRlZmluZWQuCi1QQVNTIEFjcXVpcmVkIG5leHQgV2ViR1BVVGV4
dHVyZSBmcm9tIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuCi1QQVNTIENyZWF0ZWQgZGVmYXVsdCBX
ZWJHUFVUZXh0dXJlVmlldyBmcm9tIGEgV2ViR1BVVGV4dHVyZQotQWxsIHRlc3RzIGNvbXBsZXRl
LgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCi1URVNUIENPTVBMRVRFCitQQVNT
IENyZWF0ZSB0ZXh0dXJlIHZpZXcgZnJvbSBzd2FwIGNoYWluLiAKK1BBU1MgQ3JlYXRlIGJhc2lj
IGRlcHRoIHRleHR1cmUgZnJvbSBkZXZpY2UuIAorUEFTUyBDcmVhdGUgYmFzaWMgNHggbXVsdGlz
YW1wbGVkIHRleHR1cmUuIAorUEFTUyBDcmVhdGUgYmFzaWMgM0QgdGV4dHVyZSBmcm9tIGRldmlj
ZS4gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmll
d3MuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MuaHRtbApp
bmRleCA3ZGRiNGFjOTY0MDgzYjIwNjUzYWQxZjdkZDkwOWE1NDBmZDNkN2IxLi45NzI2Y2I2NjEz
MjFiZTE5Yzg1M2JiMDA3NDVlZjk5NzFlZjZkZGVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93
ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1
L3RleHR1cmVzLXRleHR1cmV2aWV3cy5odG1sCkBAIC0xLDM0ICsxLDY2IEBACi08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ianMvYmFzaWMtd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9z
Y3JpcHQ+Cis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1l
bnRhbDpXZWJHUFVFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0
bGU+QmFzaWMgR1BVVGV4dHVyZSBUZXN0cy48L3RpdGxlPgorPGJvZHk+Cis8Y2FudmFzIHdpZHRo
PSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KKzxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVu
Y3Rpb25zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
IHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQotZnVuY3Rpb24gc2V0VXBOZXh0VGV4
dHVyZVZpZXcoKSB7Ci0gICAgbGV0IHRleHR1cmUgPSBjb250ZXh0LmdldE5leHRUZXh0dXJlKCk7
Ci0gICAgaWYgKHRleHR1cmUpCi0gICAgICAgIHRlc3RQYXNzZWQoIkFjcXVpcmVkIG5leHQgV2Vi
R1BVVGV4dHVyZSBmcm9tIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuIik7Ci0gICAgZWxzZSB7Ci0g
ICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBnZXQgbmV4dCBXZWJHUFVUZXh0dXJlIGZyb20g
V2ViR1BVUmVuZGVyaW5nQ29udGV4dCEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGxldCB0ZXh0dXJlVmlldyA9IHRleHR1cmUuY3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk7Ci0g
ICAgaWYgKHRleHR1cmVWaWV3KSAKLSAgICAgICAgdGVzdFBhc3NlZCgiQ3JlYXRlZCBkZWZhdWx0
IFdlYkdQVVRleHR1cmVWaWV3IGZyb20gYSBXZWJHUFVUZXh0dXJlIik7Ci0gICAgZWxzZSB7Ci0g
ICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgZGVmYXVsdCBXZWJHUFVUZXh0dXJl
VmlldyEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotLy8gRklYTUU6IEFkZCB0ZXN0
cyBmb3IgZGV2aWNlLmNyZWF0ZVRleHR1cmUsIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLCBhbmQg
V2ViR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLgotCi1ydW5XZWJHUFVUZXN0cyhbc2V0VXBOZXh0
VGV4dHVyZVZpZXddKTsKLQotc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK2NvbnN0IGNhbnZh
cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOyAgICAKK2xldCBkZXZpY2UsIGNv
bnRleHQ7CisKK2xldCB0ZXhTaXplID0geworICAgIHdpZHRoOiBjYW52YXMud2lkdGgsCisgICAg
aGVpZ2h0OiBjYW52YXMuaGVpZ2h0LAorICAgIGRlcHRoOiAxCit9OworCitsZXQgdGV4RGVzY3Jp
cHRvciA9IHsKKyAgICBzaXplOiB0ZXhTaXplLAorICAgIGFycmF5TGF5ZXJDb3VudDogMSwKKyAg
ICBtaXBMZXZlbENvdW50OiAxLAorICAgIHNhbXBsZUNvdW50OiAxLAorICAgIGRpbWVuc2lvbjog
IjJkIiwKKyAgICBmb3JtYXQ6ICJkMzItZmxvYXQtczgtdWludCIsCisgICAgdXNhZ2U6IEdQVVRl
eHR1cmVVc2FnZS5PVVRQVVRfQVRUQUNITUVOVAorfTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICgp
ID0+IHsKKyAgICBkZXZpY2UgPSBhd2FpdCBnZXRCYXNpY0RldmljZSgpOworICAgIGNvbnRleHQg
PSBjcmVhdGVCYXNpY0NvbnRleHQoY2FudmFzLCBkZXZpY2UpOworCisgICAgY29uc3QgdGV4dHVy
ZSA9IGNvbnRleHQuZ2V0TmV4dFRleHR1cmUoKTsKKyAgICBhc3NlcnRfdHJ1ZSh0ZXh0dXJlIGlu
c3RhbmNlb2YgV2ViR1BVVGV4dHVyZSwgIlN1Y2Nlc3NmdWxseSBhY3F1aXJlZCBuZXh0IHRleHR1
cmUuIik7CisKKyAgICBjb25zdCB0ZXh0dXJlVmlldyA9IHRleHR1cmUuY3JlYXRlRGVmYXVsdFRl
eHR1cmVWaWV3KCk7CisgICAgYXNzZXJ0X3RydWUodGV4dHVyZVZpZXcgaW5zdGFuY2VvZiBXZWJH
UFVUZXh0dXJlVmlldywgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIHRleHR1cmUgdmlldyBmcm9tIG5l
eHQgdGV4dHVyZS4iKTsKK30sICJDcmVhdGUgdGV4dHVyZSB2aWV3IGZyb20gc3dhcCBjaGFpbi4i
KTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgICBjb25zdCBkZXB0aFRleHR1cmUg
PSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXhEZXNjcmlwdG9yKTsKKyAgICBhc3NlcnRfdHJ1ZShk
ZXB0aFRleHR1cmUgaW5zdGFuY2VvZiBXZWJHUFVUZXh0dXJlLCAiU3VjY2Vzc2Z1bGx5IGNyZWF0
ZWQgZGVwdGggdGV4dHVyZS4iKTsKK30sICJDcmVhdGUgYmFzaWMgZGVwdGggdGV4dHVyZSBmcm9t
IGRldmljZS4iKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgICB0ZXhEZXNjcmlw
dG9yLnNhbXBsZUNvdW50ID0gNDsKKyAgICB0ZXhEZXNjcmlwdG9yLmZvcm1hdCA9ICJyOGc4Yjhh
OC11bm9ybSI7CisgICAgdGV4RGVzY3JpcHRvci51c2FnZSA9IEdQVVRleHR1cmVVc2FnZS5TQU1Q
TEVEIHwgR1BVVGV4dHVyZVVzYWdlLlRSQU5TRkVSX1NSQworCisgICAgY29uc3QgbXVsdGlzYW1w
bGVkVGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleERlc2NyaXB0b3IpOworICAgIGFz
c2VydF90cnVlKG11bHRpc2FtcGxlZFRleHR1cmUgaW5zdGFuY2VvZiBXZWJHUFVUZXh0dXJlLCAi
U3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgbXVsdGlzYW1wbGVkIHRleHR1cmUuIik7Cit9LCAiQ3JlYXRl
IGJhc2ljIDR4IG11bHRpc2FtcGxlZCB0ZXh0dXJlLiIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMg
KCkgPT4geworICAgIHRleERlc2NyaXB0b3Iuc2l6ZS5kZXB0aCA9IDM7CisgICAgdGV4RGVzY3Jp
cHRvci5zYW1wbGVDb3VudCA9IDE7CisgICAgdGV4RGVzY3JpcHRvci5kaW1lbnNpb24gPSAiM2Qi
OworCisgICAgY29uc3QgdGV4dHVyZTNkID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4RGVzY3Jp
cHRvcik7CisgICAgYXNzZXJ0X3RydWUodGV4dHVyZTNkIGluc3RhbmNlb2YgV2ViR1BVVGV4dHVy
ZSwgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIGJhc2ljIDNEIHRleHR1cmUuIik7Cit9LCAiQ3JlYXRl
IGJhc2ljIDNEIHRleHR1cmUgZnJvbSBkZXZpY2UuIik7CisKKy8vIEZJWE1FOiBBZGQgdGVzdHMg
Zm9yIDFEIHRleHR1cmVzLCB0ZXh0dXJlQXJyYXlzLCBhbmQgV2ViR1BVVGV4dHVyZVZpZXdzLgog
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361438</attachid>
            <date>2019-02-07 13:40:17 -0800</date>
            <delta_ts>2019-02-07 14:10:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194409-20190207134016.patch</filename>
            <type>text/plain</type>
            <size>30673</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA4NDBjNjBkYWZhNzA2
ZDUxNDU1MDgxZmM2MTg5NGY5MGZjZmM3OS4uNDg4NjM0MjcwYmUxZWQ1Yjk3NzZkNjRjNjJhZTcy
Y2Q5YjAwZGNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE5LTAyLTA3ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBHUFVdIEdQVURl
dmljZTo6Y3JlYXRlVGV4dHVyZSBpbXBsZW1lbnRhdGlvbiBwcm90b3R5cGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQwOQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNDc4OTQzMTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdDogdGV4dHVyZXMtdGV4dHVyZXZpZXdzLmh0bWwgdXBkYXRlZCB0
byB0ZXN0IG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIEltcGxlbWVudCBHUFVEZXZpY2U6
OmNyZWF0ZVRleHR1cmUoKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVUZXh0dXJlIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVVGV4dHVyZTo6Y3Jl
YXRlKTogTW9kaWZpZWQgdG8gcmV0dXJuIG5vbi1udWxsYWJsZSB0byBtYXRjaCBkaXJlY3Rpb24g
b2YgQVBJLgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVVGV4dHVyZTo6V2ViR1BVVGV4dHVyZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oOgorCisgICAgICAgIE1l
dGFsIGJhY2tlbmQgTVRMVGV4dHVyZURlc2NyaXB0b3IgYW5kIE1UTFRleHR1cmUgY3JlYXRpb246
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHUFVEZXZpY2U6OnRyeUNyZWF0ZVRleHR1cmUgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW06CisgICAgICAgIChXZWJDb3JlOjptdGxUZXh0dXJl
VHlwZUZvckdQVVRleHR1cmVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Om10bFRleHR1
cmVVc2FnZUZvckdQVVRleHR1cmVVc2FnZUZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OnN0b3Jh
Z2VNb2RlRm9yUGl4ZWxGb3JtYXRBbmRTYW1wbGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjp0
cnlDcmVhdGVNdGxUZXh0dXJlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpHUFVUZXh0
dXJlOjp0cnlDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVVGV4dHVyZTo6Y3JlYXRlRGVm
YXVsdFRleHR1cmVWaWV3KTogQWRkIE9iakMgdHJ5L2NhdGNoIGd1YXJkcy4KKworICAgICAgICBB
ZGQgR1BVVXRpbHMuaC9jcHAgZm9yIHNoYXJlZCB1dGlsaXR5IGZ1bmN0aW9uczoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVXRpbHMuaDogQWRk
ZWQuIE1vdmVkIHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQgaGVyZS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwu
bW06CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OnNldEZvcm1hdCk6CisgICAgICAg
IChXZWJDb3JlOjpwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KTogTW92
ZWQgdG8gR1BVVXRpbHMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VVV0aWxzTWV0YWwubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1UZXh0dXJl
Rm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdCk6IE1vdmVkIGhlcmUgdG8gYmUgcmVmZXJlbmNlZCBi
eSBtdWx0aXBsZSBmaWxlcy4KKwogMjAxOS0wMi0wNiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBGb3J3YXJkIEFkIENsaWNrIEF0dHJpYnV0aW9uIGRhdGEg
ZnJvbSBIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2soKSB0byBXZWJLaXQ6Ok5hdmlnYXRp
b25BY3Rpb25EYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2
aWNlLmNwcAppbmRleCA0ZGQwYTk0MjBkYmI3NmQ2MzMzMmExZTgzMDJkMDUwNDZjZDdlYzEyLi4z
YzY4MDI4NGE0OGYwYWUwZTgwOGFjNDQ4ZmVhOGQxMDgwNWMzOTJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZURlc2Ny
aXB0b3IuaCIKKyNpbmNsdWRlICJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXAuaCIKICNpbmNsdWRlICJXZWJHUFVC
aW5kR3JvdXBCaW5kaW5nLmgiCkBAIC01Miw2ICs1Myw3IEBACiAjaW5jbHVkZSAiV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgi
CiAjaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldl
YkdQVVRleHR1cmUuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC03OCw2ICs4MCwxMiBAQCBSZWZQdHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVEZXZp
Y2U6OmNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yJiYgZGVzY3JpcAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCitSZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVRGV2aWNlOjpjcmVh
dGVUZXh0dXJlKEdQVVRleHR1cmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKK3sKKyAg
ICBhdXRvIHRleHR1cmUgPSBtX2RldmljZS0+dHJ5Q3JlYXRlVGV4dHVyZShXVEZNb3ZlKGRlc2Ny
aXB0b3IpKTsKKyAgICByZXR1cm4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFdURk1vdmUodGV4dHVy
ZSkpOworfQorCiBSZWY8V2ViR1BVQmluZEdyb3VwTGF5b3V0PiBXZWJHUFVEZXZpY2U6OmNyZWF0
ZUJpbmRHcm91cExheW91dChXZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yJiYgZGVzY3Jp
cHRvcikgY29uc3QKIHsKICAgICBhdXRvIGxheW91dCA9IG1fZGV2aWNlLT50cnlDcmVhdGVCaW5k
R3JvdXBMYXlvdXQoR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciB7IGRlc2NyaXB0b3IuYmlu
ZGluZ3MgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5o
CmluZGV4IDg5OThhZDYzY2QwZjliYWFkMDZlMzI0ZjU2MDVjNGU5YTFiYWQzMjEuLjljYWUzYWU5
ODYyNjZjYzZmMGM5OTg0Yjc4NDk5M2E2OWFkNmYwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCkBAIC00Nyw3ICs0Nyw5IEBAIGNsYXNzIFdlYkdQ
VUNvbW1hbmRCdWZmZXI7CiBjbGFzcyBXZWJHUFVQaXBlbGluZUxheW91dDsKIGNsYXNzIFdlYkdQ
VVJlbmRlclBpcGVsaW5lOwogY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxlOworY2xhc3MgV2ViR1BV
VGV4dHVyZTsKIAorc3RydWN0IEdQVVRleHR1cmVEZXNjcmlwdG9yOwogc3RydWN0IFdlYkdQVUJp
bmRHcm91cERlc2NyaXB0b3I7CiBzdHJ1Y3QgV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
Owogc3RydWN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKQEAgLTYxLDYgKzYzLDcg
QEAgcHVibGljOgogICAgIGNvbnN0IEdQVURldmljZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4g
bV9kZXZpY2UuZ2V0KCk7IH0KIAogICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGNyZWF0ZUJ1ZmZl
cihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yJiYpIGNvbnN0OworICAgIFJlZjxXZWJHUFVUZXh0dXJl
PiBjcmVhdGVUZXh0dXJlKEdQVVRleHR1cmVEZXNjcmlwdG9yJiYpIGNvbnN0OwogCiAgICAgUmVm
PFdlYkdQVUJpbmRHcm91cExheW91dD4gY3JlYXRlQmluZEdyb3VwTGF5b3V0KFdlYkdQVUJpbmRH
cm91cExheW91dERlc2NyaXB0b3ImJikgY29uc3Q7CiAgICAgUmVmPFdlYkdQVVBpcGVsaW5lTGF5
b3V0PiBjcmVhdGVQaXBlbGluZUxheW91dChXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3Im
JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
LmlkbAppbmRleCAyYzg2YjNjODBiMGIxYjI4NDk1ZGI0OWE4ZWZhZjlmYTFkYzBkNzE0Li44MzQy
YTVkMGFiYjVjNTE4MGMyM2M0YTUxOGI0Y2U2ZjkxOGE4Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwKQEAgLTMyLDYgKzMyLDcgQEAKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgV2ViR1BVQWRhcHRlciBhZGFwdGVyOwogCiAgICAgV2ViR1BV
QnVmZmVyIGNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwor
ICAgIFdlYkdQVVRleHR1cmUgY3JlYXRlVGV4dHVyZShHUFVUZXh0dXJlRGVzY3JpcHRvciBkZXNj
cmlwdG9yKTsKIAogICAgIFdlYkdQVUJpbmRHcm91cExheW91dCBjcmVhdGVCaW5kR3JvdXBMYXlv
dXQoV2ViR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKICAgICBXZWJH
UFVQaXBlbGluZUxheW91dCBjcmVhdGVQaXBlbGluZUxheW91dChXZWJHUFVQaXBlbGluZUxheW91
dERlc2NyaXB0b3IgZGVzY3JpcHRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVRleHR1cmUuY3BwCmluZGV4IDlkOWQ3Zjk2M2JkMmU5MTU3ZDg1Y2RkMzdjMTgz
MDllMjYzNmNhZDEuLmQ1ZDNiZTZjYTkzNjM1ZWRiMjI3NDkxM2E3Y2MxYThjNDc0M2FhYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCkBA
IC0zMiwxMiArMzIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BV
VGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFJlZlB0cjxHUFVUZXh0dXJlPiYmIHRleHR1
cmUpCitSZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFJlZlB0cjxHUFVU
ZXh0dXJlPiYmIHRleHR1cmUpCiB7Ci0gICAgcmV0dXJuIHRleHR1cmUgPyBhZG9wdFJlZihuZXcg
V2ViR1BVVGV4dHVyZSh0ZXh0dXJlLnJlbGVhc2VOb25OdWxsKCkpKSA6IG51bGxwdHI7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKSk7CiB9
CiAKLVdlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUoUmVmPEdQVVRleHR1cmU+JiYgdGV4dHVy
ZSkKK1dlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUoUmVmUHRyPEdQVVRleHR1cmU+JiYgdGV4
dHVyZSkKICAgICA6IG1fdGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oCmluZGV4IDExYzA4ZGU0ZDI1
ZGMyY2JkZWQ5NDE4YjU1YWM3MjViOTEzNjdlNTUuLmM1OTBiZGY2OTQyZDdiOWJmZmZkMWU3MmI2
MTI4OWJkODBkMzliMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlLmgKQEAgLTM4LDE0ICszOCwxNCBAQCBjbGFzcyBXZWJHUFVUZXh0dXJlVmlldzsK
IAogY2xhc3MgV2ViR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVRleHR1cmU+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVRleHR1cmU+IGNyZWF0ZShSZWZQ
dHI8R1BVVGV4dHVyZT4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJlPiBjcmVhdGUo
UmVmUHRyPEdQVVRleHR1cmU+JiYpOwogCiAgICAgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBj
cmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJH
UFVUZXh0dXJlKFJlZjxHUFVUZXh0dXJlPiYmKTsKKyAgICBleHBsaWNpdCBXZWJHUFVUZXh0dXJl
KFJlZlB0cjxHUFVUZXh0dXJlPiYmKTsKIAotICAgIFJlZjxHUFVUZXh0dXJlPiBtX3RleHR1cmU7
CisgICAgUmVmUHRyPEdQVVRleHR1cmU+IG1fdGV4dHVyZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDA3MjIyODhkYTFjODkzNWE3OGY3
ZTE5MjA5NmE3YWQ4NTcyZTgwNDMuLjg1M2IxOGE5MTFjNGZmNDU2Y2IwZjNmMzNhMTgwNTliMGNl
ODllM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzMxLDYgKzMzMSw3IEBAIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVV0aWxzTWV0YWwubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMWRjZDk2NzBiOTlkMmVm
ODMzOGY4MjliMjk0NDcxZTI3Zjg1YTVmLi40ZGM0NjkxODJiZDkwNDUxYzY3YzYyN2RhODE4ODQw
MTNlNzhlYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNDA1OCw2ICsxNDA1OCw4IEBACiAJCUQwNkE5QTIxMjIwMjZDN0Ew
MDgzQzY2MiAvKiBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BV
UmVxdWVzdEFkYXB0ZXJPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQw
NkMwRDhEMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21tYW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW92ZUZvcm1hdENvbW1hbmQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2QzBEOEUwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZv
cm1hdENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3ZlRm9ybWF0Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwNkVG
NTUyMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVVdGls
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDZFRjU1MzIyMEJBMjZBMDAxODcy
NEUgLyogR1BVVXRpbHNNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVV0aWxzTWV0
YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwN0RFQUI3MEEzNjU1NEEwMENB
MzBGOCAvKiBJbnNlcnRMaXN0Q29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5zZXJ0TGlzdENvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMDdERUFCODBBMzY1NTRBMDBDQTMwRjggLyogSW5zZXJ0TGlzdENvbW1hbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc2VydExpc3RDb21tYW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwODNEOTg0MjFDNDgwNTAwMDhFOEVGRiAvKiBH
UFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91
cExheW91dERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NDkw
LDYgKzE4NDkyLDcgQEAKIAkJCQlEMDI2RjQ4NjIyMEE1MDU5MDBBQzVGNDkgLyogR1BVVGV4dHVy
ZURpbWVuc2lvbi5oICovLAogCQkJCTMxMkZGOEMzMjFBNEMyRjMwMEVCMTk5RCAvKiBHUFVUZXh0
dXJlRm9ybWF0LmggKi8sCiAJCQkJRDAyNkY0ODUyMjBBNDc3MjAwQUM1RjQ5IC8qIEdQVVRleHR1
cmVVc2FnZS5oICovLAorCQkJCUQwNkVGNTUyMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVVdGlscy5o
ICovLAogCQkJCUQwRDg2NDlCMjFCQTFDMkQwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhBdHRyaWJ1dGVE
ZXNjcmlwdG9yLmggKi8sCiAJCQkJRDBEODY0OUMyMUJBMUNFODAwM0M5ODNDIC8qIEdQVVZlcnRl
eElucHV0RGVzY3JpcHRvci5oICovLAogCQkJCTQ5ODc3MEQ3MTI0MkM1MzUwMDIyMjZCQSAvKiBU
ZXh0dXJlLmNwcCAqLywKQEAgLTI2MTc1LDYgKzI2MTc4LDcgQEAKIAkJCQlEMDg3Q0U0MDIxQUNB
OTQyMDBCREUxNzQgLyogR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0gKi8sCiAJCQkJRDA4N0NFM0Uy
MUFDQTk0MjAwQkRFMTc0IC8qIEdQVVN3YXBDaGFpbk1ldGFsLm1tICovLAogCQkJCUQwODdDRTNG
MjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVUZXh0dXJlTWV0YWwubW0gKi8sCisJCQkJRDA2RUY1NTMy
MjBCQTI2QTAwMTg3MjRFIC8qIEdQVVV0aWxzTWV0YWwubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAKaW5kZXggNDE1MjRhNTg3ZGFj
MWU4YWFmNDA3YzhiOTI3NjRlMmZmYjZlZTMzNS4uMTYzNTFlODBmZTdjZGNhZDRhYmQ0MzRmMTZk
OTY2NWEyNDY5MDMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVURldmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVURldmljZS5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGUuaCIKICNp
bmNsdWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiR1BVVGV4dHVy
ZS5oIgorI2luY2x1ZGUgIkdQVVRleHR1cmVEZXNjcmlwdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDcsNiArNDksMTEgQEAgUmVmUHRyPEdQVUJ1ZmZlcj4gR1BVRGV2aWNlOjpj
cmVhdGVCdWZmZXIoR1BVQnVmZmVyRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnMKICAgICBy
ZXR1cm4gR1BVQnVmZmVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZGVzY3JpcHRvcikpOwogfQog
CitSZWZQdHI8R1BVVGV4dHVyZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVUZXh0dXJlKEdQVVRleHR1
cmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKK3sKKyAgICByZXR1cm4gR1BVVGV4dHVy
ZTo6dHJ5Q3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKK30KKwogUmVmUHRyPEdQ
VUJpbmRHcm91cExheW91dD4gR1BVRGV2aWNlOjp0cnlDcmVhdGVCaW5kR3JvdXBMYXlvdXQoR1BV
QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIEdQVUJpbmRHcm91cExheW91dDo6dHJ5Q3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0
b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZp
Y2UuaAppbmRleCA5YzliNTk3N2E0YTAyYjE3NjE5MWFlNzNkZWM1ZTE1MzdkNTc1MTBhLi40NTZl
Yjg0NTVkZDRlNTY0YzQ1MzJiZDNiMmMzZmQ2MjcxYjU5YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oCkBAIC00Niw2ICs0Niw3IEBA
IGNsYXNzIEdQVUNvbW1hbmRCdWZmZXI7CiBjbGFzcyBHUFVQaXBlbGluZUxheW91dDsKIGNsYXNz
IEdQVVJlbmRlclBpcGVsaW5lOwogY2xhc3MgR1BVU2hhZGVyTW9kdWxlOworY2xhc3MgR1BVVGV4
dHVyZTsKIAogc3RydWN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3I7CiBzdHJ1Y3QgR1BV
QnVmZmVyRGVzY3JpcHRvcjsKQEAgLTUzLDEyICs1NCwxNCBAQCBzdHJ1Y3QgR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yOwogc3RydWN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKIHN0
cnVjdCBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM7CiBzdHJ1Y3QgR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvcjsKK3N0cnVjdCBHUFVUZXh0dXJlRGVzY3JpcHRvcjsKIAogY2xhc3MgR1BVRGV2aWNl
IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVRGV2aWNlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZlB0cjxHUFVEZXZpY2U+IGNyZWF0ZShPcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+
JiYpOwogCiAgICAgUmVmUHRyPEdQVUJ1ZmZlcj4gY3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2Ny
aXB0b3ImJikgY29uc3Q7CisgICAgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNyZWF0ZVRleHR1cmUo
R1BVVGV4dHVyZURlc2NyaXB0b3ImJikgY29uc3Q7CiAKICAgICBSZWZQdHI8R1BVQmluZEdyb3Vw
TGF5b3V0PiB0cnlDcmVhdGVCaW5kR3JvdXBMYXlvdXQoR1BVQmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvciYmKSBjb25zdDsKICAgICBSZWY8R1BVUGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZVBpcGVsaW5l
TGF5b3V0KEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciYmKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oCmluZGV4IDY5NTMx
NTVhN2EyYjg5MTJjZjE4OWNkZTYyYjhmZWUzNDI5NWFkMjkuLjUwMmIxMmJiODc5NzcwNTYxOTkz
NmFiMjBkMWZlZjc3OGY1YTRjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaApAQCAtMzUsMTEgKzM1LDE2IEBAIE9CSkNfUFJPVE9D
T0woTVRMVGV4dHVyZSk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR1BVRGV2aWNl
OworCitzdHJ1Y3QgR1BVVGV4dHVyZURlc2NyaXB0b3I7CisKIHVzaW5nIFBsYXRmb3JtVGV4dHVy
ZSA9IE1UTFRleHR1cmU7CiB1c2luZyBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciA9IFJldGFpblB0
cjxNVExUZXh0dXJlPjsKIAogY2xhc3MgR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQ
VVRleHR1cmU+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNy
ZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBHUFVUZXh0dXJlRGVzY3JpcHRvciYmKTsKICAgICBzdGF0
aWMgUmVmPEdQVVRleHR1cmU+IGNyZWF0ZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmKTsKIAog
ICAgIFBsYXRmb3JtVGV4dHVyZSAqcGxhdGZvcm1UZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9w
bGF0Zm9ybVRleHR1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVV0aWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDcwNWFiNWE4ZDM5NDI1Y2QyMjBmNTgx
NDc2NGM1ZThkYmIyZjU3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVVdGlscy5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVUZXh0
dXJlRm9ybWF0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGxhdGZvcm1UZXh0dXJlRm9y
bWF0IHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQoR1BVVGV4dHVyZUZv
cm1hdCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVU3dhcENoYWluTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KaW5kZXggZjQ4ZGY0MWFkNWFkNWYxNjll
NzQwZDE0ZTM4NDVlZDJlODhhM2M2My4uMTU1MDJlOWNkNmI2YzUzODcwZWM2YjNkYWRmMmY4OGNj
NjMwMGI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQpAQCAtMzEsOSArMzEsOSBA
QAogI2ltcG9ydCAiR1BVRGV2aWNlLmgiCiAjaW1wb3J0ICJHUFVUZXh0dXJlLmgiCiAjaW1wb3J0
ICJHUFVUZXh0dXJlRm9ybWF0LmgiCisjaW1wb3J0ICJHUFVVdGlscy5oIgogI2ltcG9ydCAiTG9n
Z2luZy5oIgogI2ltcG9ydCAiV2ViR1BVTGF5ZXIuaCIKLQogI2ltcG9ydCA8TWV0YWwvTWV0YWwu
aD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KQEAgLTgwLDM2ICs4MCwxNSBAQCB2b2lkIEdQVVN3YXBDaGFpbjo6
c2V0RGV2aWNlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQogICAgIFttX3BsYXRmb3JtU3dhcExh
eWVyIHNldERldmljZTpkZXZpY2UucGxhdGZvcm1EZXZpY2UoKV07CiB9CiAKLXN0YXRpYyBPcHRp
b25hbDxQbGF0Zm9ybVRleHR1cmVGb3JtYXQ+IHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRl
eHR1cmVGb3JtYXQoR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQpCi17Ci0gICAgc3dpdGNoIChmb3Jt
YXQpIHsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OlI4ZzhiOGE4VW5vcm06Ci0gICAgICAg
IHJldHVybiBNVExQaXhlbEZvcm1hdFJHQkE4VW5vcm07Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9y
bWF0OjpSOGc4YjhhOFVpbnQ6Ci0gICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdFJHQkE4VWlu
dDsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OkI4ZzhyOGE4VW5vcm06Ci0gICAgICAgIHJl
dHVybiBNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm07Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0
OjpEMzJGbG9hdFM4VWludDoKLSAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0RGVwdGgzMkZs
b2F0X1N0ZW5jaWw4OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2Fw
Q2hhaW46OnNldEZvcm1hdCgpOiBJbnZhbGlkIHRleHR1cmUgZm9ybWF0IHNwZWNpZmllZCEiKTsK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9Ci19Ci0KIHZvaWQgR1BVU3dhcENo
YWluOjpzZXRGb3JtYXQoR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQpCiB7Ci0gICAgYXV0byByZXN1
bHQgPSBwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KGZvcm1hdCk7Ci0g
ICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gbXRsUmVzdWx0ID0g
c3RhdGljX2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+KHJlc3VsdC52YWx1ZSgpKTsKKyAgICBhdXRvIG10
bEZvcm1hdCA9IHN0YXRpY19jYXN0PE1UTFBpeGVsRm9ybWF0PihwbGF0Zm9ybVRleHR1cmVGb3Jt
YXRGb3JHUFVUZXh0dXJlRm9ybWF0KGZvcm1hdCkpOwogCi0gICAgc3dpdGNoIChtdGxSZXN1bHQp
IHsKKyAgICBzd2l0Y2ggKG10bEZvcm1hdCkgewogICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRCR1JB
OFVub3JtOgogICAgIC8vIEZJWE1FOiBBZGQgdGhlIG90aGVyIHN1cHBvcnRlZCBzd2FwIGxheWVy
IGZvcm1hdHMgYXMgdGhleSBhcmUgYWRkZWQgdG8gR1BVIHNwZWMuCiAgICAgLy8gIE1UTFBpeGVs
Rm9ybWF0QkdSQThVbm9ybV9zUkdCLCBNVExQaXhlbEZvcm1hdFJHQkExNkZsb2F0LCBNVExQaXhl
bEZvcm1hdEJHUkExMF9YUiwgYW5kIE1UTFBpeGVsRm9ybWF0QkdSQTEwX1hSX3NSR0IuCi0gICAg
ICAgIFttX3BsYXRmb3JtU3dhcExheWVyIHNldFBpeGVsRm9ybWF0Om10bFJlc3VsdF07CisgICAg
ICAgIFttX3BsYXRmb3JtU3dhcExheWVyIHNldFBpeGVsRm9ybWF0Om10bEZvcm1hdF07CiAgICAg
ICAgIHJldHVybjsKICAgICBkZWZhdWx0OgogICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENo
YWluOjpzZXRGb3JtYXQoKTogVW5zdXBwb3J0ZWQgTVRMUGl4ZWxGb3JtYXQhIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVy
ZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VVRleHR1cmVNZXRhbC5tbQppbmRleCA1Y2JjMWY5NWI2OTY0MTZmMmQ2M2NkMzBjNDVkNzRlZGU0
NWUxZTZkLi5jYmFhODk3NGVjNGExMmExMmQyZTcxYTExMzAyYmRjZmViNzQ3ZjIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVy
ZU1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVUZXh0dXJlTWV0YWwubW0KQEAgLTI4LDEzICsyOCwxMzYgQEAKIAogI2lmIEVOQUJMRShX
RUJHUFUpCiAKKyNpbXBvcnQgIkdQVURldmljZS5oIgorI2ltcG9ydCAiR1BVVGV4dHVyZURlc2Ny
aXB0b3IuaCIKKyNpbXBvcnQgIkdQVVV0aWxzLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0KICNp
bXBvcnQgPE1ldGFsL01ldGFsLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5o
PgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3Rh
dGljIE1UTFRleHR1cmVUeXBlIG10bFRleHR1cmVUeXBlRm9yR1BVVGV4dHVyZURlc2NyaXB0b3Io
Y29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgc3dpdGNoIChk
ZXNjcmlwdG9yLmRpbWVuc2lvbikgeworICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6XzFk
OgorICAgICAgICByZXR1cm4gKGRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50ID09IDEpID8gTVRM
VGV4dHVyZVR5cGUxRCA6IE1UTFRleHR1cmVUeXBlMURBcnJheTsKKyAgICBjYXNlIEdQVVRleHR1
cmVEaW1lbnNpb246Ol8yZDogeworICAgICAgICBpZiAoZGVzY3JpcHRvci5hcnJheUxheWVyQ291
bnQgPT0gMSkKKyAgICAgICAgICAgIHJldHVybiAoZGVzY3JpcHRvci5zYW1wbGVDb3VudCA9PSAx
KSA/IE1UTFRleHR1cmVUeXBlMkQgOiBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGU7CisKKyAg
ICAgICAgcmV0dXJuIE1UTFRleHR1cmVUeXBlMkRBcnJheTsKKyAgICB9CisgICAgY2FzZSBHUFVU
ZXh0dXJlRGltZW5zaW9uOjpfM2Q6CisgICAgICAgIHJldHVybiBNVExUZXh0dXJlVHlwZTNEOwor
ICAgIH0KK30KKworc3RhdGljIE9wdGlvbmFsPE1UTFRleHR1cmVVc2FnZT4gbXRsVGV4dHVyZVVz
YWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3MoR1BVVGV4dHVyZVVzYWdlRmxhZ3MgZmxhZ3MpCit7
CisgICAgTVRMVGV4dHVyZVVzYWdlIHVzYWdlID0gTVRMVGV4dHVyZVVzYWdlVW5rbm93bjsKKwor
ICAgIGlmIChmbGFncyAmIEdQVVRleHR1cmVVc2FnZTo6U3RvcmFnZSkKKyAgICAgICAgdXNhZ2Ug
fD0gTVRMVGV4dHVyZVVzYWdlU2hhZGVyV3JpdGUgfCBNVExUZXh0dXJlVXNhZ2VTaGFkZXJSZWFk
IHwgTVRMVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3OworCisgICAgaWYgKGZsYWdzICYgR1BV
VGV4dHVyZVVzYWdlOjpTYW1wbGVkKSB7CisgICAgICAgIC8vIFNBTVBMRUQgaXMgYSByZWFkLW9u
bHkgdXNhZ2UuCisgICAgICAgIGlmICh1c2FnZSAmIE1UTFRleHR1cmVVc2FnZVNoYWRlcldyaXRl
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICB1c2FnZSB8PSBN
VExUZXh0dXJlVXNhZ2VTaGFkZXJSZWFkIHwgTVRMVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3
OworICAgIH0KKworICAgIGlmIChmbGFncyAmIEdQVVRleHR1cmVVc2FnZTo6T3V0cHV0QXR0YWNo
bWVudCkKKyAgICAgICAgdXNhZ2UgfD0gTVRMVGV4dHVyZVVzYWdlUmVuZGVyVGFyZ2V0OworCisg
ICAgcmV0dXJuIHVzYWdlOworfQorCitzdGF0aWMgTVRMU3RvcmFnZU1vZGUgc3RvcmFnZU1vZGVG
b3JQaXhlbEZvcm1hdEFuZFNhbXBsZUNvdW50KE1UTFBpeGVsRm9ybWF0IGZvcm1hdCwgdW5zaWdu
ZWQgbG9uZyBzYW1wbGVzKQoreworICAgIC8vIERlcHRoLCBTdGVuY2lsLCBEZXB0aFN0ZW5jaWws
IGFuZCBNdWx0aXNhbXBsZSB0ZXh0dXJlcyBtdXN0IGJlIGFsbG9jYXRlZCB3aXRoIHRoZSBNVExT
dG9yYWdlTW9kZVByaXZhdGUgcmVzb3VyY2Ugb3B0aW9uLgorICAgIGlmIChmb3JtYXQgPT0gTVRM
UGl4ZWxGb3JtYXREZXB0aDMyRmxvYXRfU3RlbmNpbDggfHwgc2FtcGxlcyA+IDEpCisgICAgICAg
IHJldHVybiBNVExTdG9yYWdlTW9kZVByaXZhdGU7CisKKyAgICByZXR1cm4gTVRMU3RvcmFnZU1v
ZGVNYW5hZ2VkOworfQorCitzdGF0aWMgUmV0YWluUHRyPE1UTFRleHR1cmVEZXNjcmlwdG9yPiB0
cnlDcmVhdGVNdGxUZXh0dXJlRGVzY3JpcHRvcihjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5h
bWUsIGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKK3sKKyAgICBSZXRh
aW5QdHI8TVRMVGV4dHVyZURlc2NyaXB0b3I+IG10bERlc2NyaXB0b3I7CisKKyAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBtdGxEZXNjcmlwdG9yID0gYWRvcHROUyhbTVRM
VGV4dHVyZURlc2NyaXB0b3IgbmV3XSk7CisKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
OworCisgICAgaWYgKCFtdGxEZXNjcmlwdG9yKSB7CisgICAgICAgIExPRyhXZWJHUFUsICIlczog
VW5hYmxlIHRvIGNyZWF0ZSBuZXcgTVRMVGV4dHVyZURlc2NyaXB0b3IhIiwgZnVuY3Rpb25OYW1l
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgLy8gRklYTUU6IEFkZCBt
b3JlIHZhbGlkYXRpb24gYXMgY29uc3RyYWludHMgYXJlIGFkZGVkIHRvIHNwZWMuCisgICAgYXV0
byBwaXhlbEZvcm1hdCA9IHN0YXRpY19jYXN0PE1UTFBpeGVsRm9ybWF0PihwbGF0Zm9ybVRleHR1
cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KGRlc2NyaXB0b3IuZm9ybWF0KSk7CisKKyAgICBh
dXRvIHVzYWdlID0gbXRsVGV4dHVyZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3MoZGVzY3Jp
cHRvci51c2FnZSk7CisgICAgaWYgKCF1c2FnZSkgeworICAgICAgICBMT0coV2ViR1BVLCAiJXM6
IEludmFsaWQgR1BVVGV4dHVyZVVzYWdlRmxhZ3MhIik7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIGF1dG8gc3RvcmFnZU1vZGUgPSBzdG9yYWdlTW9kZUZvclBpeGVsRm9y
bWF0QW5kU2FtcGxlQ291bnQocGl4ZWxGb3JtYXQsIGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQpOwor
CisgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgW210bERlc2NyaXB0b3Ig
c2V0V2lkdGg6ZGVzY3JpcHRvci5zaXplLndpZHRoXTsKKyAgICBbbXRsRGVzY3JpcHRvciBzZXRI
ZWlnaHQ6ZGVzY3JpcHRvci5zaXplLmhlaWdodF07CisgICAgW210bERlc2NyaXB0b3Igc2V0RGVw
dGg6ZGVzY3JpcHRvci5zaXplLmRlcHRoXTsKKyAgICBbbXRsRGVzY3JpcHRvciBzZXRBcnJheUxl
bmd0aDpkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudF07CisgICAgW210bERlc2NyaXB0b3Igc2V0
TWlwbWFwTGV2ZWxDb3VudDpkZXNjcmlwdG9yLm1pcExldmVsQ291bnRdOworICAgIFttdGxEZXNj
cmlwdG9yIHNldFNhbXBsZUNvdW50OmRlc2NyaXB0b3Iuc2FtcGxlQ291bnRdOworICAgIFttdGxE
ZXNjcmlwdG9yIHNldFRleHR1cmVUeXBlOm10bFRleHR1cmVUeXBlRm9yR1BVVGV4dHVyZURlc2Ny
aXB0b3IoZGVzY3JpcHRvcildOworICAgIFttdGxEZXNjcmlwdG9yIHNldFBpeGVsRm9ybWF0OnBp
eGVsRm9ybWF0XTsKKyAgICBbbXRsRGVzY3JpcHRvciBzZXRVc2FnZToqdXNhZ2VdOworCisgICAg
W210bERlc2NyaXB0b3Igc2V0U3RvcmFnZU1vZGU6c3RvcmFnZU1vZGVdOworCisgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIHJldHVybiBtdGxEZXNjcmlwdG9yOworfQorCitS
ZWZQdHI8R1BVVGV4dHVyZT4gR1BVVGV4dHVyZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYg
ZGV2aWNlLCBHUFVUZXh0dXJlRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCit7CisgICAgY29uc3Qg
Y2hhciogY29uc3QgZnVuY3Rpb25OYW1lID0gIkdQVVRleHR1cmU6OnRyeUNyZWF0ZSgpIjsKKwor
ICAgIGlmICghZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBJbnZhbGlkIEdQVURldmljZSEiLCBmdW5jdGlvbk5hbWUpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIG10bERlc2NyaXB0b3IgPSB0cnlDcmVhdGVNdGxU
ZXh0dXJlRGVzY3JpcHRvcihmdW5jdGlvbk5hbWUsIFdURk1vdmUoZGVzY3JpcHRvcikpOworICAg
IGlmICghbXRsRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZXRh
aW5QdHI8TVRMVGV4dHVyZT4gbXRsVGV4dHVyZTsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKKworICAgIG10bFRleHR1cmUgPSBhZG9wdE5TKFtkZXZpY2UucGxhdGZvcm1EZXZp
Y2UoKSBuZXdUZXh0dXJlV2l0aERlc2NyaXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKV0pOworCisg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIGlmICghbXRsVGV4dHVyZSkgewor
ICAgICAgICBMT0coV2ViR1BVLCAiJXM6IFVuYWJsZSB0byBjcmVhdGUgTVRMVGV4dHVyZSEiLCBm
dW5jdGlvbk5hbWUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEdQVVRleHR1cmUoV1RGTW92ZShtdGxUZXh0dXJlKSkpOworfQorCiBS
ZWY8R1BVVGV4dHVyZT4gR1BVVGV4dHVyZTo6Y3JlYXRlKFBsYXRmb3JtVGV4dHVyZVNtYXJ0UHRy
JiYgdGV4dHVyZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHUFVUZXh0dXJlKFdURk1v
dmUodGV4dHVyZSkpKTsKQEAgLTQ5LDggKzE3MiwxMiBAQCBSZWZQdHI8R1BVVGV4dHVyZT4gR1BV
VGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCkKIHsKICAgICBSZXRhaW5QdHI8TVRM
VGV4dHVyZT4gdGV4dHVyZTsKIAorICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKwog
ICAgIHRleHR1cmUgPSBhZG9wdE5TKFttX3BsYXRmb3JtVGV4dHVyZSBuZXdUZXh0dXJlVmlld1dp
dGhQaXhlbEZvcm1hdDptX3BsYXRmb3JtVGV4dHVyZS5nZXQoKS5waXhlbEZvcm1hdF0pOwogCisg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKwogICAgIGlmICghdGV4dHVyZSkgewogICAg
ICAgICBMT0coV2ViR1BVLCAiR1BVVGV4dHVyZTo6Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk6
IFVuYWJsZSB0byBjcmVhdGUgTVRMVGV4dHVyZSB2aWV3ISIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVVdGlsc01ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVV0aWxzTWV0YWwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTRiMzcwMjFhMzk0OTliZWFj
ODMxYzgwZDQzYTIzNWMyOTU2NTQxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVVdGlsc01ldGFsLm1tCkBAIC0wLDAgKzEs
NTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkdQVVV0aWxz
LmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW1wb3J0IDxNZXRhbC9NZXRhbC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1BsYXRmb3JtVGV4dHVyZUZvcm1hdCBwbGF0Zm9ybVRleHR1
cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KEdQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQorewor
ICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpSOGc4Yjhh
OFVub3JtOgorICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRSR0JBOFVub3JtOworICAgIGNh
c2UgR1BVVGV4dHVyZUZvcm1hdDo6UjhnOGI4YThVaW50OgorICAgICAgICByZXR1cm4gTVRMUGl4
ZWxGb3JtYXRSR0JBOFVpbnQ7CisgICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0OjpCOGc4cjhhOFVu
b3JtOgorICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRCR1JBOFVub3JtOworICAgIGNhc2Ug
R1BVVGV4dHVyZUZvcm1hdDo6RDMyRmxvYXRTOFVpbnQ6CisgICAgICAgIHJldHVybiBNVExQaXhl
bEZvcm1hdERlcHRoMzJGbG9hdF9TdGVuY2lsODsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDhhMzk3NGZhNmU2
ZmU3MDM2ZGI4NjA2NDY2OTllOTQ4MGYyOGZiMy4uMjFmNmRlNjg0N2E1NDA3ZDQzN2JiMDU2ZDM3
MWIyNDA2ZDZmZTRjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTAyLTA3ICBKdXN0aW4g
RmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBHUFVdIEdQVURldmlj
ZTo6Y3JlYXRlVGV4dHVyZSBpbXBsZW1lbnRhdGlvbiBwcm90b3R5cGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQwOQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDc4OTQzMTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIHRleHR1cmVzLXRleHR1cmV2aWV3cy5odG1sIHRvIFdQVCBmb3Jt
YXQgYW5kIHRvIHRlc3QgY3JlYXRpb24gb2YgdGV4dHVyZXMgdmlhIHRoZSBHUFVEZXZpY2UuCisK
KyAgICAgICAgKiB3ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLmh0bWw6CisKIDIwMTktMDItMDYg
IEp1c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEdQVV0g
SW1wbGVtZW50IHN1cHBvcnRpbmcgZGljdGlvbmFyaWVzIGZvciBHUFVUZXh0dXJlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MtZXhwZWN0ZWQudHh0
CmluZGV4IDYyMDNjYzE4MWJkOGUzODYyYWZhMmRkNzhkNTUwOTY5NDU3MzE2YTcuLjgyZTcwZDgx
MTg2NWZiMWQ5YmE3YjBmODBkNWQ4N2NhNjU3YzUwZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MtZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEs
NiBAQAotUEFTUyBbb2JqZWN0IFdlYkdQVV0gaXMgZGVmaW5lZC4KLVBBU1MgQWNxdWlyZWQgbmV4
dCBXZWJHUFVUZXh0dXJlIGZyb20gV2ViR1BVUmVuZGVyaW5nQ29udGV4dC4KLVBBU1MgQ3JlYXRl
ZCBkZWZhdWx0IFdlYkdQVVRleHR1cmVWaWV3IGZyb20gYSBXZWJHUFVUZXh0dXJlCi1BbGwgdGVz
dHMgY29tcGxldGUuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKLVRFU1QgQ09N
UExFVEUKK1BBU1MgQ3JlYXRlIHRleHR1cmUgdmlldyBmcm9tIHN3YXAgY2hhaW4uIAorUEFTUyBD
cmVhdGUgYmFzaWMgZGVwdGggdGV4dHVyZSBmcm9tIGRldmljZS4gCitQQVNTIENyZWF0ZSBiYXNp
YyA0eCBtdWx0aXNhbXBsZWQgdGV4dHVyZS4gCitQQVNTIENyZWF0ZSBiYXNpYyAzRCB0ZXh0dXJl
IGZyb20gZGV2aWNlLiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmVz
LXRleHR1cmV2aWV3cy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2
aWV3cy5odG1sCmluZGV4IDdkZGI0YWM5NjQwODNiMjA2NTNhZDFmN2RkOTA5YTU0MGZkM2Q3YjEu
Ljk3MjZjYjY2MTMyMWJlMTljODUzYmIwMDc0NWVmOTk3MWVmNmRkZWEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLmh0bWwKQEAgLTEsMzQgKzEsNjYgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJqcy9iYXNpYy13ZWJncHUtZnVuY3Rp
b25zLmpzIj48L3NjcmlwdD4KKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVy
IFsgZXhwZXJpbWVudGFsOldlYkdQVUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPG1ldGEgY2hhcnNldD11
dGYtOD4KKzx0aXRsZT5CYXNpYyBHUFVUZXh0dXJlIFRlc3RzLjwvdGl0bGU+Cis8Ym9keT4KKzxj
YW52YXMgd2lkdGg9IjQwMCIgaGVpZ2h0PSI0MDAiPjwvY2FudmFzPgorPHNjcmlwdCBzcmM9Impz
L3dlYmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotCi1mdW5jdGlvbiBz
ZXRVcE5leHRUZXh0dXJlVmlldygpIHsKLSAgICBsZXQgdGV4dHVyZSA9IGNvbnRleHQuZ2V0TmV4
dFRleHR1cmUoKTsKLSAgICBpZiAodGV4dHVyZSkKLSAgICAgICAgdGVzdFBhc3NlZCgiQWNxdWly
ZWQgbmV4dCBXZWJHUFVUZXh0dXJlIGZyb20gV2ViR1BVUmVuZGVyaW5nQ29udGV4dC4iKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGdldCBuZXh0IFdlYkdQVVRl
eHR1cmUgZnJvbSBXZWJHUFVSZW5kZXJpbmdDb250ZXh0ISIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgbGV0IHRleHR1cmVWaWV3ID0gdGV4dHVyZS5jcmVhdGVEZWZhdWx0VGV4dHVy
ZVZpZXcoKTsKLSAgICBpZiAodGV4dHVyZVZpZXcpIAotICAgICAgICB0ZXN0UGFzc2VkKCJDcmVh
dGVkIGRlZmF1bHQgV2ViR1BVVGV4dHVyZVZpZXcgZnJvbSBhIFdlYkdQVVRleHR1cmUiKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiQ291bGQgbm90IGNyZWF0ZSBkZWZhdWx0IFdl
YkdQVVRleHR1cmVWaWV3ISIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi0vLyBGSVhN
RTogQWRkIHRlc3RzIGZvciBkZXZpY2UuY3JlYXRlVGV4dHVyZSwgV2ViR1BVVGV4dHVyZURlc2Ny
aXB0b3IsIGFuZCBXZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuCi0KLXJ1bldlYkdQVVRlc3Rz
KFtzZXRVcE5leHRUZXh0dXJlVmlld10pOwotCi1zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
Y29uc3QgY2FudmFzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiY2FudmFzIik7ICAgIAorbGV0
IGRldmljZSwgY29udGV4dDsKKworbGV0IHRleFNpemUgPSB7CisgICAgd2lkdGg6IGNhbnZhcy53
aWR0aCwKKyAgICBoZWlnaHQ6IGNhbnZhcy5oZWlnaHQsCisgICAgZGVwdGg6IDEKK307CisKK2xl
dCB0ZXhEZXNjcmlwdG9yID0geworICAgIHNpemU6IHRleFNpemUsCisgICAgYXJyYXlMYXllckNv
dW50OiAxLAorICAgIG1pcExldmVsQ291bnQ6IDEsCisgICAgc2FtcGxlQ291bnQ6IDEsCisgICAg
ZGltZW5zaW9uOiAiMmQiLAorICAgIGZvcm1hdDogImQzMi1mbG9hdC1zOC11aW50IiwKKyAgICB1
c2FnZTogR1BVVGV4dHVyZVVzYWdlLk9VVFBVVF9BVFRBQ0hNRU5UCit9OworCitwcm9taXNlX3Rl
c3QoYXN5bmMgKCkgPT4geworICAgIGRldmljZSA9IGF3YWl0IGdldEJhc2ljRGV2aWNlKCk7Cisg
ICAgY29udGV4dCA9IGNyZWF0ZUJhc2ljQ29udGV4dChjYW52YXMsIGRldmljZSk7CisKKyAgICBj
b25zdCB0ZXh0dXJlID0gY29udGV4dC5nZXROZXh0VGV4dHVyZSgpOworICAgIGFzc2VydF90cnVl
KHRleHR1cmUgaW5zdGFuY2VvZiBXZWJHUFVUZXh0dXJlLCAiU3VjY2Vzc2Z1bGx5IGFjcXVpcmVk
IG5leHQgdGV4dHVyZS4iKTsKKworICAgIGNvbnN0IHRleHR1cmVWaWV3ID0gdGV4dHVyZS5jcmVh
dGVEZWZhdWx0VGV4dHVyZVZpZXcoKTsKKyAgICBhc3NlcnRfdHJ1ZSh0ZXh0dXJlVmlldyBpbnN0
YW5jZW9mIFdlYkdQVVRleHR1cmVWaWV3LCAiU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgdGV4dHVyZSB2
aWV3IGZyb20gbmV4dCB0ZXh0dXJlLiIpOworfSwgIkNyZWF0ZSB0ZXh0dXJlIHZpZXcgZnJvbSBz
d2FwIGNoYWluLiIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICAgIGNvbnN0IGRl
cHRoVGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleERlc2NyaXB0b3IpOworICAgIGFz
c2VydF90cnVlKGRlcHRoVGV4dHVyZSBpbnN0YW5jZW9mIFdlYkdQVVRleHR1cmUsICJTdWNjZXNz
ZnVsbHkgY3JlYXRlZCBkZXB0aCB0ZXh0dXJlLiIpOworfSwgIkNyZWF0ZSBiYXNpYyBkZXB0aCB0
ZXh0dXJlIGZyb20gZGV2aWNlLiIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICAg
IHRleERlc2NyaXB0b3Iuc2FtcGxlQ291bnQgPSA0OworICAgIHRleERlc2NyaXB0b3IuZm9ybWF0
ID0gInI4ZzhiOGE4LXVub3JtIjsKKyAgICB0ZXhEZXNjcmlwdG9yLnVzYWdlID0gR1BVVGV4dHVy
ZVVzYWdlLlNBTVBMRUQgfCBHUFVUZXh0dXJlVXNhZ2UuVFJBTlNGRVJfU1JDCisKKyAgICBjb25z
dCBtdWx0aXNhbXBsZWRUZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4RGVzY3JpcHRv
cik7CisgICAgYXNzZXJ0X3RydWUobXVsdGlzYW1wbGVkVGV4dHVyZSBpbnN0YW5jZW9mIFdlYkdQ
VVRleHR1cmUsICJTdWNjZXNzZnVsbHkgY3JlYXRlZCBtdWx0aXNhbXBsZWQgdGV4dHVyZS4iKTsK
K30sICJDcmVhdGUgYmFzaWMgNHggbXVsdGlzYW1wbGVkIHRleHR1cmUuIik7CisKK3Byb21pc2Vf
dGVzdChhc3luYyAoKSA9PiB7CisgICAgdGV4RGVzY3JpcHRvci5zaXplLmRlcHRoID0gMzsKKyAg
ICB0ZXhEZXNjcmlwdG9yLnNhbXBsZUNvdW50ID0gMTsKKyAgICB0ZXhEZXNjcmlwdG9yLmRpbWVu
c2lvbiA9ICIzZCI7CisKKyAgICBjb25zdCB0ZXh0dXJlM2QgPSBkZXZpY2UuY3JlYXRlVGV4dHVy
ZSh0ZXhEZXNjcmlwdG9yKTsKKyAgICBhc3NlcnRfdHJ1ZSh0ZXh0dXJlM2QgaW5zdGFuY2VvZiBX
ZWJHUFVUZXh0dXJlLCAiU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgYmFzaWMgM0QgdGV4dHVyZS4iKTsK
K30sICJDcmVhdGUgYmFzaWMgM0QgdGV4dHVyZSBmcm9tIGRldmljZS4iKTsKKworLy8gRklYTUU6
IEFkZCB0ZXN0cyBmb3IgMUQgdGV4dHVyZXMsIHRleHR1cmVBcnJheXMsIGFuZCBXZWJHUFVUZXh0
dXJlVmlld3MuCiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KIDwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361441</attachid>
            <date>2019-02-07 14:10:38 -0800</date>
            <delta_ts>2019-02-07 17:32:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194409-20190207141037.patch</filename>
            <type>text/plain</type>
            <size>30734</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA4NDBjNjBkYWZhNzA2
ZDUxNDU1MDgxZmM2MTg5NGY5MGZjZmM3OS4uNDg4NjM0MjcwYmUxZWQ1Yjk3NzZkNjRjNjJhZTcy
Y2Q5YjAwZGNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE5LTAyLTA3ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBHUFVdIEdQVURl
dmljZTo6Y3JlYXRlVGV4dHVyZSBpbXBsZW1lbnRhdGlvbiBwcm90b3R5cGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQwOQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNDc4OTQzMTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdDogdGV4dHVyZXMtdGV4dHVyZXZpZXdzLmh0bWwgdXBkYXRlZCB0
byB0ZXN0IG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIEltcGxlbWVudCBHUFVEZXZpY2U6
OmNyZWF0ZVRleHR1cmUoKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVUZXh0dXJlIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVVGV4dHVyZTo6Y3Jl
YXRlKTogTW9kaWZpZWQgdG8gcmV0dXJuIG5vbi1udWxsYWJsZSB0byBtYXRjaCBkaXJlY3Rpb24g
b2YgQVBJLgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVVGV4dHVyZTo6V2ViR1BVVGV4dHVyZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oOgorCisgICAgICAgIE1l
dGFsIGJhY2tlbmQgTVRMVGV4dHVyZURlc2NyaXB0b3IgYW5kIE1UTFRleHR1cmUgY3JlYXRpb246
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHUFVEZXZpY2U6OnRyeUNyZWF0ZVRleHR1cmUgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW06CisgICAgICAgIChXZWJDb3JlOjptdGxUZXh0dXJl
VHlwZUZvckdQVVRleHR1cmVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Om10bFRleHR1
cmVVc2FnZUZvckdQVVRleHR1cmVVc2FnZUZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OnN0b3Jh
Z2VNb2RlRm9yUGl4ZWxGb3JtYXRBbmRTYW1wbGVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjp0
cnlDcmVhdGVNdGxUZXh0dXJlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpHUFVUZXh0
dXJlOjp0cnlDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVVGV4dHVyZTo6Y3JlYXRlRGVm
YXVsdFRleHR1cmVWaWV3KTogQWRkIE9iakMgdHJ5L2NhdGNoIGd1YXJkcy4KKworICAgICAgICBB
ZGQgR1BVVXRpbHMuaC9jcHAgZm9yIHNoYXJlZCB1dGlsaXR5IGZ1bmN0aW9uczoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVXRpbHMuaDogQWRk
ZWQuIE1vdmVkIHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQgaGVyZS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwu
bW06CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OnNldEZvcm1hdCk6CisgICAgICAg
IChXZWJDb3JlOjpwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KTogTW92
ZWQgdG8gR1BVVXRpbHMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VVV0aWxzTWV0YWwubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1UZXh0dXJl
Rm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdCk6IE1vdmVkIGhlcmUgdG8gYmUgcmVmZXJlbmNlZCBi
eSBtdWx0aXBsZSBmaWxlcy4KKwogMjAxOS0wMi0wNiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBGb3J3YXJkIEFkIENsaWNrIEF0dHJpYnV0aW9uIGRhdGEg
ZnJvbSBIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2soKSB0byBXZWJLaXQ6Ok5hdmlnYXRp
b25BY3Rpb25EYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2
aWNlLmNwcAppbmRleCA0ZGQwYTk0MjBkYmI3NmQ2MzMzMmExZTgzMDJkMDUwNDZjZDdlYzEyLi4z
YzY4MDI4NGE0OGYwYWUwZTgwOGFjNDQ4ZmVhOGQxMDgwNWMzOTJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkdQVVJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZURlc2Ny
aXB0b3IuaCIKKyNpbmNsdWRlICJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXAuaCIKICNpbmNsdWRlICJXZWJHUFVC
aW5kR3JvdXBCaW5kaW5nLmgiCkBAIC01Miw2ICs1Myw3IEBACiAjaW5jbHVkZSAiV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlLmgi
CiAjaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIldl
YkdQVVRleHR1cmUuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC03OCw2ICs4MCwxMiBAQCBSZWZQdHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVEZXZp
Y2U6OmNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yJiYgZGVzY3JpcAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCitSZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVRGV2aWNlOjpjcmVh
dGVUZXh0dXJlKEdQVVRleHR1cmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKK3sKKyAg
ICBhdXRvIHRleHR1cmUgPSBtX2RldmljZS0+dHJ5Q3JlYXRlVGV4dHVyZShXVEZNb3ZlKGRlc2Ny
aXB0b3IpKTsKKyAgICByZXR1cm4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFdURk1vdmUodGV4dHVy
ZSkpOworfQorCiBSZWY8V2ViR1BVQmluZEdyb3VwTGF5b3V0PiBXZWJHUFVEZXZpY2U6OmNyZWF0
ZUJpbmRHcm91cExheW91dChXZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yJiYgZGVzY3Jp
cHRvcikgY29uc3QKIHsKICAgICBhdXRvIGxheW91dCA9IG1fZGV2aWNlLT50cnlDcmVhdGVCaW5k
R3JvdXBMYXlvdXQoR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciB7IGRlc2NyaXB0b3IuYmlu
ZGluZ3MgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5o
CmluZGV4IDg5OThhZDYzY2QwZjliYWFkMDZlMzI0ZjU2MDVjNGU5YTFiYWQzMjEuLjljYWUzYWU5
ODYyNjZjYzZmMGM5OTg0Yjc4NDk5M2E2OWFkNmYwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCkBAIC00Nyw3ICs0Nyw5IEBAIGNsYXNzIFdlYkdQ
VUNvbW1hbmRCdWZmZXI7CiBjbGFzcyBXZWJHUFVQaXBlbGluZUxheW91dDsKIGNsYXNzIFdlYkdQ
VVJlbmRlclBpcGVsaW5lOwogY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxlOworY2xhc3MgV2ViR1BV
VGV4dHVyZTsKIAorc3RydWN0IEdQVVRleHR1cmVEZXNjcmlwdG9yOwogc3RydWN0IFdlYkdQVUJp
bmRHcm91cERlc2NyaXB0b3I7CiBzdHJ1Y3QgV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
Owogc3RydWN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKQEAgLTYxLDYgKzYzLDcg
QEAgcHVibGljOgogICAgIGNvbnN0IEdQVURldmljZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1cm4g
bV9kZXZpY2UuZ2V0KCk7IH0KIAogICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGNyZWF0ZUJ1ZmZl
cihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yJiYpIGNvbnN0OworICAgIFJlZjxXZWJHUFVUZXh0dXJl
PiBjcmVhdGVUZXh0dXJlKEdQVVRleHR1cmVEZXNjcmlwdG9yJiYpIGNvbnN0OwogCiAgICAgUmVm
PFdlYkdQVUJpbmRHcm91cExheW91dD4gY3JlYXRlQmluZEdyb3VwTGF5b3V0KFdlYkdQVUJpbmRH
cm91cExheW91dERlc2NyaXB0b3ImJikgY29uc3Q7CiAgICAgUmVmPFdlYkdQVVBpcGVsaW5lTGF5
b3V0PiBjcmVhdGVQaXBlbGluZUxheW91dChXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3Im
JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVEZXZpY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2aWNl
LmlkbAppbmRleCAyYzg2YjNjODBiMGIxYjI4NDk1ZGI0OWE4ZWZhZjlmYTFkYzBkNzE0Li44MzQy
YTVkMGFiYjVjNTE4MGMyM2M0YTUxOGI0Y2U2ZjkxOGE4Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwKQEAgLTMyLDYgKzMyLDcgQEAKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgV2ViR1BVQWRhcHRlciBhZGFwdGVyOwogCiAgICAgV2ViR1BV
QnVmZmVyIGNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yIGRlc2NyaXB0b3IpOwor
ICAgIFdlYkdQVVRleHR1cmUgY3JlYXRlVGV4dHVyZShHUFVUZXh0dXJlRGVzY3JpcHRvciBkZXNj
cmlwdG9yKTsKIAogICAgIFdlYkdQVUJpbmRHcm91cExheW91dCBjcmVhdGVCaW5kR3JvdXBMYXlv
dXQoV2ViR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKICAgICBXZWJH
UFVQaXBlbGluZUxheW91dCBjcmVhdGVQaXBlbGluZUxheW91dChXZWJHUFVQaXBlbGluZUxheW91
dERlc2NyaXB0b3IgZGVzY3JpcHRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVRleHR1cmUuY3BwCmluZGV4IDlkOWQ3Zjk2M2JkMmU5MTU3ZDg1Y2RkMzdjMTgz
MDllMjYzNmNhZDEuLmQ1ZDNiZTZjYTkzNjM1ZWRiMjI3NDkxM2E3Y2MxYThjNDc0M2FhYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCkBA
IC0zMiwxMiArMzIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2ViR1BV
VGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFJlZlB0cjxHUFVUZXh0dXJlPiYmIHRleHR1
cmUpCitSZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFJlZlB0cjxHUFVU
ZXh0dXJlPiYmIHRleHR1cmUpCiB7Ci0gICAgcmV0dXJuIHRleHR1cmUgPyBhZG9wdFJlZihuZXcg
V2ViR1BVVGV4dHVyZSh0ZXh0dXJlLnJlbGVhc2VOb25OdWxsKCkpKSA6IG51bGxwdHI7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKSk7CiB9
CiAKLVdlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUoUmVmPEdQVVRleHR1cmU+JiYgdGV4dHVy
ZSkKK1dlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUoUmVmUHRyPEdQVVRleHR1cmU+JiYgdGV4
dHVyZSkKICAgICA6IG1fdGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oCmluZGV4IDExYzA4ZGU0ZDI1
ZGMyY2JkZWQ5NDE4YjU1YWM3MjViOTEzNjdlNTUuLmM1OTBiZGY2OTQyZDdiOWJmZmZkMWU3MmI2
MTI4OWJkODBkMzliMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVVRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVUZXh0dXJlLmgKQEAgLTM4LDE0ICszOCwxNCBAQCBjbGFzcyBXZWJHUFVUZXh0dXJlVmlldzsK
IAogY2xhc3MgV2ViR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVRleHR1cmU+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVRleHR1cmU+IGNyZWF0ZShSZWZQ
dHI8R1BVVGV4dHVyZT4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJlPiBjcmVhdGUo
UmVmUHRyPEdQVVRleHR1cmU+JiYpOwogCiAgICAgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3PiBj
cmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJH
UFVUZXh0dXJlKFJlZjxHUFVUZXh0dXJlPiYmKTsKKyAgICBleHBsaWNpdCBXZWJHUFVUZXh0dXJl
KFJlZlB0cjxHUFVUZXh0dXJlPiYmKTsKIAotICAgIFJlZjxHUFVUZXh0dXJlPiBtX3RleHR1cmU7
CisgICAgUmVmUHRyPEdQVVRleHR1cmU+IG1fdGV4dHVyZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDA3MjIyODhkYTFjODkzNWE3OGY3
ZTE5MjA5NmE3YWQ4NTcyZTgwNDMuLjg1M2IxOGE5MTFjNGZmNDU2Y2IwZjNmMzNhMTgwNTliMGNl
ODllM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzMxLDYgKzMzMSw3IEBAIHBsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0KIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVV0aWxzTWV0YWwubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMWRjZDk2NzBiOTlkMmVm
ODMzOGY4MjliMjk0NDcxZTI3Zjg1YTVmLi40ZGM0NjkxODJiZDkwNDUxYzY3YzYyN2RhODE4ODQw
MTNlNzhlYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xNDA1OCw2ICsxNDA1OCw4IEBACiAJCUQwNkE5QTIxMjIwMjZDN0Ew
MDgzQzY2MiAvKiBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BV
UmVxdWVzdEFkYXB0ZXJPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQw
NkMwRDhEMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21tYW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW92ZUZvcm1hdENvbW1hbmQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2QzBEOEUwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZv
cm1hdENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3ZlRm9ybWF0Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQwNkVG
NTUyMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVVdGls
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDZFRjU1MzIyMEJBMjZBMDAxODcy
NEUgLyogR1BVVXRpbHNNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVV0aWxzTWV0
YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwN0RFQUI3MEEzNjU1NEEwMENB
MzBGOCAvKiBJbnNlcnRMaXN0Q29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW5zZXJ0TGlzdENvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMDdERUFCODBBMzY1NTRBMDBDQTMwRjggLyogSW5zZXJ0TGlzdENvbW1hbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc2VydExpc3RDb21tYW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwODNEOTg0MjFDNDgwNTAwMDhFOEVGRiAvKiBH
UFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRHcm91
cExheW91dERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NDkw
LDYgKzE4NDkyLDcgQEAKIAkJCQlEMDI2RjQ4NjIyMEE1MDU5MDBBQzVGNDkgLyogR1BVVGV4dHVy
ZURpbWVuc2lvbi5oICovLAogCQkJCTMxMkZGOEMzMjFBNEMyRjMwMEVCMTk5RCAvKiBHUFVUZXh0
dXJlRm9ybWF0LmggKi8sCiAJCQkJRDAyNkY0ODUyMjBBNDc3MjAwQUM1RjQ5IC8qIEdQVVRleHR1
cmVVc2FnZS5oICovLAorCQkJCUQwNkVGNTUyMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVVdGlscy5o
ICovLAogCQkJCUQwRDg2NDlCMjFCQTFDMkQwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhBdHRyaWJ1dGVE
ZXNjcmlwdG9yLmggKi8sCiAJCQkJRDBEODY0OUMyMUJBMUNFODAwM0M5ODNDIC8qIEdQVVZlcnRl
eElucHV0RGVzY3JpcHRvci5oICovLAogCQkJCTQ5ODc3MEQ3MTI0MkM1MzUwMDIyMjZCQSAvKiBU
ZXh0dXJlLmNwcCAqLywKQEAgLTI2MTc1LDYgKzI2MTc4LDcgQEAKIAkJCQlEMDg3Q0U0MDIxQUNB
OTQyMDBCREUxNzQgLyogR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0gKi8sCiAJCQkJRDA4N0NFM0Uy
MUFDQTk0MjAwQkRFMTc0IC8qIEdQVVN3YXBDaGFpbk1ldGFsLm1tICovLAogCQkJCUQwODdDRTNG
MjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVUZXh0dXJlTWV0YWwubW0gKi8sCisJCQkJRDA2RUY1NTMy
MjBCQTI2QTAwMTg3MjRFIC8qIEdQVVV0aWxzTWV0YWwubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAKaW5kZXggNDE1MjRhNTg3ZGFj
MWU4YWFmNDA3YzhiOTI3NjRlMmZmYjZlZTMzNS4uMTYzNTFlODBmZTdjZGNhZDRhYmQ0MzRmMTZk
OTY2NWEyNDY5MDMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVURldmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0dQVURldmljZS5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGUuaCIKICNp
bmNsdWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiR1BVVGV4dHVy
ZS5oIgorI2luY2x1ZGUgIkdQVVRleHR1cmVEZXNjcmlwdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDcsNiArNDksMTEgQEAgUmVmUHRyPEdQVUJ1ZmZlcj4gR1BVRGV2aWNlOjpj
cmVhdGVCdWZmZXIoR1BVQnVmZmVyRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnMKICAgICBy
ZXR1cm4gR1BVQnVmZmVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZGVzY3JpcHRvcikpOwogfQog
CitSZWZQdHI8R1BVVGV4dHVyZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVUZXh0dXJlKEdQVVRleHR1
cmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKK3sKKyAgICByZXR1cm4gR1BVVGV4dHVy
ZTo6dHJ5Q3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKK30KKwogUmVmUHRyPEdQ
VUJpbmRHcm91cExheW91dD4gR1BVRGV2aWNlOjp0cnlDcmVhdGVCaW5kR3JvdXBMYXlvdXQoR1BV
QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIEdQVUJpbmRHcm91cExheW91dDo6dHJ5Q3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0
b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9H
UFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZp
Y2UuaAppbmRleCA5YzliNTk3N2E0YTAyYjE3NjE5MWFlNzNkZWM1ZTE1MzdkNTc1MTBhLi40NTZl
Yjg0NTVkZDRlNTY0YzQ1MzJiZDNiMmMzZmQ2MjcxYjU5YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oCkBAIC00Niw2ICs0Niw3IEBA
IGNsYXNzIEdQVUNvbW1hbmRCdWZmZXI7CiBjbGFzcyBHUFVQaXBlbGluZUxheW91dDsKIGNsYXNz
IEdQVVJlbmRlclBpcGVsaW5lOwogY2xhc3MgR1BVU2hhZGVyTW9kdWxlOworY2xhc3MgR1BVVGV4
dHVyZTsKIAogc3RydWN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3I7CiBzdHJ1Y3QgR1BV
QnVmZmVyRGVzY3JpcHRvcjsKQEAgLTUzLDEyICs1NCwxNCBAQCBzdHJ1Y3QgR1BVUGlwZWxpbmVM
YXlvdXREZXNjcmlwdG9yOwogc3RydWN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKIHN0
cnVjdCBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM7CiBzdHJ1Y3QgR1BVU2hhZGVyTW9kdWxlRGVz
Y3JpcHRvcjsKK3N0cnVjdCBHUFVUZXh0dXJlRGVzY3JpcHRvcjsKIAogY2xhc3MgR1BVRGV2aWNl
IDogcHVibGljIFJlZkNvdW50ZWQ8R1BVRGV2aWNlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZlB0cjxHUFVEZXZpY2U+IGNyZWF0ZShPcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM+
JiYpOwogCiAgICAgUmVmUHRyPEdQVUJ1ZmZlcj4gY3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRlc2Ny
aXB0b3ImJikgY29uc3Q7CisgICAgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNyZWF0ZVRleHR1cmUo
R1BVVGV4dHVyZURlc2NyaXB0b3ImJikgY29uc3Q7CiAKICAgICBSZWZQdHI8R1BVQmluZEdyb3Vw
TGF5b3V0PiB0cnlDcmVhdGVCaW5kR3JvdXBMYXlvdXQoR1BVQmluZEdyb3VwTGF5b3V0RGVzY3Jp
cHRvciYmKSBjb25zdDsKICAgICBSZWY8R1BVUGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZVBpcGVsaW5l
TGF5b3V0KEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciYmKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oCmluZGV4IDY5NTMx
NTVhN2EyYjg5MTJjZjE4OWNkZTYyYjhmZWUzNDI5NWFkMjkuLjUwMmIxMmJiODc5NzcwNTYxOTkz
NmFiMjBkMWZlZjc3OGY1YTRjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaApAQCAtMzUsMTEgKzM1LDE2IEBAIE9CSkNfUFJPVE9D
T0woTVRMVGV4dHVyZSk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR1BVRGV2aWNl
OworCitzdHJ1Y3QgR1BVVGV4dHVyZURlc2NyaXB0b3I7CisKIHVzaW5nIFBsYXRmb3JtVGV4dHVy
ZSA9IE1UTFRleHR1cmU7CiB1c2luZyBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciA9IFJldGFpblB0
cjxNVExUZXh0dXJlPjsKIAogY2xhc3MgR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdQ
VVRleHR1cmU+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNy
ZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBHUFVUZXh0dXJlRGVzY3JpcHRvciYmKTsKICAgICBzdGF0
aWMgUmVmPEdQVVRleHR1cmU+IGNyZWF0ZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmKTsKIAog
ICAgIFBsYXRmb3JtVGV4dHVyZSAqcGxhdGZvcm1UZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9w
bGF0Zm9ybVRleHR1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVVV0aWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDcwNWFiNWE4ZDM5NDI1Y2QyMjBmNTgx
NDc2NGM1ZThkYmIyZjU3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVVdGlscy5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVUZXh0
dXJlRm9ybWF0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGxhdGZvcm1UZXh0dXJlRm9y
bWF0IHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQoR1BVVGV4dHVyZUZv
cm1hdCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJH
UFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29j
b2EvR1BVU3dhcENoYWluTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KaW5kZXggZjQ4ZGY0MWFkNWFkNWYxNjll
NzQwZDE0ZTM4NDVlZDJlODhhM2M2My4uMTU1MDJlOWNkNmI2YzUzODcwZWM2YjNkYWRmMmY4OGNj
NjMwMGI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQpAQCAtMzEsOSArMzEsOSBA
QAogI2ltcG9ydCAiR1BVRGV2aWNlLmgiCiAjaW1wb3J0ICJHUFVUZXh0dXJlLmgiCiAjaW1wb3J0
ICJHUFVUZXh0dXJlRm9ybWF0LmgiCisjaW1wb3J0ICJHUFVVdGlscy5oIgogI2ltcG9ydCAiTG9n
Z2luZy5oIgogI2ltcG9ydCAiV2ViR1BVTGF5ZXIuaCIKLQogI2ltcG9ydCA8TWV0YWwvTWV0YWwu
aD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KQEAgLTgwLDM2ICs4MCwxNSBAQCB2b2lkIEdQVVN3YXBDaGFpbjo6
c2V0RGV2aWNlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQogICAgIFttX3BsYXRmb3JtU3dhcExh
eWVyIHNldERldmljZTpkZXZpY2UucGxhdGZvcm1EZXZpY2UoKV07CiB9CiAKLXN0YXRpYyBPcHRp
b25hbDxQbGF0Zm9ybVRleHR1cmVGb3JtYXQ+IHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRl
eHR1cmVGb3JtYXQoR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQpCi17Ci0gICAgc3dpdGNoIChmb3Jt
YXQpIHsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OlI4ZzhiOGE4VW5vcm06Ci0gICAgICAg
IHJldHVybiBNVExQaXhlbEZvcm1hdFJHQkE4VW5vcm07Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9y
bWF0OjpSOGc4YjhhOFVpbnQ6Ci0gICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdFJHQkE4VWlu
dDsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OkI4ZzhyOGE4VW5vcm06Ci0gICAgICAgIHJl
dHVybiBNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm07Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9ybWF0
OjpEMzJGbG9hdFM4VWludDoKLSAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0RGVwdGgzMkZs
b2F0X1N0ZW5jaWw4OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVTd2Fw
Q2hhaW46OnNldEZvcm1hdCgpOiBJbnZhbGlkIHRleHR1cmUgZm9ybWF0IHNwZWNpZmllZCEiKTsK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9Ci19Ci0KIHZvaWQgR1BVU3dhcENo
YWluOjpzZXRGb3JtYXQoR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQpCiB7Ci0gICAgYXV0byByZXN1
bHQgPSBwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KGZvcm1hdCk7Ci0g
ICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gbXRsUmVzdWx0ID0g
c3RhdGljX2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+KHJlc3VsdC52YWx1ZSgpKTsKKyAgICBhdXRvIG10
bEZvcm1hdCA9IHN0YXRpY19jYXN0PE1UTFBpeGVsRm9ybWF0PihwbGF0Zm9ybVRleHR1cmVGb3Jt
YXRGb3JHUFVUZXh0dXJlRm9ybWF0KGZvcm1hdCkpOwogCi0gICAgc3dpdGNoIChtdGxSZXN1bHQp
IHsKKyAgICBzd2l0Y2ggKG10bEZvcm1hdCkgewogICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRCR1JB
OFVub3JtOgogICAgIC8vIEZJWE1FOiBBZGQgdGhlIG90aGVyIHN1cHBvcnRlZCBzd2FwIGxheWVy
IGZvcm1hdHMgYXMgdGhleSBhcmUgYWRkZWQgdG8gR1BVIHNwZWMuCiAgICAgLy8gIE1UTFBpeGVs
Rm9ybWF0QkdSQThVbm9ybV9zUkdCLCBNVExQaXhlbEZvcm1hdFJHQkExNkZsb2F0LCBNVExQaXhl
bEZvcm1hdEJHUkExMF9YUiwgYW5kIE1UTFBpeGVsRm9ybWF0QkdSQTEwX1hSX3NSR0IuCi0gICAg
ICAgIFttX3BsYXRmb3JtU3dhcExheWVyIHNldFBpeGVsRm9ybWF0Om10bFJlc3VsdF07CisgICAg
ICAgIFttX3BsYXRmb3JtU3dhcExheWVyIHNldFBpeGVsRm9ybWF0Om10bEZvcm1hdF07CiAgICAg
ICAgIHJldHVybjsKICAgICBkZWZhdWx0OgogICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dhcENo
YWluOjpzZXRGb3JtYXQoKTogVW5zdXBwb3J0ZWQgTVRMUGl4ZWxGb3JtYXQhIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVy
ZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQ
VVRleHR1cmVNZXRhbC5tbQppbmRleCA1Y2JjMWY5NWI2OTY0MTZmMmQ2M2NkMzBjNDVkNzRlZGU0
NWUxZTZkLi45N2UwMDg0YTIyNzQyOTBmMzU2ZmIxYWNlMGQzM2EyNjFlMTFjYmU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4dHVy
ZU1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2Nv
YS9HUFVUZXh0dXJlTWV0YWwubW0KQEAgLTI4LDEzICsyOCwxNDAgQEAKIAogI2lmIEVOQUJMRShX
RUJHUFUpCiAKKyNpbXBvcnQgIkdQVURldmljZS5oIgorI2ltcG9ydCAiR1BVVGV4dHVyZURlc2Ny
aXB0b3IuaCIKKyNpbXBvcnQgIkdQVVV0aWxzLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0KICNp
bXBvcnQgPE1ldGFsL01ldGFsLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5o
PgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3Rh
dGljIE1UTFRleHR1cmVUeXBlIG10bFRleHR1cmVUeXBlRm9yR1BVVGV4dHVyZURlc2NyaXB0b3Io
Y29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgc3dpdGNoIChk
ZXNjcmlwdG9yLmRpbWVuc2lvbikgeworICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6XzFk
OgorICAgICAgICByZXR1cm4gKGRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50ID09IDEpID8gTVRM
VGV4dHVyZVR5cGUxRCA6IE1UTFRleHR1cmVUeXBlMURBcnJheTsKKyAgICBjYXNlIEdQVVRleHR1
cmVEaW1lbnNpb246Ol8yZDogeworICAgICAgICBpZiAoZGVzY3JpcHRvci5hcnJheUxheWVyQ291
bnQgPT0gMSkKKyAgICAgICAgICAgIHJldHVybiAoZGVzY3JpcHRvci5zYW1wbGVDb3VudCA9PSAx
KSA/IE1UTFRleHR1cmVUeXBlMkQgOiBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGU7CisKKyAg
ICAgICAgcmV0dXJuIE1UTFRleHR1cmVUeXBlMkRBcnJheTsKKyAgICB9CisgICAgY2FzZSBHUFVU
ZXh0dXJlRGltZW5zaW9uOjpfM2Q6CisgICAgICAgIHJldHVybiBNVExUZXh0dXJlVHlwZTNEOwor
ICAgIH0KK30KKworc3RhdGljIE9wdGlvbmFsPE1UTFRleHR1cmVVc2FnZT4gbXRsVGV4dHVyZVVz
YWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3MoR1BVVGV4dHVyZVVzYWdlRmxhZ3MgZmxhZ3MpCit7
CisgICAgTVRMVGV4dHVyZVVzYWdlIHVzYWdlID0gTVRMVGV4dHVyZVVzYWdlVW5rbm93bjsKKwor
ICAgIGlmIChmbGFncyAmIEdQVVRleHR1cmVVc2FnZTo6U3RvcmFnZSkKKyAgICAgICAgdXNhZ2Ug
fD0gTVRMVGV4dHVyZVVzYWdlU2hhZGVyV3JpdGUgfCBNVExUZXh0dXJlVXNhZ2VTaGFkZXJSZWFk
IHwgTVRMVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3OworCisgICAgaWYgKGZsYWdzICYgR1BV
VGV4dHVyZVVzYWdlOjpTYW1wbGVkKSB7CisgICAgICAgIC8vIFNBTVBMRUQgaXMgYSByZWFkLW9u
bHkgdXNhZ2UuCisgICAgICAgIGlmICh1c2FnZSAmIE1UTFRleHR1cmVVc2FnZVNoYWRlcldyaXRl
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICB1c2FnZSB8PSBN
VExUZXh0dXJlVXNhZ2VTaGFkZXJSZWFkIHwgTVRMVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3
OworICAgIH0KKworICAgIGlmIChmbGFncyAmIEdQVVRleHR1cmVVc2FnZTo6T3V0cHV0QXR0YWNo
bWVudCkKKyAgICAgICAgdXNhZ2UgfD0gTVRMVGV4dHVyZVVzYWdlUmVuZGVyVGFyZ2V0OworCisg
ICAgcmV0dXJuIHVzYWdlOworfQorCitzdGF0aWMgTVRMU3RvcmFnZU1vZGUgc3RvcmFnZU1vZGVG
b3JQaXhlbEZvcm1hdEFuZFNhbXBsZUNvdW50KE1UTFBpeGVsRm9ybWF0IGZvcm1hdCwgdW5zaWdu
ZWQgbG9uZyBzYW1wbGVzKQoreworICAgIC8vIERlcHRoLCBTdGVuY2lsLCBEZXB0aFN0ZW5jaWws
IGFuZCBNdWx0aXNhbXBsZSB0ZXh0dXJlcyBtdXN0IGJlIGFsbG9jYXRlZCB3aXRoIHRoZSBNVExT
dG9yYWdlTW9kZVByaXZhdGUgcmVzb3VyY2Ugb3B0aW9uLgorICAgIGlmIChmb3JtYXQgPT0gTVRM
UGl4ZWxGb3JtYXREZXB0aDMyRmxvYXRfU3RlbmNpbDggfHwgc2FtcGxlcyA+IDEpCisgICAgICAg
IHJldHVybiBNVExTdG9yYWdlTW9kZVByaXZhdGU7CisKKyAgICByZXR1cm4gTVRMU3RvcmFnZU1v
ZGVNYW5hZ2VkOworfQorCitzdGF0aWMgUmV0YWluUHRyPE1UTFRleHR1cmVEZXNjcmlwdG9yPiB0
cnlDcmVhdGVNdGxUZXh0dXJlRGVzY3JpcHRvcihjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5h
bWUsIGNvbnN0IEdQVVRleHR1cmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikKK3sKKyNpZiBMT0df
RElTQUJMRUQKKyAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb25OYW1lKTsKKyNlbmRpZgorCisgICAg
UmV0YWluUHRyPE1UTFRleHR1cmVEZXNjcmlwdG9yPiBtdGxEZXNjcmlwdG9yOworCisgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgbXRsRGVzY3JpcHRvciA9IGFkb3B0TlMo
W01UTFRleHR1cmVEZXNjcmlwdG9yIG5ld10pOworCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKKworICAgIGlmICghbXRsRGVzY3JpcHRvcikgeworICAgICAgICBMT0coV2ViR1BVLCAi
JXM6IFVuYWJsZSB0byBjcmVhdGUgbmV3IE1UTFRleHR1cmVEZXNjcmlwdG9yISIsIGZ1bmN0aW9u
TmFtZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIC8vIEZJWE1FOiBB
ZGQgbW9yZSB2YWxpZGF0aW9uIGFzIGNvbnN0cmFpbnRzIGFyZSBhZGRlZCB0byBzcGVjLgorICAg
IGF1dG8gcGl4ZWxGb3JtYXQgPSBzdGF0aWNfY2FzdDxNVExQaXhlbEZvcm1hdD4ocGxhdGZvcm1U
ZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChkZXNjcmlwdG9yLmZvcm1hdCkpOworCisg
ICAgYXV0byB1c2FnZSA9IG10bFRleHR1cmVVc2FnZUZvckdQVVRleHR1cmVVc2FnZUZsYWdzKGRl
c2NyaXB0b3IudXNhZ2UpOworICAgIGlmICghdXNhZ2UpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBJbnZhbGlkIEdQVVRleHR1cmVVc2FnZUZsYWdzISIpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisKKyAgICBhdXRvIHN0b3JhZ2VNb2RlID0gc3RvcmFnZU1vZGVGb3JQaXhl
bEZvcm1hdEFuZFNhbXBsZUNvdW50KHBpeGVsRm9ybWF0LCBkZXNjcmlwdG9yLnNhbXBsZUNvdW50
KTsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIFttdGxEZXNjcmlw
dG9yIHNldFdpZHRoOmRlc2NyaXB0b3Iuc2l6ZS53aWR0aF07CisgICAgW210bERlc2NyaXB0b3Ig
c2V0SGVpZ2h0OmRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHRdOworICAgIFttdGxEZXNjcmlwdG9yIHNl
dERlcHRoOmRlc2NyaXB0b3Iuc2l6ZS5kZXB0aF07CisgICAgW210bERlc2NyaXB0b3Igc2V0QXJy
YXlMZW5ndGg6ZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnRdOworICAgIFttdGxEZXNjcmlwdG9y
IHNldE1pcG1hcExldmVsQ291bnQ6ZGVzY3JpcHRvci5taXBMZXZlbENvdW50XTsKKyAgICBbbXRs
RGVzY3JpcHRvciBzZXRTYW1wbGVDb3VudDpkZXNjcmlwdG9yLnNhbXBsZUNvdW50XTsKKyAgICBb
bXRsRGVzY3JpcHRvciBzZXRUZXh0dXJlVHlwZTptdGxUZXh0dXJlVHlwZUZvckdQVVRleHR1cmVE
ZXNjcmlwdG9yKGRlc2NyaXB0b3IpXTsKKyAgICBbbXRsRGVzY3JpcHRvciBzZXRQaXhlbEZvcm1h
dDpwaXhlbEZvcm1hdF07CisgICAgW210bERlc2NyaXB0b3Igc2V0VXNhZ2U6KnVzYWdlXTsKKwor
ICAgIFttdGxEZXNjcmlwdG9yIHNldFN0b3JhZ2VNb2RlOnN0b3JhZ2VNb2RlXTsKKworICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICByZXR1cm4gbXRsRGVzY3JpcHRvcjsKK30K
KworUmVmUHRyPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OnRyeUNyZWF0ZShjb25zdCBHUFVEZXZp
Y2UmIGRldmljZSwgR1BVVGV4dHVyZURlc2NyaXB0b3ImJiBkZXNjcmlwdG9yKQoreworICAgIGNv
bnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVUZXh0dXJlOjp0cnlDcmVhdGUoKSI7
CisKKyAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7CisgICAgICAgIExPRyhXZWJH
UFUsICIlczogSW52YWxpZCBHUFVEZXZpY2UhIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBtdGxEZXNjcmlwdG9yID0gdHJ5Q3JlYXRl
TXRsVGV4dHVyZURlc2NyaXB0b3IoZnVuY3Rpb25OYW1lLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsK
KyAgICBpZiAoIW10bERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
UmV0YWluUHRyPE1UTFRleHR1cmU+IG10bFRleHR1cmU7CisKKyAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CisKKyAgICBtdGxUZXh0dXJlID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3Jt
RGV2aWNlKCkgbmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yOm10bERlc2NyaXB0b3IuZ2V0KCldKTsK
KworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBpZiAoIW10bFRleHR1cmUp
IHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBVbmFibGUgdG8gY3JlYXRlIE1UTFRleHR1cmUh
IiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVUZXh0dXJlKFdURk1vdmUobXRsVGV4dHVyZSkpKTsKK30K
KwogUmVmPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OmNyZWF0ZShQbGF0Zm9ybVRleHR1cmVTbWFy
dFB0ciYmIHRleHR1cmUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR1BVVGV4dHVyZShX
VEZNb3ZlKHRleHR1cmUpKSk7CkBAIC00OSw4ICsxNzYsMTIgQEAgUmVmUHRyPEdQVVRleHR1cmU+
IEdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpCiB7CiAgICAgUmV0YWluUHRy
PE1UTFRleHR1cmU+IHRleHR1cmU7CiAKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
CisKICAgICB0ZXh0dXJlID0gYWRvcHROUyhbbV9wbGF0Zm9ybVRleHR1cmUgbmV3VGV4dHVyZVZp
ZXdXaXRoUGl4ZWxGb3JtYXQ6bV9wbGF0Zm9ybVRleHR1cmUuZ2V0KCkucGl4ZWxGb3JtYXRdKTsK
IAorICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKICAgICBpZiAoIXRleHR1cmUpIHsK
ICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRUZXh0dXJlVmll
dygpOiBVbmFibGUgdG8gY3JlYXRlIE1UTFRleHR1cmUgdmlldyEiKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvY29jb2EvR1BVVXRpbHNNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9jb2NvYS9HUFVVdGlsc01ldGFsLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0YjM3MDIxYTM5NDk5
YmVhYzgzMWM4MGQ0M2EyMzVjMjk1NjU0MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVXRpbHNNZXRhbC5tbQpAQCAtMCww
ICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJHUFVV
dGlscy5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQbGF0Zm9ybVRleHR1cmVGb3JtYXQgcGxhdGZvcm1U
ZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdCkK
K3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6Ujhn
OGI4YThVbm9ybToKKyAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0UkdCQThVbm9ybTsKKyAg
ICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OlI4ZzhiOGE4VWludDoKKyAgICAgICAgcmV0dXJuIE1U
TFBpeGVsRm9ybWF0UkdCQThVaW50OworICAgIGNhc2UgR1BVVGV4dHVyZUZvcm1hdDo6QjhnOHI4
YThVbm9ybToKKyAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0QkdSQThVbm9ybTsKKyAgICBj
YXNlIEdQVVRleHR1cmVGb3JtYXQ6OkQzMkZsb2F0UzhVaW50OgorICAgICAgICByZXR1cm4gTVRM
UGl4ZWxGb3JtYXREZXB0aDMyRmxvYXRfU3RlbmNpbDg7CisgICAgfQorfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ4YTM5NzRm
YTZlNmZlNzAzNmRiODYwNjQ2Njk5ZTk0ODBmMjhmYjMuLjIxZjZkZTY4NDdhNTQwN2Q0MzdiYjA1
NmQzNzFiMjQwNmQ2ZmU0YzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0wMi0wNyAgSnVz
dGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWIgR1BVXSBHUFVE
ZXZpY2U6OmNyZWF0ZVRleHR1cmUgaW1wbGVtZW50YXRpb24gcHJvdG90eXBlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ0MDkKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzQ3ODk0MzEyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZSB0ZXh0dXJlcy10ZXh0dXJldmlld3MuaHRtbCB0byBXUFQg
Zm9ybWF0IGFuZCB0byB0ZXN0IGNyZWF0aW9uIG9mIHRleHR1cmVzIHZpYSB0aGUgR1BVRGV2aWNl
LgorCisgICAgICAgICogd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy5odG1sOgorCiAyMDE5LTAy
LTA2ICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBH
UFVdIEltcGxlbWVudCBzdXBwb3J0aW5nIGRpY3Rpb25hcmllcyBmb3IgR1BVVGV4dHVyZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLWV4cGVjdGVk
LnR4dAppbmRleCA2MjAzY2MxODFiZDhlMzg2MmFmYTJkZDc4ZDU1MDk2OTQ1NzMxNmE3Li44MmU3
MGQ4MTE4NjVmYjFkOWJhN2IwZjgwZDVkODdjYTY1N2M1MGZhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy93ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLWV4cGVjdGVkLnR4dApAQCAtMSw4
ICsxLDYgQEAKLVBBU1MgW29iamVjdCBXZWJHUFVdIGlzIGRlZmluZWQuCi1QQVNTIEFjcXVpcmVk
IG5leHQgV2ViR1BVVGV4dHVyZSBmcm9tIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuCi1QQVNTIENy
ZWF0ZWQgZGVmYXVsdCBXZWJHUFVUZXh0dXJlVmlldyBmcm9tIGEgV2ViR1BVVGV4dHVyZQotQWxs
IHRlc3RzIGNvbXBsZXRlLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCi1URVNU
IENPTVBMRVRFCitQQVNTIENyZWF0ZSB0ZXh0dXJlIHZpZXcgZnJvbSBzd2FwIGNoYWluLiAKK1BB
U1MgQ3JlYXRlIGJhc2ljIGRlcHRoIHRleHR1cmUgZnJvbSBkZXZpY2UuIAorUEFTUyBDcmVhdGUg
YmFzaWMgNHggbXVsdGlzYW1wbGVkIHRleHR1cmUuIAorUEFTUyBDcmVhdGUgYmFzaWMgM0QgdGV4
dHVyZSBmcm9tIGRldmljZS4gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0
dXJlcy10ZXh0dXJldmlld3MuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS90ZXh0dXJlcy10ZXh0
dXJldmlld3MuaHRtbAppbmRleCA3ZGRiNGFjOTY0MDgzYjIwNjUzYWQxZjdkZDkwOWE1NDBmZDNk
N2IxLi45NzI2Y2I2NjEzMjFiZTE5Yzg1M2JiMDA3NDVlZjk5NzFlZjZkZGVhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy5odG1sCkBAIC0xLDM0ICsxLDY2
IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ianMvYmFzaWMtd2ViZ3B1LWZ1
bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1
bm5lciBbIGV4cGVyaW1lbnRhbDpXZWJHUFVFbmFibGVkPXRydWUgXSAtLT4KKzxtZXRhIGNoYXJz
ZXQ9dXRmLTg+Cis8dGl0bGU+QmFzaWMgR1BVVGV4dHVyZSBUZXN0cy48L3RpdGxlPgorPGJvZHk+
Cis8Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NhbnZhcz4KKzxzY3JpcHQgc3Jj
PSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQotZnVuY3Rp
b24gc2V0VXBOZXh0VGV4dHVyZVZpZXcoKSB7Ci0gICAgbGV0IHRleHR1cmUgPSBjb250ZXh0Lmdl
dE5leHRUZXh0dXJlKCk7Ci0gICAgaWYgKHRleHR1cmUpCi0gICAgICAgIHRlc3RQYXNzZWQoIkFj
cXVpcmVkIG5leHQgV2ViR1BVVGV4dHVyZSBmcm9tIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQuIik7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBnZXQgbmV4dCBXZWJH
UFVUZXh0dXJlIGZyb20gV2ViR1BVUmVuZGVyaW5nQ29udGV4dCEiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGxldCB0ZXh0dXJlVmlldyA9IHRleHR1cmUuY3JlYXRlRGVmYXVsdFRl
eHR1cmVWaWV3KCk7Ci0gICAgaWYgKHRleHR1cmVWaWV3KSAKLSAgICAgICAgdGVzdFBhc3NlZCgi
Q3JlYXRlZCBkZWZhdWx0IFdlYkdQVVRleHR1cmVWaWV3IGZyb20gYSBXZWJHUFVUZXh0dXJlIik7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIkNvdWxkIG5vdCBjcmVhdGUgZGVmYXVs
dCBXZWJHUFVUZXh0dXJlVmlldyEiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotLy8g
RklYTUU6IEFkZCB0ZXN0cyBmb3IgZGV2aWNlLmNyZWF0ZVRleHR1cmUsIFdlYkdQVVRleHR1cmVE
ZXNjcmlwdG9yLCBhbmQgV2ViR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLgotCi1ydW5XZWJHUFVU
ZXN0cyhbc2V0VXBOZXh0VGV4dHVyZVZpZXddKTsKLQotc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKK2NvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImNhbnZhcyIpOyAgICAK
K2xldCBkZXZpY2UsIGNvbnRleHQ7CisKK2xldCB0ZXhTaXplID0geworICAgIHdpZHRoOiBjYW52
YXMud2lkdGgsCisgICAgaGVpZ2h0OiBjYW52YXMuaGVpZ2h0LAorICAgIGRlcHRoOiAxCit9Owor
CitsZXQgdGV4RGVzY3JpcHRvciA9IHsKKyAgICBzaXplOiB0ZXhTaXplLAorICAgIGFycmF5TGF5
ZXJDb3VudDogMSwKKyAgICBtaXBMZXZlbENvdW50OiAxLAorICAgIHNhbXBsZUNvdW50OiAxLAor
ICAgIGRpbWVuc2lvbjogIjJkIiwKKyAgICBmb3JtYXQ6ICJkMzItZmxvYXQtczgtdWludCIsCisg
ICAgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5PVVRQVVRfQVRUQUNITUVOVAorfTsKKworcHJvbWlz
ZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgICBkZXZpY2UgPSBhd2FpdCBnZXRCYXNpY0RldmljZSgp
OworICAgIGNvbnRleHQgPSBjcmVhdGVCYXNpY0NvbnRleHQoY2FudmFzLCBkZXZpY2UpOworCisg
ICAgY29uc3QgdGV4dHVyZSA9IGNvbnRleHQuZ2V0TmV4dFRleHR1cmUoKTsKKyAgICBhc3NlcnRf
dHJ1ZSh0ZXh0dXJlIGluc3RhbmNlb2YgV2ViR1BVVGV4dHVyZSwgIlN1Y2Nlc3NmdWxseSBhY3F1
aXJlZCBuZXh0IHRleHR1cmUuIik7CisKKyAgICBjb25zdCB0ZXh0dXJlVmlldyA9IHRleHR1cmUu
Y3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk7CisgICAgYXNzZXJ0X3RydWUodGV4dHVyZVZpZXcg
aW5zdGFuY2VvZiBXZWJHUFVUZXh0dXJlVmlldywgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIHRleHR1
cmUgdmlldyBmcm9tIG5leHQgdGV4dHVyZS4iKTsKK30sICJDcmVhdGUgdGV4dHVyZSB2aWV3IGZy
b20gc3dhcCBjaGFpbi4iKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgICBjb25z
dCBkZXB0aFRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0ZXhEZXNjcmlwdG9yKTsKKyAg
ICBhc3NlcnRfdHJ1ZShkZXB0aFRleHR1cmUgaW5zdGFuY2VvZiBXZWJHUFVUZXh0dXJlLCAiU3Vj
Y2Vzc2Z1bGx5IGNyZWF0ZWQgZGVwdGggdGV4dHVyZS4iKTsKK30sICJDcmVhdGUgYmFzaWMgZGVw
dGggdGV4dHVyZSBmcm9tIGRldmljZS4iKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsK
KyAgICB0ZXhEZXNjcmlwdG9yLnNhbXBsZUNvdW50ID0gNDsKKyAgICB0ZXhEZXNjcmlwdG9yLmZv
cm1hdCA9ICJyOGc4YjhhOC11bm9ybSI7CisgICAgdGV4RGVzY3JpcHRvci51c2FnZSA9IEdQVVRl
eHR1cmVVc2FnZS5TQU1QTEVEIHwgR1BVVGV4dHVyZVVzYWdlLlRSQU5TRkVSX1NSQworCisgICAg
Y29uc3QgbXVsdGlzYW1wbGVkVGV4dHVyZSA9IGRldmljZS5jcmVhdGVUZXh0dXJlKHRleERlc2Ny
aXB0b3IpOworICAgIGFzc2VydF90cnVlKG11bHRpc2FtcGxlZFRleHR1cmUgaW5zdGFuY2VvZiBX
ZWJHUFVUZXh0dXJlLCAiU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgbXVsdGlzYW1wbGVkIHRleHR1cmUu
Iik7Cit9LCAiQ3JlYXRlIGJhc2ljIDR4IG11bHRpc2FtcGxlZCB0ZXh0dXJlLiIpOworCitwcm9t
aXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICAgIHRleERlc2NyaXB0b3Iuc2l6ZS5kZXB0aCA9IDM7
CisgICAgdGV4RGVzY3JpcHRvci5zYW1wbGVDb3VudCA9IDE7CisgICAgdGV4RGVzY3JpcHRvci5k
aW1lbnNpb24gPSAiM2QiOworCisgICAgY29uc3QgdGV4dHVyZTNkID0gZGV2aWNlLmNyZWF0ZVRl
eHR1cmUodGV4RGVzY3JpcHRvcik7CisgICAgYXNzZXJ0X3RydWUodGV4dHVyZTNkIGluc3RhbmNl
b2YgV2ViR1BVVGV4dHVyZSwgIlN1Y2Nlc3NmdWxseSBjcmVhdGVkIGJhc2ljIDNEIHRleHR1cmUu
Iik7Cit9LCAiQ3JlYXRlIGJhc2ljIDNEIHRleHR1cmUgZnJvbSBkZXZpY2UuIik7CisKKy8vIEZJ
WE1FOiBBZGQgdGVzdHMgZm9yIDFEIHRleHR1cmVzLCB0ZXh0dXJlQXJyYXlzLCBhbmQgV2ViR1BV
VGV4dHVyZVZpZXdzLgogPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CiA8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361474</attachid>
            <date>2019-02-07 17:32:28 -0800</date>
            <delta_ts>2019-02-07 18:01:45 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-194409-20190207173228.patch</filename>
            <type>text/plain</type>
            <size>30752</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA4NDBjNjBkYWZhNzA2
ZDUxNDU1MDgxZmM2MTg5NGY5MGZjZmM3OS4uNTA4NjhiNGM5MzRjOTM4ODQyZDQyZTk3YjQwNjc4
NGNhMzgyYTc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE5LTAyLTA3ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBHUFVdIEdQVURl
dmljZTo6Y3JlYXRlVGV4dHVyZSBpbXBsZW1lbnRhdGlvbiBwcm90b3R5cGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQwOQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNDc4OTQzMTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTXlsZXMgQy4gTWF4
ZmllbGQuCisKKyAgICAgICAgVGVzdDogdGV4dHVyZXMtdGV4dHVyZXZpZXdzLmh0bWwgdXBkYXRl
ZCB0byB0ZXN0IG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIEltcGxlbWVudCBHUFVEZXZp
Y2U6OmNyZWF0ZVRleHR1cmUoKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZp
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVRGV2aWNlOjpjcmVhdGVUZXh0dXJlIGNv
bnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVVGV4dHVyZTo6
Y3JlYXRlKTogTW9kaWZpZWQgdG8gcmV0dXJuIG5vbi1udWxsYWJsZSB0byBtYXRjaCBkaXJlY3Rp
b24gb2YgQVBJLgorICAgICAgICAoV2ViQ29yZTo6V2ViR1BVVGV4dHVyZTo6V2ViR1BVVGV4dHVy
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oOgorCisgICAgICAg
IE1ldGFsIGJhY2tlbmQgTVRMVGV4dHVyZURlc2NyaXB0b3IgYW5kIE1UTFRleHR1cmUgY3JlYXRp
b246CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHUFVEZXZpY2U6OnRyeUNyZWF0ZVRleHR1cmUgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9jb2NvYS9HUFVUZXh0dXJlTWV0YWwubW06CisgICAgICAgIChXZWJDb3JlOjptdGxUZXh0
dXJlVHlwZUZvckdQVVRleHR1cmVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Om10bFRl
eHR1cmVVc2FnZUZvckdQVVRleHR1cmVVc2FnZUZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OnN0
b3JhZ2VNb2RlRm9yUGl4ZWxGb3JtYXRBbmRTYW1wbGVDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0cnlDcmVhdGVNdGxUZXh0dXJlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpHUFVU
ZXh0dXJlOjp0cnlDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R1BVVGV4dHVyZTo6Y3JlYXRl
RGVmYXVsdFRleHR1cmVWaWV3KTogQWRkIE9iakMgdHJ5L2NhdGNoIGd1YXJkcy4KKworICAgICAg
ICBBZGQgR1BVVXRpbHMuaC9jcHAgZm9yIHNoYXJlZCB1dGlsaXR5IGZ1bmN0aW9uczoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVXRpbHMuaDog
QWRkZWQuIE1vdmVkIHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQgaGVy
ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0
YWwubW06CisgICAgICAgIChXZWJDb3JlOjpHUFVTd2FwQ2hhaW46OnNldEZvcm1hdCk6CisgICAg
ICAgIChXZWJDb3JlOjpwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KTog
TW92ZWQgdG8gR1BVVXRpbHMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVV0aWxzTWV0YWwubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1UZXh0
dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdCk6IE1vdmVkIGhlcmUgdG8gYmUgcmVmZXJlbmNl
ZCBieSBtdWx0aXBsZSBmaWxlcy4KKwogMjAxOS0wMi0wNiAgSm9obiBXaWxhbmRlciAgPHdpbGFu
ZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGb3J3YXJkIEFkIENsaWNrIEF0dHJpYnV0aW9uIGRh
dGEgZnJvbSBIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2soKSB0byBXZWJLaXQ6Ok5hdmln
YXRpb25BY3Rpb25EYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XZWJHUFVEZXZpY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
RGV2aWNlLmNwcAppbmRleCA0ZGQwYTk0MjBkYmI3NmQ2MzMzMmExZTgzMDJkMDUwNDZjZDdlYzEy
Li4zYzY4MDI4NGE0OGYwYWUwZTgwOGFjNDQ4ZmVhOGQxMDgwNWMzOTJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5jcHAKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJHUFVQaXBlbGluZVN0YWdlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIkdQVVNoYWRlck1vZHVsZURl
c2NyaXB0b3IuaCIKKyNpbmNsdWRlICJHUFVUZXh0dXJlRGVzY3JpcHRvci5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJXZWJHUFVCaW5kR3JvdXAuaCIKICNpbmNsdWRlICJXZWJH
UFVCaW5kR3JvdXBCaW5kaW5nLmgiCkBAIC01Miw2ICs1Myw3IEBACiAjaW5jbHVkZSAiV2ViR1BV
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxl
LmgiCiAjaW5jbHVkZSAiV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5oIgorI2luY2x1ZGUg
IldlYkdQVVRleHR1cmUuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC03OCw2ICs4MCwxMiBAQCBSZWZQdHI8V2ViR1BVQnVmZmVyPiBXZWJHUFVE
ZXZpY2U6OmNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yJiYgZGVzY3JpcAogICAg
IHJldHVybiBudWxscHRyOwogfQogCitSZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVRGV2aWNlOjpj
cmVhdGVUZXh0dXJlKEdQVVRleHR1cmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKK3sK
KyAgICBhdXRvIHRleHR1cmUgPSBtX2RldmljZS0+dHJ5Q3JlYXRlVGV4dHVyZShXVEZNb3ZlKGRl
c2NyaXB0b3IpKTsKKyAgICByZXR1cm4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFdURk1vdmUodGV4
dHVyZSkpOworfQorCiBSZWY8V2ViR1BVQmluZEdyb3VwTGF5b3V0PiBXZWJHUFVEZXZpY2U6OmNy
ZWF0ZUJpbmRHcm91cExheW91dChXZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yJiYgZGVz
Y3JpcHRvcikgY29uc3QKIHsKICAgICBhdXRvIGxheW91dCA9IG1fZGV2aWNlLT50cnlDcmVhdGVC
aW5kR3JvdXBMYXlvdXQoR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciB7IGRlc2NyaXB0b3Iu
YmluZGluZ3MgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmlj
ZS5oCmluZGV4IDg5OThhZDYzY2QwZjliYWFkMDZlMzI0ZjU2MDVjNGU5YTFiYWQzMjEuLjljYWUz
YWU5ODYyNjZjYzZmMGM5OTg0Yjc4NDk5M2E2OWFkNmYwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5oCkBAIC00Nyw3ICs0Nyw5IEBAIGNsYXNzIFdl
YkdQVUNvbW1hbmRCdWZmZXI7CiBjbGFzcyBXZWJHUFVQaXBlbGluZUxheW91dDsKIGNsYXNzIFdl
YkdQVVJlbmRlclBpcGVsaW5lOwogY2xhc3MgV2ViR1BVU2hhZGVyTW9kdWxlOworY2xhc3MgV2Vi
R1BVVGV4dHVyZTsKIAorc3RydWN0IEdQVVRleHR1cmVEZXNjcmlwdG9yOwogc3RydWN0IFdlYkdQ
VUJpbmRHcm91cERlc2NyaXB0b3I7CiBzdHJ1Y3QgV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yOwogc3RydWN0IFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKQEAgLTYxLDYgKzYz
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IEdQVURldmljZSYgZGV2aWNlKCkgY29uc3QgeyByZXR1
cm4gbV9kZXZpY2UuZ2V0KCk7IH0KIAogICAgIFJlZlB0cjxXZWJHUFVCdWZmZXI+IGNyZWF0ZUJ1
ZmZlcihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yJiYpIGNvbnN0OworICAgIFJlZjxXZWJHUFVUZXh0
dXJlPiBjcmVhdGVUZXh0dXJlKEdQVVRleHR1cmVEZXNjcmlwdG9yJiYpIGNvbnN0OwogCiAgICAg
UmVmPFdlYkdQVUJpbmRHcm91cExheW91dD4gY3JlYXRlQmluZEdyb3VwTGF5b3V0KFdlYkdQVUJp
bmRHcm91cExheW91dERlc2NyaXB0b3ImJikgY29uc3Q7CiAgICAgUmVmPFdlYkdQVVBpcGVsaW5l
TGF5b3V0PiBjcmVhdGVQaXBlbGluZUxheW91dChXZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0
b3ImJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVEZXZpY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVRGV2
aWNlLmlkbAppbmRleCAyYzg2YjNjODBiMGIxYjI4NDk1ZGI0OWE4ZWZhZjlmYTFkYzBkNzE0Li44
MzQyYTVkMGFiYjVjNTE4MGMyM2M0YTUxOGI0Y2U2ZjkxOGE4Njg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVEZXZpY2UuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVURldmljZS5pZGwKQEAgLTMyLDYgKzMyLDcgQEAK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgV2ViR1BVQWRhcHRlciBhZGFwdGVyOwogCiAgICAgV2Vi
R1BVQnVmZmVyIGNyZWF0ZUJ1ZmZlcihXZWJHUFVCdWZmZXJEZXNjcmlwdG9yIGRlc2NyaXB0b3Ip
OworICAgIFdlYkdQVVRleHR1cmUgY3JlYXRlVGV4dHVyZShHUFVUZXh0dXJlRGVzY3JpcHRvciBk
ZXNjcmlwdG9yKTsKIAogICAgIFdlYkdQVUJpbmRHcm91cExheW91dCBjcmVhdGVCaW5kR3JvdXBM
YXlvdXQoV2ViR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciBkZXNjcmlwdG9yKTsKICAgICBX
ZWJHUFVQaXBlbGluZUxheW91dCBjcmVhdGVQaXBlbGluZUxheW91dChXZWJHUFVQaXBlbGluZUxh
eW91dERlc2NyaXB0b3IgZGVzY3JpcHRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dlYkdQVVRleHR1cmUuY3BwCmluZGV4IDlkOWQ3Zjk2M2JkMmU5MTU3ZDg1Y2RkMzdj
MTgzMDllMjYzNmNhZDEuLmQ1ZDNiZTZjYTkzNjM1ZWRiMjI3NDkxM2E3Y2MxYThjNDc0M2FhYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVVRleHR1cmUuY3Bw
CkBAIC0zMiwxMiArMzIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8V2Vi
R1BVVGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFJlZlB0cjxHUFVUZXh0dXJlPiYmIHRl
eHR1cmUpCitSZWY8V2ViR1BVVGV4dHVyZT4gV2ViR1BVVGV4dHVyZTo6Y3JlYXRlKFJlZlB0cjxH
UFVUZXh0dXJlPiYmIHRleHR1cmUpCiB7Ci0gICAgcmV0dXJuIHRleHR1cmUgPyBhZG9wdFJlZihu
ZXcgV2ViR1BVVGV4dHVyZSh0ZXh0dXJlLnJlbGVhc2VOb25OdWxsKCkpKSA6IG51bGxwdHI7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR1BVVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKSk7
CiB9CiAKLVdlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUoUmVmPEdQVVRleHR1cmU+JiYgdGV4
dHVyZSkKK1dlYkdQVVRleHR1cmU6OldlYkdQVVRleHR1cmUoUmVmUHRyPEdQVVRleHR1cmU+JiYg
dGV4dHVyZSkKICAgICA6IG1fdGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVGV4dHVyZS5oCmluZGV4IDExYzA4ZGU0
ZDI1ZGMyY2JkZWQ5NDE4YjU1YWM3MjViOTEzNjdlNTUuLmM1OTBiZGY2OTQyZDdiOWJmZmZkMWU3
MmI2MTI4OWJkODBkMzliMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dlYkdQVVRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVUZXh0dXJlLmgKQEAgLTM4LDE0ICszOCwxNCBAQCBjbGFzcyBXZWJHUFVUZXh0dXJlVmll
dzsKIAogY2xhc3MgV2ViR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkdQVVRleHR1
cmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFdlYkdQVVRleHR1cmU+IGNyZWF0ZShS
ZWZQdHI8R1BVVGV4dHVyZT4mJik7CisgICAgc3RhdGljIFJlZjxXZWJHUFVUZXh0dXJlPiBjcmVh
dGUoUmVmUHRyPEdQVVRleHR1cmU+JiYpOwogCiAgICAgUmVmUHRyPFdlYkdQVVRleHR1cmVWaWV3
PiBjcmVhdGVEZWZhdWx0VGV4dHVyZVZpZXcoKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBX
ZWJHUFVUZXh0dXJlKFJlZjxHUFVUZXh0dXJlPiYmKTsKKyAgICBleHBsaWNpdCBXZWJHUFVUZXh0
dXJlKFJlZlB0cjxHUFVUZXh0dXJlPiYmKTsKIAotICAgIFJlZjxHUFVUZXh0dXJlPiBtX3RleHR1
cmU7CisgICAgUmVmUHRyPEdQVVRleHR1cmU+IG1fdGV4dHVyZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDA3MjIyODhkYTFjODkzNWE3
OGY3ZTE5MjA5NmE3YWQ4NTcyZTgwNDMuLjg1M2IxOGE5MTFjNGZmNDU2Y2IwZjNmMzNhMTgwNTli
MGNlODllM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzMxLDYgKzMzMSw3IEBAIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVSZW5kZXJQaXBlbGluZU1ldGFsLm1tCiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L2NvY29hL0dQVVRleHR1cmVNZXRhbC5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVV0aWxzTWV0YWwubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMWRjZDk2NzBiOTlk
MmVmODMzOGY4MjliMjk0NDcxZTI3Zjg1YTVmLi40ZGM0NjkxODJiZDkwNDUxYzY3YzYyN2RhODE4
ODQwMTNlNzhlYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xNDA1OCw2ICsxNDA1OCw4IEBACiAJCUQwNkE5QTIxMjIwMjZD
N0EwMDgzQzY2MiAvKiBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUQwNkMwRDhEMENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21tYW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW92ZUZvcm1hdENvbW1hbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDA2QzBEOEUwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92
ZUZvcm1hdENvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQw
NkVGNTUyMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVV
dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMDZFRjU1MzIyMEJBMjZBMDAx
ODcyNEUgLyogR1BVVXRpbHNNZXRhbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdQVVV0aWxz
TWV0YWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwN0RFQUI3MEEzNjU1NEEw
MENBMzBGOCAvKiBJbnNlcnRMaXN0Q29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW5zZXJ0TGlzdENvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEMDdERUFCODBBMzY1NTRBMDBDQTMwRjggLyogSW5zZXJ0TGlzdENvbW1hbmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc2VydExpc3RDb21tYW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwODNEOTg0MjFDNDgwNTAwMDhFOEVGRiAv
KiBHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVUJpbmRH
cm91cExheW91dERlc2NyaXB0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4
NDkwLDYgKzE4NDkyLDcgQEAKIAkJCQlEMDI2RjQ4NjIyMEE1MDU5MDBBQzVGNDkgLyogR1BVVGV4
dHVyZURpbWVuc2lvbi5oICovLAogCQkJCTMxMkZGOEMzMjFBNEMyRjMwMEVCMTk5RCAvKiBHUFVU
ZXh0dXJlRm9ybWF0LmggKi8sCiAJCQkJRDAyNkY0ODUyMjBBNDc3MjAwQUM1RjQ5IC8qIEdQVVRl
eHR1cmVVc2FnZS5oICovLAorCQkJCUQwNkVGNTUyMjIwQkEyNkEwMDE4NzI0RSAvKiBHUFVVdGls
cy5oICovLAogCQkJCUQwRDg2NDlCMjFCQTFDMkQwMDNDOTgzQyAvKiBHUFVWZXJ0ZXhBdHRyaWJ1
dGVEZXNjcmlwdG9yLmggKi8sCiAJCQkJRDBEODY0OUMyMUJBMUNFODAwM0M5ODNDIC8qIEdQVVZl
cnRleElucHV0RGVzY3JpcHRvci5oICovLAogCQkJCTQ5ODc3MEQ3MTI0MkM1MzUwMDIyMjZCQSAv
KiBUZXh0dXJlLmNwcCAqLywKQEAgLTI2MTc1LDYgKzI2MTc4LDcgQEAKIAkJCQlEMDg3Q0U0MDIx
QUNBOTQyMDBCREUxNzQgLyogR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0gKi8sCiAJCQkJRDA4N0NF
M0UyMUFDQTk0MjAwQkRFMTc0IC8qIEdQVVN3YXBDaGFpbk1ldGFsLm1tICovLAogCQkJCUQwODdD
RTNGMjFBQ0E5NDIwMEJERTE3NCAvKiBHUFVUZXh0dXJlTWV0YWwubW0gKi8sCisJCQkJRDA2RUY1
NTMyMjBCQTI2QTAwMTg3MjRFIC8qIEdQVVV0aWxzTWV0YWwubW0gKi8sCiAJCQkpOwogCQkJcGF0
aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVEZXZpY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5jcHAKaW5kZXggNDE1MjRhNTg3
ZGFjMWU4YWFmNDA3YzhiOTI3NjRlMmZmYjZlZTMzNS4uMTYzNTFlODBmZTdjZGNhZDRhYmQ0MzRm
MTZkOTY2NWEyNDY5MDMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVURldmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0dQVURldmljZS5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuaCIKICNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGUuaCIK
ICNpbmNsdWRlICJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiR1BVVGV4
dHVyZS5oIgorI2luY2x1ZGUgIkdQVVRleHR1cmVEZXNjcmlwdG9yLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDcsNiArNDksMTEgQEAgUmVmUHRyPEdQVUJ1ZmZlcj4gR1BVRGV2aWNl
OjpjcmVhdGVCdWZmZXIoR1BVQnVmZmVyRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnMKICAg
ICByZXR1cm4gR1BVQnVmZmVyOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUoZGVzY3JpcHRvcikpOwog
fQogCitSZWZQdHI8R1BVVGV4dHVyZT4gR1BVRGV2aWNlOjp0cnlDcmVhdGVUZXh0dXJlKEdQVVRl
eHR1cmVEZXNjcmlwdG9yJiYgZGVzY3JpcHRvcikgY29uc3QKK3sKKyAgICByZXR1cm4gR1BVVGV4
dHVyZTo6dHJ5Q3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKTsKK30KKwogUmVmUHRy
PEdQVUJpbmRHcm91cExheW91dD4gR1BVRGV2aWNlOjp0cnlDcmVhdGVCaW5kR3JvdXBMYXlvdXQo
R1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIEdQVUJpbmRHcm91cExheW91dDo6dHJ5Q3JlYXRlKCp0aGlzLCBXVEZNb3ZlKGRlc2Ny
aXB0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9HUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVE
ZXZpY2UuaAppbmRleCA5YzliNTk3N2E0YTAyYjE3NjE5MWFlNzNkZWM1ZTE1MzdkNTc1MTBhLi40
NTZlYjg0NTVkZDRlNTY0YzQ1MzJiZDNiMmMzZmQ2MjcxYjU5YjQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVRGV2aWNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVURldmljZS5oCkBAIC00Niw2ICs0Niw3
IEBAIGNsYXNzIEdQVUNvbW1hbmRCdWZmZXI7CiBjbGFzcyBHUFVQaXBlbGluZUxheW91dDsKIGNs
YXNzIEdQVVJlbmRlclBpcGVsaW5lOwogY2xhc3MgR1BVU2hhZGVyTW9kdWxlOworY2xhc3MgR1BV
VGV4dHVyZTsKIAogc3RydWN0IEdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3I7CiBzdHJ1Y3Qg
R1BVQnVmZmVyRGVzY3JpcHRvcjsKQEAgLTUzLDEyICs1NCwxNCBAQCBzdHJ1Y3QgR1BVUGlwZWxp
bmVMYXlvdXREZXNjcmlwdG9yOwogc3RydWN0IEdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsK
IHN0cnVjdCBHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnM7CiBzdHJ1Y3QgR1BVU2hhZGVyTW9kdWxl
RGVzY3JpcHRvcjsKK3N0cnVjdCBHUFVUZXh0dXJlRGVzY3JpcHRvcjsKIAogY2xhc3MgR1BVRGV2
aWNlIDogcHVibGljIFJlZkNvdW50ZWQ8R1BVRGV2aWNlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZlB0cjxHUFVEZXZpY2U+IGNyZWF0ZShPcHRpb25hbDxHUFVSZXF1ZXN0QWRhcHRlck9wdGlv
bnM+JiYpOwogCiAgICAgUmVmUHRyPEdQVUJ1ZmZlcj4gY3JlYXRlQnVmZmVyKEdQVUJ1ZmZlckRl
c2NyaXB0b3ImJikgY29uc3Q7CisgICAgUmVmUHRyPEdQVVRleHR1cmU+IHRyeUNyZWF0ZVRleHR1
cmUoR1BVVGV4dHVyZURlc2NyaXB0b3ImJikgY29uc3Q7CiAKICAgICBSZWZQdHI8R1BVQmluZEdy
b3VwTGF5b3V0PiB0cnlDcmVhdGVCaW5kR3JvdXBMYXlvdXQoR1BVQmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvciYmKSBjb25zdDsKICAgICBSZWY8R1BVUGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZVBpcGVs
aW5lTGF5b3V0KEdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciYmKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVGV4dHVyZS5oCmluZGV4IDY5
NTMxNTVhN2EyYjg5MTJjZjE4OWNkZTYyYjhmZWUzNDI5NWFkMjkuLjUwMmIxMmJiODc5NzcwNTYx
OTkzNmFiMjBkMWZlZjc3OGY1YTRjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9HUFVUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0dQVVRleHR1cmUuaApAQCAtMzUsMTEgKzM1LDE2IEBAIE9CSkNfUFJP
VE9DT0woTVRMVGV4dHVyZSk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgR1BVRGV2
aWNlOworCitzdHJ1Y3QgR1BVVGV4dHVyZURlc2NyaXB0b3I7CisKIHVzaW5nIFBsYXRmb3JtVGV4
dHVyZSA9IE1UTFRleHR1cmU7CiB1c2luZyBQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciA9IFJldGFp
blB0cjxNVExUZXh0dXJlPjsKIAogY2xhc3MgR1BVVGV4dHVyZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEdQVVRleHR1cmU+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPEdQVVRleHR1cmU+IHRy
eUNyZWF0ZShjb25zdCBHUFVEZXZpY2UmLCBHUFVUZXh0dXJlRGVzY3JpcHRvciYmKTsKICAgICBz
dGF0aWMgUmVmPEdQVVRleHR1cmU+IGNyZWF0ZShQbGF0Zm9ybVRleHR1cmVTbWFydFB0ciYmKTsK
IAogICAgIFBsYXRmb3JtVGV4dHVyZSAqcGxhdGZvcm1UZXh0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybVRleHR1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0dQVVV0aWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDcwNWFiNWE4ZDM5NDI1Y2QyMjBm
NTgxNDc2NGM1ZThkYmIyZjU3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVVdGlscy5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJHUFVU
ZXh0dXJlRm9ybWF0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGxhdGZvcm1UZXh0dXJl
Rm9ybWF0IHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQoR1BVVGV4dHVy
ZUZvcm1hdCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
Y29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVU3dhcENoYWluTWV0YWwubW0KaW5kZXggZjQ4ZGY0MWFkNWFkNWYx
NjllNzQwZDE0ZTM4NDVlZDJlODhhM2M2My4uMTU1MDJlOWNkNmI2YzUzODcwZWM2YjNkYWRmMmY4
OGNjNjMwMGI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVN3YXBDaGFpbk1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTd2FwQ2hhaW5NZXRhbC5tbQpAQCAtMzEsOSArMzEs
OSBAQAogI2ltcG9ydCAiR1BVRGV2aWNlLmgiCiAjaW1wb3J0ICJHUFVUZXh0dXJlLmgiCiAjaW1w
b3J0ICJHUFVUZXh0dXJlRm9ybWF0LmgiCisjaW1wb3J0ICJHUFVVdGlscy5oIgogI2ltcG9ydCAi
TG9nZ2luZy5oIgogI2ltcG9ydCAiV2ViR1BVTGF5ZXIuaCIKLQogI2ltcG9ydCA8TWV0YWwvTWV0
YWwuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8d3RmL0Js
b2NrT2JqQ0V4Y2VwdGlvbnMuaD4KQEAgLTgwLDM2ICs4MCwxNSBAQCB2b2lkIEdQVVN3YXBDaGFp
bjo6c2V0RGV2aWNlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlKQogICAgIFttX3BsYXRmb3JtU3dh
cExheWVyIHNldERldmljZTpkZXZpY2UucGxhdGZvcm1EZXZpY2UoKV07CiB9CiAKLXN0YXRpYyBP
cHRpb25hbDxQbGF0Zm9ybVRleHR1cmVGb3JtYXQ+IHBsYXRmb3JtVGV4dHVyZUZvcm1hdEZvckdQ
VVRleHR1cmVGb3JtYXQoR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQpCi17Ci0gICAgc3dpdGNoIChm
b3JtYXQpIHsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OlI4ZzhiOGE4VW5vcm06Ci0gICAg
ICAgIHJldHVybiBNVExQaXhlbEZvcm1hdFJHQkE4VW5vcm07Ci0gICAgY2FzZSBHUFVUZXh0dXJl
Rm9ybWF0OjpSOGc4YjhhOFVpbnQ6Ci0gICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdFJHQkE4
VWludDsKLSAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OkI4ZzhyOGE4VW5vcm06Ci0gICAgICAg
IHJldHVybiBNVExQaXhlbEZvcm1hdEJHUkE4VW5vcm07Ci0gICAgY2FzZSBHUFVUZXh0dXJlRm9y
bWF0OjpEMzJGbG9hdFM4VWludDoKLSAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0RGVwdGgz
MkZsb2F0X1N0ZW5jaWw4OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIExPRyhXZWJHUFUsICJHUFVT
d2FwQ2hhaW46OnNldEZvcm1hdCgpOiBJbnZhbGlkIHRleHR1cmUgZm9ybWF0IHNwZWNpZmllZCEi
KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICB9Ci19Ci0KIHZvaWQgR1BVU3dh
cENoYWluOjpzZXRGb3JtYXQoR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBwbGF0Zm9ybVRleHR1cmVGb3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KGZvcm1hdCk7
Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gbXRsUmVzdWx0
ID0gc3RhdGljX2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+KHJlc3VsdC52YWx1ZSgpKTsKKyAgICBhdXRv
IG10bEZvcm1hdCA9IHN0YXRpY19jYXN0PE1UTFBpeGVsRm9ybWF0PihwbGF0Zm9ybVRleHR1cmVG
b3JtYXRGb3JHUFVUZXh0dXJlRm9ybWF0KGZvcm1hdCkpOwogCi0gICAgc3dpdGNoIChtdGxSZXN1
bHQpIHsKKyAgICBzd2l0Y2ggKG10bEZvcm1hdCkgewogICAgIGNhc2UgTVRMUGl4ZWxGb3JtYXRC
R1JBOFVub3JtOgogICAgIC8vIEZJWE1FOiBBZGQgdGhlIG90aGVyIHN1cHBvcnRlZCBzd2FwIGxh
eWVyIGZvcm1hdHMgYXMgdGhleSBhcmUgYWRkZWQgdG8gR1BVIHNwZWMuCiAgICAgLy8gIE1UTFBp
eGVsRm9ybWF0QkdSQThVbm9ybV9zUkdCLCBNVExQaXhlbEZvcm1hdFJHQkExNkZsb2F0LCBNVExQ
aXhlbEZvcm1hdEJHUkExMF9YUiwgYW5kIE1UTFBpeGVsRm9ybWF0QkdSQTEwX1hSX3NSR0IuCi0g
ICAgICAgIFttX3BsYXRmb3JtU3dhcExheWVyIHNldFBpeGVsRm9ybWF0Om10bFJlc3VsdF07Cisg
ICAgICAgIFttX3BsYXRmb3JtU3dhcExheWVyIHNldFBpeGVsRm9ybWF0Om10bEZvcm1hdF07CiAg
ICAgICAgIHJldHVybjsKICAgICBkZWZhdWx0OgogICAgICAgICBMT0coV2ViR1BVLCAiR1BVU3dh
cENoYWluOjpzZXRGb3JtYXQoKTogVW5zdXBwb3J0ZWQgTVRMUGl4ZWxGb3JtYXQhIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4
dHVyZU1ldGFsLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29h
L0dQVVRleHR1cmVNZXRhbC5tbQppbmRleCA1Y2JjMWY5NWI2OTY0MTZmMmQ2M2NkMzBjNDVkNzRl
ZGU0NWUxZTZkLi5kNzdmM2YxY2M5NDE0MWI3MGU0Y2YyMWQ0YmQ3NDc4Yzk2ZjM2MjhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVGV4
dHVyZU1ldGFsLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9j
b2NvYS9HUFVUZXh0dXJlTWV0YWwubW0KQEAgLTI4LDEzICsyOCwxNDAgQEAKIAogI2lmIEVOQUJM
RShXRUJHUFUpCiAKKyNpbXBvcnQgIkdQVURldmljZS5oIgorI2ltcG9ydCAiR1BVVGV4dHVyZURl
c2NyaXB0b3IuaCIKKyNpbXBvcnQgIkdQVVV0aWxzLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCi0K
ICNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9u
cy5oPgorI2ltcG9ydCA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
c3RhdGljIE1UTFRleHR1cmVUeXBlIG10bFRleHR1cmVUeXBlRm9yR1BVVGV4dHVyZURlc2NyaXB0
b3IoY29uc3QgR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgc3dpdGNo
IChkZXNjcmlwdG9yLmRpbWVuc2lvbikgeworICAgIGNhc2UgR1BVVGV4dHVyZURpbWVuc2lvbjo6
XzFkOgorICAgICAgICByZXR1cm4gKGRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50ID09IDEpID8g
TVRMVGV4dHVyZVR5cGUxRCA6IE1UTFRleHR1cmVUeXBlMURBcnJheTsKKyAgICBjYXNlIEdQVVRl
eHR1cmVEaW1lbnNpb246Ol8yZDogeworICAgICAgICBpZiAoZGVzY3JpcHRvci5hcnJheUxheWVy
Q291bnQgPT0gMSkKKyAgICAgICAgICAgIHJldHVybiAoZGVzY3JpcHRvci5zYW1wbGVDb3VudCA9
PSAxKSA/IE1UTFRleHR1cmVUeXBlMkQgOiBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGU7CisK
KyAgICAgICAgcmV0dXJuIE1UTFRleHR1cmVUeXBlMkRBcnJheTsKKyAgICB9CisgICAgY2FzZSBH
UFVUZXh0dXJlRGltZW5zaW9uOjpfM2Q6CisgICAgICAgIHJldHVybiBNVExUZXh0dXJlVHlwZTNE
OworICAgIH0KK30KKworc3RhdGljIE9wdGlvbmFsPE1UTFRleHR1cmVVc2FnZT4gbXRsVGV4dHVy
ZVVzYWdlRm9yR1BVVGV4dHVyZVVzYWdlRmxhZ3MoR1BVVGV4dHVyZVVzYWdlRmxhZ3MgZmxhZ3Mp
Cit7CisgICAgTVRMVGV4dHVyZVVzYWdlIHVzYWdlID0gTVRMVGV4dHVyZVVzYWdlVW5rbm93bjsK
KworICAgIGlmIChmbGFncyAmIEdQVVRleHR1cmVVc2FnZTo6U3RvcmFnZSkKKyAgICAgICAgdXNh
Z2UgfD0gTVRMVGV4dHVyZVVzYWdlU2hhZGVyV3JpdGUgfCBNVExUZXh0dXJlVXNhZ2VTaGFkZXJS
ZWFkIHwgTVRMVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3OworCisgICAgaWYgKGZsYWdzICYg
R1BVVGV4dHVyZVVzYWdlOjpTYW1wbGVkKSB7CisgICAgICAgIC8vIFNBTVBMRUQgaXMgYSByZWFk
LW9ubHkgdXNhZ2UuCisgICAgICAgIGlmIChmbGFncyAmIEdQVVRleHR1cmVVc2FnZTo6U3RvcmFn
ZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgdXNhZ2UgfD0g
TVRMVGV4dHVyZVVzYWdlU2hhZGVyUmVhZCB8IE1UTFRleHR1cmVVc2FnZVBpeGVsRm9ybWF0Vmll
dzsKKyAgICB9CisKKyAgICBpZiAoZmxhZ3MgJiBHUFVUZXh0dXJlVXNhZ2U6Ok91dHB1dEF0dGFj
aG1lbnQpCisgICAgICAgIHVzYWdlIHw9IE1UTFRleHR1cmVVc2FnZVJlbmRlclRhcmdldDsKKwor
ICAgIHJldHVybiB1c2FnZTsKK30KKworc3RhdGljIE1UTFN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2Rl
Rm9yUGl4ZWxGb3JtYXRBbmRTYW1wbGVDb3VudChNVExQaXhlbEZvcm1hdCBmb3JtYXQsIHVuc2ln
bmVkIGxvbmcgc2FtcGxlcykKK3sKKyAgICAvLyBEZXB0aCwgU3RlbmNpbCwgRGVwdGhTdGVuY2ls
LCBhbmQgTXVsdGlzYW1wbGUgdGV4dHVyZXMgbXVzdCBiZSBhbGxvY2F0ZWQgd2l0aCB0aGUgTVRM
U3RvcmFnZU1vZGVQcml2YXRlIHJlc291cmNlIG9wdGlvbi4KKyAgICBpZiAoZm9ybWF0ID09IE1U
TFBpeGVsRm9ybWF0RGVwdGgzMkZsb2F0X1N0ZW5jaWw4IHx8IHNhbXBsZXMgPiAxKQorICAgICAg
ICByZXR1cm4gTVRMU3RvcmFnZU1vZGVQcml2YXRlOworCisgICAgcmV0dXJuIE1UTFN0b3JhZ2VN
b2RlTWFuYWdlZDsKK30KKworc3RhdGljIFJldGFpblB0cjxNVExUZXh0dXJlRGVzY3JpcHRvcj4g
dHJ5Q3JlYXRlTXRsVGV4dHVyZURlc2NyaXB0b3IoY29uc3QgY2hhciogY29uc3QgZnVuY3Rpb25O
YW1lLCBjb25zdCBHUFVUZXh0dXJlRGVzY3JpcHRvciYmIGRlc2NyaXB0b3IpCit7CisjaWYgTE9H
X0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKGZ1bmN0aW9uTmFtZSk7CisjZW5kaWYKKworICAg
IFJldGFpblB0cjxNVExUZXh0dXJlRGVzY3JpcHRvcj4gbXRsRGVzY3JpcHRvcjsKKworICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIG10bERlc2NyaXB0b3IgPSBhZG9wdE5T
KFtNVExUZXh0dXJlRGVzY3JpcHRvciBuZXddKTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CisKKyAgICBpZiAoIW10bERlc2NyaXB0b3IpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBVbmFibGUgdG8gY3JlYXRlIG5ldyBNVExUZXh0dXJlRGVzY3JpcHRvciEiLCBmdW5jdGlv
bk5hbWUpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTog
QWRkIG1vcmUgdmFsaWRhdGlvbiBhcyBjb25zdHJhaW50cyBhcmUgYWRkZWQgdG8gc3BlYy4KKyAg
ICBhdXRvIHBpeGVsRm9ybWF0ID0gc3RhdGljX2Nhc3Q8TVRMUGl4ZWxGb3JtYXQ+KHBsYXRmb3Jt
VGV4dHVyZUZvcm1hdEZvckdQVVRleHR1cmVGb3JtYXQoZGVzY3JpcHRvci5mb3JtYXQpKTsKKwor
ICAgIGF1dG8gdXNhZ2UgPSBtdGxUZXh0dXJlVXNhZ2VGb3JHUFVUZXh0dXJlVXNhZ2VGbGFncyhk
ZXNjcmlwdG9yLnVzYWdlKTsKKyAgICBpZiAoIXVzYWdlKSB7CisgICAgICAgIExPRyhXZWJHUFUs
ICIlczogSW52YWxpZCBHUFVUZXh0dXJlVXNhZ2VGbGFncyEiLCBmdW5jdGlvbk5hbWUpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIHN0b3JhZ2VNb2RlID0gc3Rv
cmFnZU1vZGVGb3JQaXhlbEZvcm1hdEFuZFNhbXBsZUNvdW50KHBpeGVsRm9ybWF0LCBkZXNjcmlw
dG9yLnNhbXBsZUNvdW50KTsKKworICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKwor
ICAgIFttdGxEZXNjcmlwdG9yIHNldFdpZHRoOmRlc2NyaXB0b3Iuc2l6ZS53aWR0aF07CisgICAg
W210bERlc2NyaXB0b3Igc2V0SGVpZ2h0OmRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHRdOworICAgIFtt
dGxEZXNjcmlwdG9yIHNldERlcHRoOmRlc2NyaXB0b3Iuc2l6ZS5kZXB0aF07CisgICAgW210bERl
c2NyaXB0b3Igc2V0QXJyYXlMZW5ndGg6ZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnRdOworICAg
IFttdGxEZXNjcmlwdG9yIHNldE1pcG1hcExldmVsQ291bnQ6ZGVzY3JpcHRvci5taXBMZXZlbENv
dW50XTsKKyAgICBbbXRsRGVzY3JpcHRvciBzZXRTYW1wbGVDb3VudDpkZXNjcmlwdG9yLnNhbXBs
ZUNvdW50XTsKKyAgICBbbXRsRGVzY3JpcHRvciBzZXRUZXh0dXJlVHlwZTptdGxUZXh0dXJlVHlw
ZUZvckdQVVRleHR1cmVEZXNjcmlwdG9yKGRlc2NyaXB0b3IpXTsKKyAgICBbbXRsRGVzY3JpcHRv
ciBzZXRQaXhlbEZvcm1hdDpwaXhlbEZvcm1hdF07CisgICAgW210bERlc2NyaXB0b3Igc2V0VXNh
Z2U6KnVzYWdlXTsKKworICAgIFttdGxEZXNjcmlwdG9yIHNldFN0b3JhZ2VNb2RlOnN0b3JhZ2VN
b2RlXTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICByZXR1cm4gbXRs
RGVzY3JpcHRvcjsKK30KKworUmVmUHRyPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OnRyeUNyZWF0
ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVVGV4dHVyZURlc2NyaXB0b3ImJiBkZXNjcmlw
dG9yKQoreworICAgIGNvbnN0IGNoYXIqIGNvbnN0IGZ1bmN0aW9uTmFtZSA9ICJHUFVUZXh0dXJl
Ojp0cnlDcmVhdGUoKSI7CisKKyAgICBpZiAoIWRldmljZS5wbGF0Zm9ybURldmljZSgpKSB7Cisg
ICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBHUFVEZXZpY2UhIiwgZnVuY3Rpb25OYW1l
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBtdGxEZXNjcmlw
dG9yID0gdHJ5Q3JlYXRlTXRsVGV4dHVyZURlc2NyaXB0b3IoZnVuY3Rpb25OYW1lLCBXVEZNb3Zl
KGRlc2NyaXB0b3IpKTsKKyAgICBpZiAoIW10bERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgUmV0YWluUHRyPE1UTFRleHR1cmU+IG10bFRleHR1cmU7CisKKyAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBtdGxUZXh0dXJlID0gYWRvcHROUyhb
ZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3VGV4dHVyZVdpdGhEZXNjcmlwdG9yOm10bERlc2Ny
aXB0b3IuZ2V0KCldKTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBp
ZiAoIW10bFRleHR1cmUpIHsKKyAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBVbmFibGUgdG8gY3Jl
YXRlIE1UTFRleHR1cmUhIiwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVUZXh0dXJlKFdURk1vdmUobXRs
VGV4dHVyZSkpKTsKK30KKwogUmVmPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OmNyZWF0ZShQbGF0
Zm9ybVRleHR1cmVTbWFydFB0ciYmIHRleHR1cmUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgR1BVVGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKSk7CkBAIC00OSw4ICsxNzYsMTIgQEAgUmVm
UHRyPEdQVVRleHR1cmU+IEdQVVRleHR1cmU6OmNyZWF0ZURlZmF1bHRUZXh0dXJlVmlldygpCiB7
CiAgICAgUmV0YWluUHRyPE1UTFRleHR1cmU+IHRleHR1cmU7CiAKKyAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CisKICAgICB0ZXh0dXJlID0gYWRvcHROUyhbbV9wbGF0Zm9ybVRleHR1
cmUgbmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6bV9wbGF0Zm9ybVRleHR1cmUuZ2V0KCku
cGl4ZWxGb3JtYXRdKTsKIAorICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKICAgICBp
ZiAoIXRleHR1cmUpIHsKICAgICAgICAgTE9HKFdlYkdQVSwgIkdQVVRleHR1cmU6OmNyZWF0ZURl
ZmF1bHRUZXh0dXJlVmlldygpOiBVbmFibGUgdG8gY3JlYXRlIE1UTFRleHR1cmUgdmlldyEiKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVXRpbHNNZXRhbC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVVdGlsc01ldGFsLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU0YjM3MDIxYTM5NDk5YmVhYzgzMWM4MGQ0M2EyMzVjMjk1NjU0MTMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVVXRpbHNN
ZXRhbC5tbQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJHUFVVdGlscy5oIgorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2ltcG9ydCA8
TWV0YWwvTWV0YWwuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQbGF0Zm9ybVRleHR1cmVG
b3JtYXQgcGxhdGZvcm1UZXh0dXJlRm9ybWF0Rm9yR1BVVGV4dHVyZUZvcm1hdChHUFVUZXh0dXJl
Rm9ybWF0IGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgR1BVVGV4
dHVyZUZvcm1hdDo6UjhnOGI4YThVbm9ybToKKyAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0
UkdCQThVbm9ybTsKKyAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OlI4ZzhiOGE4VWludDoKKyAg
ICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0UkdCQThVaW50OworICAgIGNhc2UgR1BVVGV4dHVy
ZUZvcm1hdDo6QjhnOHI4YThVbm9ybToKKyAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0QkdS
QThVbm9ybTsKKyAgICBjYXNlIEdQVVRleHR1cmVGb3JtYXQ6OkQzMkZsb2F0UzhVaW50OgorICAg
ICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXRfU3RlbmNpbDg7CisgICAgfQor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGQ4YTM5NzRmYTZlNmZlNzAzNmRiODYwNjQ2Njk5ZTk0ODBmMjhmYjMuLjNjNjU1ZTMx
OWJkMDFiNjJlOThkNzdlYzNiYmEyN2M1YzFhMGQzOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxOS0wMi0wNyAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgorCisgICAgICAg
IFtXZWIgR1BVXSBHUFVEZXZpY2U6OmNyZWF0ZVRleHR1cmUgaW1wbGVtZW50YXRpb24gcHJvdG90
eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ0
MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3ODk0MzEyPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE15bGVzIEMuIE1heGZpZWxkLgorCisgICAgICAgIFVwZGF0ZSB0ZXh0dXJlcy10ZXh0dXJl
dmlld3MuaHRtbCB0byBXUFQgZm9ybWF0IGFuZCB0byB0ZXN0IGNyZWF0aW9uIG9mIHRleHR1cmVz
IHZpYSB0aGUgR1BVRGV2aWNlLgorCisgICAgICAgICogd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2
aWV3cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3
cy5odG1sOgorCiAyMDE5LTAyLTA2ICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYiBHUFVdIEltcGxlbWVudCBzdXBwb3J0aW5nIGRpY3Rpb25hcmllcyBm
b3IgR1BVVGV4dHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmVzLXRl
eHR1cmV2aWV3cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZXMtdGV4
dHVyZXZpZXdzLWV4cGVjdGVkLnR4dAppbmRleCA2MjAzY2MxODFiZDhlMzg2MmFmYTJkZDc4ZDU1
MDk2OTQ1NzMxNmE3Li44MmU3MGQ4MTE4NjVmYjFkOWJhN2IwZjgwZDVkODdjYTY1N2M1MGZhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZpZXdzLWV4
cGVjdGVkLnR4dApAQCAtMSw4ICsxLDYgQEAKLVBBU1MgW29iamVjdCBXZWJHUFVdIGlzIGRlZmlu
ZWQuCi1QQVNTIEFjcXVpcmVkIG5leHQgV2ViR1BVVGV4dHVyZSBmcm9tIFdlYkdQVVJlbmRlcmlu
Z0NvbnRleHQuCi1QQVNTIENyZWF0ZWQgZGVmYXVsdCBXZWJHUFVUZXh0dXJlVmlldyBmcm9tIGEg
V2ViR1BVVGV4dHVyZQotQWxsIHRlc3RzIGNvbXBsZXRlLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCi1URVNUIENPTVBMRVRFCitQQVNTIENyZWF0ZSB0ZXh0dXJlIHZpZXcgZnJv
bSBzd2FwIGNoYWluLiAKK1BBU1MgQ3JlYXRlIGJhc2ljIGRlcHRoIHRleHR1cmUgZnJvbSBkZXZp
Y2UuIAorUEFTUyBDcmVhdGUgYmFzaWMgNHggbXVsdGlzYW1wbGVkIHRleHR1cmUuIAorUEFTUyBD
cmVhdGUgYmFzaWMgM0QgdGV4dHVyZSBmcm9tIGRldmljZS4gCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MuaHRtbCBiL0xheW91dFRlc3RzL3dl
YmdwdS90ZXh0dXJlcy10ZXh0dXJldmlld3MuaHRtbAppbmRleCA3ZGRiNGFjOTY0MDgzYjIwNjUz
YWQxZjdkZDkwOWE1NDBmZDNkN2IxLi45NzI2Y2I2NjEzMjFiZTE5Yzg1M2JiMDA3NDVlZjk5NzFl
ZjZkZGVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJncHUvdGV4dHVyZXMtdGV4dHVyZXZp
ZXdzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ3B1L3RleHR1cmVzLXRleHR1cmV2aWV3cy5o
dG1sCkBAIC0xLDM0ICsxLDY2IEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
anMvYmFzaWMtd2ViZ3B1LWZ1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8IURPQ1RZUEUgaHRtbD48
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpXZWJHUFVFbmFibGVkPXRydWUg
XSAtLT4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8dGl0bGU+QmFzaWMgR1BVVGV4dHVyZSBUZXN0
cy48L3RpdGxlPgorPGJvZHk+Cis8Y2FudmFzIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2Nh
bnZhcz4KKzxzY3JpcHQgc3JjPSJqcy93ZWJncHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKLQotZnVuY3Rpb24gc2V0VXBOZXh0VGV4dHVyZVZpZXcoKSB7Ci0gICAgbGV0IHRl
eHR1cmUgPSBjb250ZXh0LmdldE5leHRUZXh0dXJlKCk7Ci0gICAgaWYgKHRleHR1cmUpCi0gICAg
ICAgIHRlc3RQYXNzZWQoIkFjcXVpcmVkIG5leHQgV2ViR1BVVGV4dHVyZSBmcm9tIFdlYkdQVVJl
bmRlcmluZ0NvbnRleHQuIik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIkNvdWxk
IG5vdCBnZXQgbmV4dCBXZWJHUFVUZXh0dXJlIGZyb20gV2ViR1BVUmVuZGVyaW5nQ29udGV4dCEi
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGxldCB0ZXh0dXJlVmlldyA9IHRleHR1
cmUuY3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk7Ci0gICAgaWYgKHRleHR1cmVWaWV3KSAKLSAg
ICAgICAgdGVzdFBhc3NlZCgiQ3JlYXRlZCBkZWZhdWx0IFdlYkdQVVRleHR1cmVWaWV3IGZyb20g
YSBXZWJHUFVUZXh0dXJlIik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIkNvdWxk
IG5vdCBjcmVhdGUgZGVmYXVsdCBXZWJHUFVUZXh0dXJlVmlldyEiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLX0KLQotLy8gRklYTUU6IEFkZCB0ZXN0cyBmb3IgZGV2aWNlLmNyZWF0ZVRleHR1
cmUsIFdlYkdQVVRleHR1cmVEZXNjcmlwdG9yLCBhbmQgV2ViR1BVVGV4dHVyZVZpZXdEZXNjcmlw
dG9yLgotCi1ydW5XZWJHUFVUZXN0cyhbc2V0VXBOZXh0VGV4dHVyZVZpZXddKTsKLQotc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK2NvbnN0IGNhbnZhcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoImNhbnZhcyIpOyAgICAKK2xldCBkZXZpY2UsIGNvbnRleHQ7CisKK2xldCB0ZXhTaXplID0g
eworICAgIHdpZHRoOiBjYW52YXMud2lkdGgsCisgICAgaGVpZ2h0OiBjYW52YXMuaGVpZ2h0LAor
ICAgIGRlcHRoOiAxCit9OworCitsZXQgdGV4RGVzY3JpcHRvciA9IHsKKyAgICBzaXplOiB0ZXhT
aXplLAorICAgIGFycmF5TGF5ZXJDb3VudDogMSwKKyAgICBtaXBMZXZlbENvdW50OiAxLAorICAg
IHNhbXBsZUNvdW50OiAxLAorICAgIGRpbWVuc2lvbjogIjJkIiwKKyAgICBmb3JtYXQ6ICJkMzIt
ZmxvYXQtczgtdWludCIsCisgICAgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5PVVRQVVRfQVRUQUNI
TUVOVAorfTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKKyAgICBkZXZpY2UgPSBhd2Fp
dCBnZXRCYXNpY0RldmljZSgpOworICAgIGNvbnRleHQgPSBjcmVhdGVCYXNpY0NvbnRleHQoY2Fu
dmFzLCBkZXZpY2UpOworCisgICAgY29uc3QgdGV4dHVyZSA9IGNvbnRleHQuZ2V0TmV4dFRleHR1
cmUoKTsKKyAgICBhc3NlcnRfdHJ1ZSh0ZXh0dXJlIGluc3RhbmNlb2YgV2ViR1BVVGV4dHVyZSwg
IlN1Y2Nlc3NmdWxseSBhY3F1aXJlZCBuZXh0IHRleHR1cmUuIik7CisKKyAgICBjb25zdCB0ZXh0
dXJlVmlldyA9IHRleHR1cmUuY3JlYXRlRGVmYXVsdFRleHR1cmVWaWV3KCk7CisgICAgYXNzZXJ0
X3RydWUodGV4dHVyZVZpZXcgaW5zdGFuY2VvZiBXZWJHUFVUZXh0dXJlVmlldywgIlN1Y2Nlc3Nm
dWxseSBjcmVhdGVkIHRleHR1cmUgdmlldyBmcm9tIG5leHQgdGV4dHVyZS4iKTsKK30sICJDcmVh
dGUgdGV4dHVyZSB2aWV3IGZyb20gc3dhcCBjaGFpbi4iKTsKKworcHJvbWlzZV90ZXN0KGFzeW5j
ICgpID0+IHsKKyAgICBjb25zdCBkZXB0aFRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh0
ZXhEZXNjcmlwdG9yKTsKKyAgICBhc3NlcnRfdHJ1ZShkZXB0aFRleHR1cmUgaW5zdGFuY2VvZiBX
ZWJHUFVUZXh0dXJlLCAiU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgZGVwdGggdGV4dHVyZS4iKTsKK30s
ICJDcmVhdGUgYmFzaWMgZGVwdGggdGV4dHVyZSBmcm9tIGRldmljZS4iKTsKKworcHJvbWlzZV90
ZXN0KGFzeW5jICgpID0+IHsKKyAgICB0ZXhEZXNjcmlwdG9yLnNhbXBsZUNvdW50ID0gNDsKKyAg
ICB0ZXhEZXNjcmlwdG9yLmZvcm1hdCA9ICJyOGc4YjhhOC11bm9ybSI7CisgICAgdGV4RGVzY3Jp
cHRvci51c2FnZSA9IEdQVVRleHR1cmVVc2FnZS5TQU1QTEVEIHwgR1BVVGV4dHVyZVVzYWdlLlRS
QU5TRkVSX1NSQworCisgICAgY29uc3QgbXVsdGlzYW1wbGVkVGV4dHVyZSA9IGRldmljZS5jcmVh
dGVUZXh0dXJlKHRleERlc2NyaXB0b3IpOworICAgIGFzc2VydF90cnVlKG11bHRpc2FtcGxlZFRl
eHR1cmUgaW5zdGFuY2VvZiBXZWJHUFVUZXh0dXJlLCAiU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgbXVs
dGlzYW1wbGVkIHRleHR1cmUuIik7Cit9LCAiQ3JlYXRlIGJhc2ljIDR4IG11bHRpc2FtcGxlZCB0
ZXh0dXJlLiIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICAgIHRleERlc2NyaXB0
b3Iuc2l6ZS5kZXB0aCA9IDM7CisgICAgdGV4RGVzY3JpcHRvci5zYW1wbGVDb3VudCA9IDE7Cisg
ICAgdGV4RGVzY3JpcHRvci5kaW1lbnNpb24gPSAiM2QiOworCisgICAgY29uc3QgdGV4dHVyZTNk
ID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUodGV4RGVzY3JpcHRvcik7CisgICAgYXNzZXJ0X3RydWUo
dGV4dHVyZTNkIGluc3RhbmNlb2YgV2ViR1BVVGV4dHVyZSwgIlN1Y2Nlc3NmdWxseSBjcmVhdGVk
IGJhc2ljIDNEIHRleHR1cmUuIik7Cit9LCAiQ3JlYXRlIGJhc2ljIDNEIHRleHR1cmUgZnJvbSBk
ZXZpY2UuIik7CisKKy8vIEZJWE1FOiBBZGQgdGVzdHMgZm9yIDFEIHRleHR1cmVzLCB0ZXh0dXJl
QXJyYXlzLCBhbmQgV2ViR1BVVGV4dHVyZVZpZXdzLgogPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+CiA8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>