<?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>238711</bug_id>
          
          <creation_ts>2022-04-03 00:43:06 -0700</creation_ts>
          <short_desc>[WebGPU] Delete redundant spec quotes</short_desc>
          <delta_ts>2022-04-07 12:43:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>238710</dependson>
          <blocked>238719</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>djg</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1857670</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-03 00:43:06 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857673</commentid>
    <comment_count>1</comment_count>
      <attachid>456505</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-03 00:55:26 -0700</bug_when>
    <thetext>Created attachment 456505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857738</commentid>
    <comment_count>2</comment_count>
      <attachid>456534</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-03 23:22:59 -0700</bug_when>
    <thetext>Created attachment 456534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859385</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-07 12:42:55 -0700</bug_when>
    <thetext>Committed r292554 (249392@trunk): &lt;https://commits.webkit.org/249392@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859386</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-07 12:43:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/91438379&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456505</attachid>
            <date>2022-04-03 00:55:26 -0700</date>
            <delta_ts>2022-04-03 23:22:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>90983</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDQ1MjY3ZjI3MGJjMGIwMjg3NGRiOWQ0MzljMjg4Y2VjZGQ2ZDE1NjEKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gQXByIDMg
MDA6NTU6MDAgMjAyMiAtMDcwMAoKICAgIERlbGV0aW5nIGNvbW1lbnRzCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwppbmRleCAz
MTUwNjY3NzYxZDUuLjM5OGI2MzUyYjZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkdQVS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDQgQEAKKzIw
MjItMDQtMDMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV2ViR1BVXSBEZWxldGUgcmVkdW5kYW50IHNwZWMgcXVvdGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIGFjdHVhbGx5IHByZWZlciB0byBo
YXZlIGxvdHMgYW5kIGxvdHMgb2Ygc3BlYyBxdW90ZXMgdGhyb3VnaG91dCB0aGUgaW1wbGVtZW50
YXRpb24sCisgICAgICAgIGJ1dCBlbm91Z2ggcGVvcGxlIGhhdmUgY29tbWVudGVkIGFib3V0IGl0
IHRoYXQgaXQncyBiZWNvbWUgY2xlYXIgdGhhdCB3ZSBwcm9iYWJseQorICAgICAgICBzaG91bGRu
J3QgaGF2ZSB0aGVtLiBUaGlzIGRlbGV0ZXMgYWxtb3N0IGFsbCBvZiB0aGVtIChhbmQgbGVhdmVz
IGp1c3QgdGhlIG9uZXMgdGhhdAorICAgICAgICBhcmUgcGFydGljdWxhcmx5IGluc2lnaHRmdWwp
LgorCisgICAgICAgICogV2ViR1BVL0J1ZmZlci5oOgorICAgICAgICAqIFdlYkdQVS9CdWZmZXIu
bW06CisgICAgICAgIChXZWJHUFU6OnZhbGlkYXRlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJH
UFU6OnZhbGlkYXRlQ3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViR1BVOjpCdWZmZXI6OmRlc3Ryb3kpOgorICAgICAgICAo
V2ViR1BVOjpCdWZmZXI6OnZhbGlkYXRlR2V0TWFwcGVkUmFuZ2UgY29uc3QpOgorICAgICAgICAo
V2ViR1BVOjpCdWZmZXI6OmdldE1hcHBlZFJhbmdlKToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVy
Ojp2YWxpZGF0ZU1hcEFzeW5jIGNvbnN0KToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVyOjptYXBB
c3luYyk6CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6dmFsaWRhdGVVbm1hcCBjb25zdCk6Cisg
ICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6dW5tYXApOgorICAgICAgICAqIFdlYkdQVS9Db21tYW5k
RW5jb2Rlci5tbToKKyAgICAgICAgKFdlYkdQVTo6dmFsaWRhdGVDb3B5QnVmZmVyVG9CdWZmZXIp
OgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKToK
KyAgICAgICAgKFdlYkdQVTo6dmFsaWRhdGVJbWFnZUNvcHlCdWZmZXIpOgorICAgICAgICAoV2Vi
R1BVOjp2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUpOgorICAgICAgICAoV2ViR1BVOjpDb21t
YW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgIChXZWJHUFU6OnZhbGlk
YXRlQ29weVRleHR1cmVUb0J1ZmZlcik6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVy
Ojpjb3B5VGV4dHVyZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYkdQVTo6YXJlQ29weUNvbXBhdGli
bGUpOgorICAgICAgICAoV2ViR1BVOjp2YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKToKKyAg
ICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKToKKyAg
ICAgICAgKFdlYkdQVTo6dmFsaWRhdGVDbGVhckJ1ZmZlcik6CisgICAgICAgIChXZWJHUFU6OkNv
bW1hbmRFbmNvZGVyOjpjbGVhckJ1ZmZlcik6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNv
ZGVyOjp2YWxpZGF0ZUZpbmlzaCBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNv
ZGVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6aW5zZXJ0RGVi
dWdNYXJrZXIpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6dmFsaWRhdGVQb3BE
ZWJ1Z0dyb3VwIGNvbnN0KToKKyAgICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OnBvcERl
YnVnR3JvdXApOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6cHVzaERlYnVnR3Jv
dXApOgorICAgICAgICAqIFdlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW06CisgICAgICAgIChX
ZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAo
V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXI6OnZhbGlkYXRlUG9wRGVidWdHcm91cCBjb25zdCk6
CisgICAgICAgIChXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6cG9wRGVidWdHcm91cCk6Cisg
ICAgICAgIChXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6cHVzaERlYnVnR3JvdXApOgorICAg
ICAgICAqIFdlYkdQVS9EZXZpY2UuaDoKKyAgICAgICAgKiBXZWJHUFUvRGV2aWNlLm1tOgorICAg
ICAgICAoV2ViR1BVOjpEZXZpY2U6OmN1cnJlbnRFcnJvclNjb3BlKToKKyAgICAgICAgKFdlYkdQ
VTo6RGV2aWNlOjpnZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IpOgorICAgICAgICAoV2ViR1BVOjpE
ZXZpY2U6OnZhbGlkYXRlUG9wRXJyb3JTY29wZSBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OkRl
dmljZTo6cG9wRXJyb3JTY29wZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6cHVzaEVycm9y
U2NvcGUpOgorICAgICAgICAqIFdlYkdQVS9RdWV1ZS5tbToKKyAgICAgICAgKFdlYkdQVTo6UXVl
dWU6OnN1Ym1pdCk6CisgICAgICAgIChXZWJHUFU6OnZhbGlkYXRlV3JpdGVCdWZmZXJJbml0aWFs
KToKKyAgICAgICAgKFdlYkdQVTo6UXVldWU6OnZhbGlkYXRlV3JpdGVCdWZmZXIgY29uc3QpOgor
ICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6d3JpdGVCdWZmZXIpOgorICAgICAgICAoV2ViR1BVOjp2
YWxpZGF0ZVdyaXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJHUFU6OlF1ZXVlOjp3cml0ZVRleHR1
cmUpOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1tOgorICAgICAgICAo
V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAg
IChXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI6OnZhbGlkYXRlUG9wRGVidWdHcm91cCBjb25z
dCk6CisgICAgICAgIChXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI6OnBvcERlYnVnR3JvdXAp
OgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyOjpwdXNoRGVidWdHcm91cCk6
CisgICAgICAgICogV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLm1tOgorICAgICAgICAoV2ViR1BV
OjpSZW5kZXJQYXNzRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAoV2ViR1BV
OjpSZW5kZXJQYXNzRW5jb2Rlcjo6dmFsaWRhdGVQb3BEZWJ1Z0dyb3VwIGNvbnN0KToKKyAgICAg
ICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6OnBvcERlYnVnR3JvdXApOgorICAgICAgICAo
V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcjo6cHVzaERlYnVnR3JvdXApOgorICAgICAgICAqIFdl
YkdQVS9TYW1wbGVyLmg6CisgICAgICAgIChXZWJHUFU6OlNhbXBsZXI6OmRlc2NyaXB0b3IgY29u
c3QpOgorICAgICAgICAoV2ViR1BVOjpTYW1wbGVyOjppc0NvbXBhcmlzb24gY29uc3QpOgorICAg
ICAgICAqIFdlYkdQVS9TYW1wbGVyLm1tOgorICAgICAgICAoV2ViR1BVOjp2YWxpZGF0ZUNyZWF0
ZVNhbXBsZXIpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVNhbXBsZXIpOgorICAg
ICAgICAqIFdlYkdQVS9UZXh0dXJlLmg6CisgICAgICAgICogV2ViR1BVL1RleHR1cmUubW06Cisg
ICAgICAgIChXZWJHUFU6OmlzQ29tcHJlc3NlZEZvcm1hdCk6CisgICAgICAgIChXZWJHUFU6OlRl
eHR1cmU6OmlzRGVwdGhPclN0ZW5jaWxGb3JtYXQpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJl
Ojp0ZXhlbEJsb2NrV2lkdGgpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjp0ZXhlbEJsb2Nr
SGVpZ2h0KToKKyAgICAgICAgKFdlYkdQVTo6aXNSZW5kZXJhYmxlRm9ybWF0KToKKyAgICAgICAg
KFdlYkdQVTo6c3VwcG9ydHNNdWx0aXNhbXBsaW5nKToKKyAgICAgICAgKFdlYkdQVTo6bWF4aW11
bU1pcGxldmVsQ291bnQpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OnZhbGlkYXRlQ3JlYXRl
VGV4dHVyZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlVGV4dHVyZSk6CisgICAg
ICAgIChXZWJHUFU6OlRleHR1cmU6OnJlc29sdmVUZXh0dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0
cyBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OmFycmF5TGF5ZXJDb3VudCBjb25z
dCk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OnZhbGlkYXRlQ3JlYXRlVmlldyBjb25zdCk6
CisgICAgICAgIChXZWJHUFU6OmNvbXB1dGVSZW5kZXJFeHRlbnQpOgorICAgICAgICAoV2ViR1BV
OjpUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZTo6bG9naWNh
bE1pcGxldmVsU3BlY2lmaWNUZXh0dXJlRXh0ZW50KToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVy
ZTo6cGh5c2ljYWxNaXBsZXZlbFNwZWNpZmljVGV4dHVyZUV4dGVudCk6CisgICAgICAgIChXZWJH
UFU6OmltYWdlQ29weVRleHR1cmVTdWJyZXNvdXJjZVNpemUpOgorICAgICAgICAoV2ViR1BVOjpU
ZXh0dXJlOjp2YWxpZGF0ZUltYWdlQ29weVRleHR1cmUpOgorICAgICAgICAoV2ViR1BVOjpUZXh0
dXJlOjp2YWxpZGF0ZVRleHR1cmVDb3B5UmFuZ2UpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJl
Ojp2YWxpZGF0ZUxpbmVhclRleHR1cmVEYXRhKToKKwogMjAyMi0wNC0wMyAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEltcGxlbWVu
dCBUZXh0dXJlIHZpZXcgZm9ybWF0IGNvbXBhdGliaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0J1ZmZlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLmgKaW5k
ZXggNzc5YjgzMWE5YThkLi4zMWUxMjAyN2Q3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5oCkBAIC02
NiwxMSArNjYsMTEgQEAgcHVibGljOgogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIvI2J1ZmZlci1zdGF0ZQogICAgIC8vIEVhY2ggR1BVQnVmZmVyIGhhcyBhIGN1cnJlbnQg
YnVmZmVyIHN0YXRlIG9uIHRoZSBDb250ZW50IHRpbWVsaW5lIHdoaWNoIGlzIG9uZSBvZiB0aGUg
Zm9sbG93aW5nOgogICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKLSAgICAgICAgTWFw
cGVkLCAvLyAid2hlcmUgdGhlIEdQVUJ1ZmZlciBpcyBhdmFpbGFibGUgZm9yIENQVSBvcGVyYXRp
b25zIG9uIGl0cyBjb250ZW50LiIKLSAgICAgICAgTWFwcGVkQXRDcmVhdGlvbiwgLy8gIndoZXJl
IHRoZSBHUFVCdWZmZXIgd2FzIGp1c3QgY3JlYXRlZCBhbmQgaXMgYXZhaWxhYmxlIGZvciBDUFUg
b3BlcmF0aW9ucyBvbiBpdHMgY29udGVudC4iCi0gICAgICAgIE1hcHBpbmdQZW5kaW5nLCAvLyAi
d2hlcmUgdGhlIEdQVUJ1ZmZlciBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSBmb3IgQ1BVIG9wZXJh
dGlvbnMgb24gaXRzIGNvbnRlbnQuIgotICAgICAgICBVbm1hcHBlZCwgLy8gIndoZXJlIHRoZSBH
UFVCdWZmZXIgaXMgYXZhaWxhYmxlIGZvciBHUFUgb3BlcmF0aW9ucy4iCi0gICAgICAgIERlc3Ry
b3llZCwgLy8gIndoZXJlIHRoZSBHUFVCdWZmZXIgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZSBmb3Ig
YW55IG9wZXJhdGlvbnMgZXhjZXB0IGRlc3Ryb3kuIgorICAgICAgICBNYXBwZWQsCisgICAgICAg
IE1hcHBlZEF0Q3JlYXRpb24sCisgICAgICAgIE1hcHBpbmdQZW5kaW5nLAorICAgICAgICBVbm1h
cHBlZCwKKyAgICAgICAgRGVzdHJveWVkLAogICAgIH07CiAKICAgICBpZDxNVExCdWZmZXI+IGJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CkBAIC04OCwxNSArODgsMTUgQEAgcHJp
dmF0ZToKICAgICBpZDxNVExCdWZmZXI+IG1fYnVmZmVyIHsgbmlsIH07CiAKICAgICAvLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNidWZmZXItaW50ZXJmYWNlCi0gICAgLy8gIkdQ
VUJ1ZmZlciBoYXMgdGhlIGZvbGxvd2luZyBpbnRlcm5hbCBzbG90czoiCi0gICAgY29uc3QgdWlu
dDY0X3QgbV9zaXplIHsgMCB9OyAvLyAiVGhlIGxlbmd0aCBvZiB0aGUgR1BVQnVmZmVyIGFsbG9j
YXRpb24gaW4gYnl0ZXMuIgotICAgIGNvbnN0IFdHUFVCdWZmZXJVc2FnZUZsYWdzIG1fdXNhZ2Ug
eyAwIH07IC8vICJUaGUgYWxsb3dlZCB1c2FnZXMgZm9yIHRoaXMgR1BVQnVmZmVyLiIKLSAgICBT
dGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVubWFwcGVkIH07IC8vICJUaGUgY3VycmVudCBzdGF0ZSBv
ZiB0aGUgR1BVQnVmZmVyLiIKLSAgICAvLyAiW1ttYXBwaW5nXV0gb2YgdHlwZSBBcnJheUJ1ZmZl
ciBvciBQcm9taXNlIG9yIG51bGwuIiBUaGlzIGlzIHVubmVjZXNzYXJ5OyB3ZSBjYW4ganVzdCB1
c2UgbV9kZXZpY2UuY29udGVudHMuCi0gICAgTWFwcGluZ1JhbmdlIG1fbWFwcGluZ1JhbmdlIHsg
MCwgMCB9OyAvLyAiW1ttYXBwaW5nX3JhbmdlXV0gb2YgdHlwZSBsaXN0PHVuc2lnbmVkIGxvbmcg
bG9uZz4gb3IgbnVsbC4iCisKKyAgICBjb25zdCB1aW50NjRfdCBtX3NpemUgeyAwIH07CisgICAg
Y29uc3QgV0dQVUJ1ZmZlclVzYWdlRmxhZ3MgbV91c2FnZSB7IDAgfTsKKyAgICBTdGF0ZSBtX3N0
YXRlIHsgU3RhdGU6OlVubWFwcGVkIH07CisgICAgLy8gW1ttYXBwaW5nXV0gaXMgdW5uZWNlc3Nh
cnk7IHdlIGNhbiBqdXN0IHVzZSBtX2RldmljZS5jb250ZW50cy4KKyAgICBNYXBwaW5nUmFuZ2Ug
bV9tYXBwaW5nUmFuZ2UgeyAwLCAwIH07CiAgICAgdXNpbmcgTWFwcGVkUmFuZ2VzID0gUmFuZ2VT
ZXQ8UmFuZ2U8c2l6ZV90Pj47Ci0gICAgTWFwcGVkUmFuZ2VzIG1fbWFwcGVkUmFuZ2VzOyAvLyAi
W1ttYXBwZWRfcmFuZ2VzXV0gb2YgdHlwZSBsaXN0PEFycmF5QnVmZmVyPiBvciBudWxsLiIKLSAg
ICBXR1BVTWFwTW9kZUZsYWdzIG1fbWFwTW9kZSB7IFdHUFVNYXBNb2RlX05vbmUgfTsgLy8gIlRo
ZSBHUFVNYXBNb2RlRmxhZ3Mgb2YgdGhlIGxhc3QgY2FsbCB0byBtYXBBc3luYygpIChpZiBhbnkp
LiIKKyAgICBNYXBwZWRSYW5nZXMgbV9tYXBwZWRSYW5nZXM7CisgICAgV0dQVU1hcE1vZGVGbGFn
cyBtX21hcE1vZGUgeyBXR1BVTWFwTW9kZV9Ob25lIH07CiAKICAgICBjb25zdCBSZWY8RGV2aWNl
PiBtX2RldmljZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIu
bW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KaW5kZXggMDlmNzI4ZDk1YWE0Li5k
MDAwMTQxMDQ4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KQEAgLTQyLDcgKzQyLDYgQEAgc3Rh
dGljIGJvb2wgdmFsaWRhdGVEZXNjcmlwdG9yKGNvbnN0IERldmljZSYgZGV2aWNlLCBjb25zdCBX
R1BVQnVmZmVyRGVzY3JpcHRvciYKIAogICAgIC8vIEZJWE1FOiAiSWYgYW55IG9mIHRoZSBiaXRz
IG9mIGRlc2NyaXB0b3LigJlzIHVzYWdlIGFyZW7igJl0IHByZXNlbnQgaW4gdGhpcyBkZXZpY2Xi
gJlzIFtbYWxsb3dlZCBidWZmZXIgdXNhZ2VzXV0gcmV0dXJuIGZhbHNlLiIKIAotICAgIC8vICJJ
ZiBib3RoIHRoZSBNQVBfUkVBRCBhbmQgTUFQX1dSSVRFIGJpdHMgb2YgZGVzY3JpcHRvcuKAmXMg
dXNhZ2UgYXR0cmlidXRlIGFyZSBzZXQsIHJldHVybiBmYWxzZS4iCiAgICAgaWYgKChkZXNjcmlw
dG9yLnVzYWdlICYgV0dQVUJ1ZmZlclVzYWdlX01hcFJlYWQpICYmIChkZXNjcmlwdG9yLnVzYWdl
ICYgV0dQVUJ1ZmZlclVzYWdlX01hcFdyaXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC01MywyNyArNTIsMjIgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVDcmVhdGVCdWZmZXIoY29uc3Qg
RGV2aWNlJiBkZXZpY2UsIGNvbnN0IFdHUFVCdWZmZXJEZXNjcmlwdG8KIHsKICAgICAvLyBGSVhN
RTogInRoaXMgaXMgYSB2YWxpZCBHUFVEZXZpY2UuIgogCi0gICAgLy8gInZhbGlkYXRpbmcgR1BV
QnVmZmVyRGVzY3JpcHRvcih0aGlzLCBkZXNjcmlwdG9yKSByZXR1cm5zIHRydWUuIgogICAgIGlm
ICghdmFsaWRhdGVEZXNjcmlwdG9yKGRldmljZSwgZGVzY3JpcHRvcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIC8vICJkZXNjcmlwdG9yLnVzYWdlIG11c3Qgbm90IGJlIDAuIgogICAg
IGlmICghZGVzY3JpcHRvci51c2FnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
RklYTUU6ICJkZXNjcmlwdG9yLnVzYWdlIGlzIGEgc3Vic2V0IG9mIHRoaXMuW1thbGxvd2VkIGJ1
ZmZlciB1c2FnZXNdXS4iCiAKLSAgICAvLyAiSWYgZGVzY3JpcHRvci51c2FnZSBjb250YWlucyBN
QVBfUkVBRDogZGVzY3JpcHRvci51c2FnZSBjb250YWlucyBubyBvdGhlciBmbGFncyBleGNlcHQg
Q09QWV9EU1QuIgogICAgIGlmICgoZGVzY3JpcHRvci51c2FnZSAmIFdHUFVCdWZmZXJVc2FnZV9N
YXBSZWFkKQogICAgICAgICAmJiAoZGVzY3JpcHRvci51c2FnZSAmIH5XR1BVQnVmZmVyVXNhZ2Vf
Q29weURzdCAmIH5XR1BVQnVmZmVyVXNhZ2VfTWFwUmVhZCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIC8vICJJZiBkZXNjcmlwdG9yLnVzYWdlIGNvbnRhaW5zIE1BUF9XUklURTogZGVz
Y3JpcHRvci51c2FnZSBjb250YWlucyBubyBvdGhlciBmbGFncyBleGNlcHQgQ09QWV9TUkMuIgog
ICAgIGlmICgoZGVzY3JpcHRvci51c2FnZSAmIFdHUFVCdWZmZXJVc2FnZV9NYXBXcml0ZSkKICAg
ICAgICAgJiYgKGRlc2NyaXB0b3IudXNhZ2UgJiB+V0dQVUJ1ZmZlclVzYWdlX0NvcHlTcmMgJiB+
V0dQVUJ1ZmZlclVzYWdlX01hcFdyaXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ly8gIklmIGRlc2NyaXB0b3IubWFwcGVkQXRDcmVhdGlvbiBpcyB0cnVlOiBkZXNjcmlwdG9yLnNp
emUgaXMgYSBtdWx0aXBsZSBvZiA0LiIKICAgICBpZiAoZGVzY3JpcHRvci5tYXBwZWRBdENyZWF0
aW9uICYmIChkZXNjcmlwdG9yLnNpemUgJSA0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC0xMTIsNyArMTA2LDYgQEAgUmVmUHRyPEJ1ZmZlcj4gRGV2aWNlOjpjcmVhdGVCdWZmZXIoY29u
c3QgV0dQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiAKICAgICAvLyBodHRwczovL2dw
dXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGV2aWNlLWNyZWF0ZWJ1ZmZlcgogCi0gICAg
Ly8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkLCBy
ZXR1cm4gYW4gZXJyb3IgYnVmZmVyIGFuZCBzdG9wLiIKICAgICBpZiAoIXZhbGlkYXRlQ3JlYXRl
QnVmZmVyKCp0aGlzLCBkZXNjcmlwdG9yKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAg
LTEyNSwyOSArMTE4LDkgQEAgUmVmUHRyPEJ1ZmZlcj4gRGV2aWNlOjpjcmVhdGVCdWZmZXIoY29u
c3QgV0dQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiAKICAgICBidWZmZXIubGFiZWwg
PSBmcm9tQVBJKGRlc2NyaXB0b3IubGFiZWwpOwogCi0gICAgLy8gRklYTUU6IEhhbmRsZSBkZXNj
cmlwdG9yLm1hcHBlZEF0Q3JlYXRpb24uCi0gICAgLy8gQmVjYXVzZSBub24tbWFwcGFibGUgYnVm
ZmVycyBjYW4gYmUgbWFwcGVkIGF0IGNyZWF0aW9uLAotICAgIC8vIHRoaXMgbWVhbnMgd2UgaGF2
ZSB0byBoYXZlIGEgdGVtcG9yYXJ5IGJ1ZmZlciBtYXBwZWQsCi0gICAgLy8gYW5kIHdlIGNhbiB0
byBzY2hlZHVsZSBhIGNvcHkgY29tbWFuZCB3aGVuIGl0IGdldHMgdW5tYXBwZWQsCi0gICAgLy8g
cHJlc3VtYWJseSBhdCBmaXJzdCB1c2UuCi0KLSAgICAvLyAiTGV0IGIgYmUgYSBuZXcgR1BVQnVm
ZmVyIG9iamVjdC4iCi0gICAgLy8gIlNldCBiLltbc2l6ZV1dIHRvIGRlc2NyaXB0b3Iuc2l6ZS4i
Ci0gICAgLy8gIlNldCBiLltbdXNhZ2VdXSB0byBkZXNjcmlwdG9yLnVzYWdlLiIKLQotICAgIC8v
ICJJZiBkZXNjcmlwdG9yLm1hcHBlZEF0Q3JlYXRpb24gaXMgdHJ1ZToiCi0gICAgaWYgKGRlc2Ny
aXB0b3IubWFwcGVkQXRDcmVhdGlvbikgewotICAgICAgICAvLyAiU2V0IGIuW1ttYXBwaW5nXV0g
dG8gYSBuZXcgQXJyYXlCdWZmZXIgb2Ygc2l6ZSBiLltbc2l6ZV1dLiIgVGhpcyBpcyB1bm5lY2Vz
c2FyeS4KLSAgICAgICAgLy8gIlNldCBiLltbbWFwcGluZ19yYW5nZV1dIHRvIFswLCBkZXNjcmlw
dG9yLnNpemVdLiIKLSAgICAgICAgLy8gIlNldCBiLltbbWFwcGVkX3Jhbmdlc11dIHRvIFtdLiIK
LSAgICAgICAgLy8gIlNldCBiLltbc3RhdGVdXSB0byBtYXBwZWQgYXQgY3JlYXRpb24uIgorICAg
IGlmIChkZXNjcmlwdG9yLm1hcHBlZEF0Q3JlYXRpb24pCiAgICAgICAgIHJldHVybiBCdWZmZXI6
OmNyZWF0ZShidWZmZXIsIGRlc2NyaXB0b3Iuc2l6ZSwgZGVzY3JpcHRvci51c2FnZSwgQnVmZmVy
OjpTdGF0ZTo6TWFwcGVkQXRDcmVhdGlvbiwgeyBzdGF0aWNfY2FzdDxzaXplX3Q+KDApLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGRlc2NyaXB0b3Iuc2l6ZSkgfSwgKnRoaXMpOwotICAgIH0KIAotICAg
IC8vICJTZXQgYi5bW21hcHBpbmddXSB0byBudWxsLiIgVGhpcyBpcyB1bm5lY2Vzc2FyeS4KLSAg
ICAvLyAiU2V0IGIuW1ttYXBwaW5nX3JhbmdlXV0gdG8gbnVsbC4iCi0gICAgLy8gIlNldCBiLltb
bWFwcGVkX3Jhbmdlc11dIHRvIG51bGwuIgotICAgIC8vICJTZXQgYi5bW3N0YXRlXV0gdG8gdW5t
YXBwZWQuIgogICAgIHJldHVybiBCdWZmZXI6OmNyZWF0ZShidWZmZXIsIGRlc2NyaXB0b3Iuc2l6
ZSwgZGVzY3JpcHRvci51c2FnZSwgQnVmZmVyOjpTdGF0ZTo6VW5tYXBwZWQsIHsgc3RhdGljX2Nh
c3Q8c2l6ZV90PigwKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PigwKSB9LCAqdGhpcyk7CiB9CiAKQEAg
LTE2NywxMyArMTQwLDExIEBAIHZvaWQgQnVmZmVyOjpkZXN0cm95KCkKIHsKICAgICAvLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1YnVmZmVyLWRlc3Ryb3kKIAotICAg
IC8vICJJZiB0aGUgdGhpcy5bW3N0YXRlXV0gaXMgbm90IGVpdGhlciBvZiB1bm1hcHBlZCBvciBk
ZXN0cm95ZWQ6IFJ1biB0aGUgc3RlcHMgdG8gdW5tYXAgdGhpcy4iCiAgICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OlVubWFwcGVkICYmIG1fc3RhdGUgIT0gU3RhdGU6OkRlc3Ryb3llZCkgewogICAg
ICAgICAvLyBGSVhNRTogQVNTRVJUKCkgdGhhdCB0aGlzIGNhbGwgZG9lc24ndCBmYWlsLgogICAg
ICAgICB1bm1hcCgpOwogICAgIH0KIAotICAgIC8vICJTZXQgdGhpcy5bW3N0YXRlXV0gdG8gZGVz
dHJveWVkLiIKICAgICBtX3N0YXRlID0gU3RhdGU6OkRlc3Ryb3llZDsKIAogICAgIG1fYnVmZmVy
ID0gbmlsOwpAQCAtMTg2LDI5ICsxNTcsMjMgQEAgY29uc3Qgdm9pZCogQnVmZmVyOjpnZXRDb25z
dE1hcHBlZFJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKQogCiBib29sIEJ1ZmZlcjo6
dmFsaWRhdGVHZXRNYXBwZWRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgcmFuZ2VTaXplKSBj
b25zdAogewotICAgIC8vICJ0aGlzLltbc3RhdGVdXSBpcyBtYXBwZWQgb3IgbWFwcGVkIGF0IGNy
ZWF0aW9uLiIKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6TWFwcGVkICYmIG1fc3RhdGUgIT0g
U3RhdGU6Ok1hcHBlZEF0Q3JlYXRpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8v
ICJvZmZzZXQgaXMgYSBtdWx0aXBsZSBvZiA4LiIKICAgICBpZiAob2Zmc2V0ICUgOCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gInJhbmdlU2l6ZSBpcyBhIG11bHRpcGxlIG9mIDQu
IgogICAgIGlmIChyYW5nZVNpemUgJSA0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAv
LyAib2Zmc2V0IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGlzLltbbWFwcGluZ19yYW5n
ZV1dWzBdLiIKICAgICBpZiAob2Zmc2V0IDwgbV9tYXBwaW5nUmFuZ2UuYmVnaW5PZmZzZXQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJvZmZzZXQgKyByYW5nZVNpemUgaXMgbGVz
cyB0aGFuIG9yIGVxdWFsIHRvIHRoaXMuW1ttYXBwaW5nX3JhbmdlXV1bMV0uIgogICAgIC8vIEZJ
WE1FOiBVc2VkIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICBhdXRvIGVuZE9mZnNldCA9IG9mZnNl
dCArIHJhbmdlU2l6ZTsKICAgICBpZiAoZW5kT2Zmc2V0ID4gbV9tYXBwaW5nUmFuZ2UuZW5kT2Zm
c2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAiW29mZnNldCwgb2Zmc2V0ICsg
cmFuZ2VTaXplKSBkb2VzIG5vdCBvdmVybGFwIGFub3RoZXIgcmFuZ2UgaW4gdGhpcy5bW21hcHBl
ZF9yYW5nZXNdXS4iCiAgICAgaWYgKG1fbWFwcGVkUmFuZ2VzLm92ZXJsYXBzKHsgb2Zmc2V0LCBl
bmRPZmZzZXQgfSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjE5LDI1ICsxODQsMTkg
QEAgdm9pZCogQnVmZmVyOjpnZXRNYXBwZWRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6
ZSkKIHsKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1YnVm
ZmVyLWdldG1hcHBlZHJhbmdlCiAKLSAgICAvLyAiSWYgc2l6ZSBpcyBtaXNzaW5nOiBMZXQgcmFu
Z2VTaXplIGJlIG1heCgwLCB0aGlzLltbc2l6ZV1dIC0gb2Zmc2V0KS4iCiAgICAgLy8gRklYTUU6
IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCiAgICAgYXV0byByYW5nZVNpemUgPSBzaXplOwogICAg
IGlmIChzaXplID09IFdHUFVfV0hPTEVfTUFQX1NJWkUpCiAgICAgICAgIHJhbmdlU2l6ZSA9IHN0
YXRpY19jYXN0PHNpemVfdD4oc3RkOjptYXgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDApLCBtX3Np
emUgLSBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSkpOwogCi0gICAgLy8gIklmIGFueSBv
ZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFs
aWRhdGVHZXRNYXBwZWRSYW5nZShvZmZzZXQsIHJhbmdlU2l6ZSkpIHsKICAgICAgICAgLy8gRklY
TUU6ICJ0aHJvdyBhbiBPcGVyYXRpb25FcnJvciBhbmQgc3RvcC4iCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIC8vICJMZXQgbSBiZSBhIG5ldyBBcnJheUJ1ZmZlciBvZiBz
aXplIHJhbmdlU2l6ZSBwb2ludGluZyBhdCB0aGUgY29udGVudCBvZiB0aGlzLltbbWFwcGluZ11d
IGF0IG9mZnNldCBvZmZzZXQgLSB0aGlzLltbbWFwcGluZ19yYW5nZV1dWzBdLiIKLQotICAgIC8v
ICJBcHBlbmQgbSB0byB0aGlzLltbbWFwcGVkX3Jhbmdlc11dLiIKICAgICBtX21hcHBlZFJhbmdl
cy5hZGQoeyBvZmZzZXQsIG9mZnNldCArIHJhbmdlU2l6ZSB9KTsKICAgICBtX21hcHBlZFJhbmdl
cy5jb21wYWN0KCk7CiAKLSAgICAvLyAiUmV0dXJuIG0uIgogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjaGFyKj4obV9idWZmZXIuY29udGVudHMpICsgb2Zmc2V0OwogfQogCkBAIC0yNDUsMzMgKzIw
NCwyNiBAQCBib29sIEJ1ZmZlcjo6dmFsaWRhdGVNYXBBc3luYyhXR1BVTWFwTW9kZUZsYWdzIG1v
ZGUsIHNpemVfdCBvZmZzZXQsIHNpemVfdCByYW5nZQogewogICAgIC8vIEZJWE1FOiAidGhpcyBp
cyBhIHZhbGlkIEdQVUJ1ZmZlci4gVE9ETzogY2hlY2sgZGVzdHJveWVkIHN0YXRlPyIKIAotICAg
IC8vICJvZmZzZXQgaXMgYSBtdWx0aXBsZSBvZiA4LiIKICAgICBpZiAob2Zmc2V0ICUgOCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gInJhbmdlU2l6ZSBpcyBhIG11bHRpcGxlIG9m
IDQuIgogICAgIGlmIChyYW5nZVNpemUgJSA0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAvLyAib2Zmc2V0ICsgcmFuZ2VTaXplIGlzIGxlc3Mgb3IgZXF1YWwgdG8gdGhpcy5bW3NpemVd
XSIKICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICBpZiAoc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCArIHJhbmdlU2l6ZSkgPiBtX3NpemUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIC8vICJ0aGlzLltbc3RhdGVdXSBpcyB1bm1hcHBlZCIKICAgICBp
ZiAobV9zdGF0ZSAhPSBTdGF0ZTo6VW5tYXBwZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIC8vICJtb2RlIGNvbnRhaW5zIGV4YWN0bHkgb25lIG9mIFJFQUQgb3IgV1JJVEUuIgogICAg
IGF1dG8gcmVhZFdyaXRlTW9kZUZsYWdzID0gbW9kZSAmIChXR1BVTWFwTW9kZV9SZWFkIHwgV0dQ
VU1hcE1vZGVfV3JpdGUpOwogICAgIGlmIChyZWFkV3JpdGVNb2RlRmxhZ3MgIT0gV0dQVU1hcE1v
ZGVfUmVhZCAmJiByZWFkV3JpdGVNb2RlRmxhZ3MgIT0gV0dQVU1hcE1vZGVfV3JpdGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJJZiBtb2RlIGNvbnRhaW5zIFJFQUQgdGhlbiB0
aGlzLltbdXNhZ2VdXSBtdXN0IGNvbnRhaW4gTUFQX1JFQUQuIgogICAgIGlmICgobW9kZSAmIFdH
UFVNYXBNb2RlX1JlYWQpICYmICEobV91c2FnZSAmIFdHUFVCdWZmZXJVc2FnZV9NYXBSZWFkKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gIklmIG1vZGUgY29udGFpbnMgV1JJVEUg
dGhlbiB0aGlzLltbdXNhZ2VdXSBtdXN0IGNvbnRhaW4gTUFQX1dSSVRFLiIKICAgICBpZiAoKG1v
ZGUgJiBXR1BVTWFwTW9kZV9Xcml0ZSkgJiYgIShtX3VzYWdlICYgV0dQVUJ1ZmZlclVzYWdlX01h
cFdyaXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yODIsNTEgKzIzNCwzMSBAQCB2
b2lkIEJ1ZmZlcjo6bWFwQXN5bmMoV0dQVU1hcE1vZGVGbGFncyBtb2RlLCBzaXplX3Qgb2Zmc2V0
LCBzaXplX3Qgc2l6ZSwgQ29tcGxldAogewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5p
by9ncHV3ZWIvI2RvbS1ncHVidWZmZXItbWFwYXN5bmMKIAotICAgIC8vICJJZiBzaXplIGlzIG1p
c3Npbmc6IExldCByYW5nZVNpemUgYmUgbWF4KDAsIHRoaXMuW1tzaXplXV0gLSBvZmZzZXQpLiIK
ICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICBhdXRvIHJhbmdlU2l6
ZSA9IHNpemU7CiAgICAgaWYgKHNpemUgPT0gV0dQVV9XSE9MRV9NQVBfU0laRSkKICAgICAgICAg
cmFuZ2VTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGQ6Om1heChzdGF0aWNfY2FzdDx1aW50
NjRfdD4oMCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3NpemUgLSBvZmZzZXQpKSk7CiAKLSAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQ6
IgogICAgIGlmICghdmFsaWRhdGVNYXBBc3luYyhtb2RlLCBvZmZzZXQsIHJhbmdlU2l6ZSkpIHsK
LSAgICAgICAgLy8gIlJlY29yZCBhIHZhbGlkYXRpb24gZXJyb3Igb24gdGhlIGN1cnJlbnQgc2Nv
cGUuIgogICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIl9zKTsKIAotICAgICAgICAvLyAiUmV0dXJuIGEgcHJvbWlzZSByZWplY3Rl
ZCB3aXRoIGFuIE9wZXJhdGlvbkVycm9yIG9uIHRoZSBEZXZpY2UgdGltZWxpbmUuIgogICAgICAg
ICBjYWxsYmFjayhXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXNfRXJyb3IpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgLy8gIlNldCB0aGlzLltbbWFwcGluZ11dIHRvIHAuIgotCi0gICAg
Ly8gIlNldCB0aGlzLltbc3RhdGVdXSB0byBtYXBwaW5nIHBlbmRpbmcuIgogICAgIG1fc3RhdGUg
PSBTdGF0ZTo6TWFwcGluZ1BlbmRpbmc7CiAKLSAgICAvLyAiU2V0IHRoaXMuW1ttYXBfbW9kZV1d
IHRvIG1vZGUuIgogICAgIG1fbWFwTW9kZSA9IG1vZGU7CiAKLSAgICAvLyAiRW5xdWV1ZSBhbiBv
cGVyYXRpb24gb24gdGhlIGRlZmF1bHQgcXVldWXigJlzIFF1ZXVlIHRpbWVsaW5lIHRoYXQgd2ls
bCBleGVjdXRlIHRoZSBmb2xsb3dpbmc6IgogICAgIG1fZGV2aWNlLT5nZXRRdWV1ZSgpLm9uU3Vi
bWl0dGVkV29ya0RvbmUoMCwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvZmZzZXQs
IHJhbmdlU2l6ZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQVVF1ZXVlV29ya0Rv
bmVTdGF0dXMgc3RhdHVzKSBtdXRhYmxlIHsKLSAgICAgICAgLy8gIklmIHRoaXMuW1tzdGF0ZV1d
IGlzIG1hcHBpbmcgcGVuZGluZzoiCiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3N0YXRl
ID09IFN0YXRlOjpNYXBwaW5nUGVuZGluZykgewotICAgICAgICAgICAgLy8gIkxldCBtIGJlIGEg
bmV3IEFycmF5QnVmZmVyIG9mIHNpemUgcmFuZ2VTaXplLiIKLQotICAgICAgICAgICAgLy8gIlNl
dCB0aGUgY29udGVudCBvZiBtIHRvIHRoZSBjb250ZW50IG9mIHRoaXPigJlzIGFsbG9jYXRpb24g
c3RhcnRpbmcgYXQgb2Zmc2V0IG9mZnNldCBhbmQgZm9yIHJhbmdlU2l6ZSBieXRlcy4iCi0KLSAg
ICAgICAgICAgIC8vICJTZXQgdGhpcy5bW21hcHBpbmddXSB0byBtLiIKLQotICAgICAgICAgICAg
Ly8gIlNldCB0aGlzLltbc3RhdGVdXSB0byBtYXBwZWQuIgogICAgICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+bV9zdGF0ZSA9IFN0YXRlOjpNYXBwZWQ7CiAKLSAgICAgICAgICAgIC8vICJTZXQgdGhp
cy5bW21hcHBpbmdfcmFuZ2VdXSB0byBbb2Zmc2V0LCBvZmZzZXQgKyByYW5nZVNpemVdLiIKICAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fbWFwcGluZ1JhbmdlID0geyBvZmZzZXQsIG9mZnNl
dCArIHJhbmdlU2l6ZSB9OwogCi0gICAgICAgICAgICAvLyAiU2V0IHRoaXMuW1ttYXBwZWRfcmFu
Z2VzXV0gdG8gW10uIgogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9tYXBwZWRSYW5nZXMg
PSBNYXBwZWRSYW5nZXMoKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vICJSZXNvbHZlIHAuIgog
ICAgICAgICBzd2l0Y2ggKHN0YXR1cykgewogICAgICAgICBjYXNlIFdHUFVRdWV1ZVdvcmtEb25l
U3RhdHVzX1N1Y2Nlc3M6CiAgICAgICAgICAgICBjYWxsYmFjayhXR1BVQnVmZmVyTWFwQXN5bmNT
dGF0dXNfU3VjY2Vzcyk7CkBAIC0zNTAsNyArMjgyLDYgQEAgdm9pZCBCdWZmZXI6Om1hcEFzeW5j
KFdHUFVNYXBNb2RlRmxhZ3MgbW9kZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIENvbXBs
ZXQKIAogYm9vbCBCdWZmZXI6OnZhbGlkYXRlVW5tYXAoKSBjb25zdAogewotICAgIC8vICJ0aGlz
Lltbc3RhdGVdXSBtdXN0IGJlIG1hcHBlZCBhdCBjcmVhdGlvbiwgbWFwcGluZyBwZW5kaW5nLCBv
ciBtYXBwZWQuIgogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpNYXBwZWRBdENyZWF0aW9uCiAg
ICAgICAgICYmIG1fc3RhdGUgIT0gU3RhdGU6Ok1hcHBpbmdQZW5kaW5nCiAgICAgICAgICYmIG1f
c3RhdGUgIT0gU3RhdGU6Ok1hcHBlZCkKQEAgLTM2MywzNSArMjk0LDE0IEBAIHZvaWQgQnVmZmVy
Ojp1bm1hcCgpCiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9t
LWdwdWJ1ZmZlci11bm1hcAogCi0gICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIHJlcXVp
cmVtZW50cyBhcmUgdW5tZXQiCiAgICAgaWYgKCF2YWxpZGF0ZVVubWFwKCkpIHsKLSAgICAgICAg
Ly8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCiAgICAgICAgIG1fZGV2
aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gIklmIHRoaXMuW1tzdGF0ZV1dIGlzIG1h
cHBpbmcgcGVuZGluZzoiCi0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6Ok1hcHBpbmdQZW5kaW5n
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiAiUmVqZWN0IFtbbWFwcGluZ11dIHdpdGggYW4gQWJvcnRF
cnJvci4iCisgICAgLy8gRklYTUU6ICJJZiB0aGlzLltbc3RhdGVdXSBpcyBtYXBwaW5nIHBlbmRp
bmc6IFJlamVjdCBbW21hcHBpbmddXSB3aXRoIGFuIEFib3J0RXJyb3IuIgogCi0gICAgICAgIC8v
ICJTZXQgdGhpcy5bW21hcHBpbmddXSB0byBudWxsLiIKLSAgICB9Ci0KLSAgICAvLyAiSWYgdGhp
cy5bW3N0YXRlXV0gaXMgbWFwcGVkIG9yIG1hcHBlZCBhdCBjcmVhdGlvbjoiCi0gICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6Ok1hcHBlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpNYXBwZWRBdENyZWF0
aW9uKSB7Ci0gICAgICAgIC8vICJJZiBvbmUgb2YgdGhlIHR3byBmb2xsb3dpbmcgY29uZGl0aW9u
cyBob2xkczoiCi0gICAgICAgIC8vICJ0aGlzLltbc3RhdGVdXSBpcyBtYXBwZWQgYXQgY3JlYXRp
b24iCi0gICAgICAgIC8vICJ0aGlzLltbc3RhdGVdXSBpcyBtYXBwZWQgYW5kIHRoaXMuW1ttYXBf
bW9kZV1dIGNvbnRhaW5zIFdSSVRFIgotICAgICAgICAvLyAiRW5xdWV1ZSBhbiBvcGVyYXRpb24g
b24gdGhlIGRlZmF1bHQgcXVldWXigJlzIFF1ZXVlIHRpbWVsaW5lIHRoYXQgdXBkYXRlcyB0aGUg
dGhpcy5bW21hcHBpbmdfcmFuZ2VdXSBvZiB0aGlz4oCZcyBhbGxvY2F0aW9uIHRvIHRoZSBjb250
ZW50IG9mIHRoaXMuW1ttYXBwaW5nXV0uIgotCi0gICAgICAgIC8vICJEZXRhY2ggZWFjaCBBcnJh
eUJ1ZmZlciBpbiB0aGlzLltbbWFwcGVkX3Jhbmdlc11dIGZyb20gaXRzIGNvbnRlbnQuIgotCi0g
ICAgICAgIC8vICJTZXQgdGhpcy5bW21hcHBpbmddXSB0byBudWxsLiIKLQotICAgICAgICAvLyAi
U2V0IHRoaXMuW1ttYXBwaW5nX3JhbmdlXV0gdG8gbnVsbC4iCi0KLSAgICAgICAgLy8gIlNldCB0
aGlzLltbbWFwcGVkX3Jhbmdlc11dIHRvIG51bGwuIgotICAgIH0KKyAgICAvLyBGSVhNRTogSGFu
ZGxlIGFycmF5IGJ1ZmZlciBkZXRhY2hpbmcuCiAKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpNYXBwZWRBdENyZWF0
aW9uICYmIG1fYnVmZmVyLnN0b3JhZ2VNb2RlID09IE1UTFN0b3JhZ2VNb2RlTWFuYWdlZCkgewpA
QCAtNDAwLDcgKzMxMCw2IEBAIHZvaWQgQnVmZmVyOjp1bm1hcCgpCiAgICAgfQogI2VuZGlmCiAK
LSAgICAvLyAiU2V0IHRoaXMuW1tzdGF0ZV1dIHRvIHVubWFwcGVkLiIKICAgICBtX3N0YXRlID0g
U3RhdGU6OlVubWFwcGVkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1t
CmluZGV4IDQwNTg0MGY5OGEzOC4uOWZiMTZmMGJkOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kRW5jb2Rlci5tbQpAQCAtOTgsMjMgKzk4LDE4IEBAIHN0YXRpYyBib29sIHZhbGlkYXRl
Q29weUJ1ZmZlclRvQnVmZmVyKGNvbnN0IEJ1ZmZlciYgc291cmNlLCB1aW50NjRfdCBzb3VyY2VP
ZmZzCiAKICAgICAvLyBGSVhNRTogImRlc3RpbmF0aW9uIGlzIHZhbGlkIHRvIHVzZSB3aXRoIHRo
aXMuIgogCi0gICAgLy8gInNvdXJjZS5bW3VzYWdlXV0gY29udGFpbnMgQ09QWV9TUkMuIgogICAg
IGlmICghKHNvdXJjZS51c2FnZSgpICYgV0dQVUJ1ZmZlclVzYWdlX0NvcHlTcmMpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAiZGVzdGluYXRpb24uW1t1c2FnZV1dIGNvbnRhaW5z
IENPUFlfRFNULiIKICAgICBpZiAoIShkZXN0aW5hdGlvbi51c2FnZSgpICYgV0dQVUJ1ZmZlclVz
YWdlX0NvcHlEc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAic2l6ZSBpcyBh
IG11bHRpcGxlIG9mIDQuIgogICAgIGlmIChzaXplICUgNCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgLy8gInNvdXJjZU9mZnNldCBpcyBhIG11bHRpcGxlIG9mIDQuIgogICAgIGlmIChz
b3VyY2VPZmZzZXQgJSA0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAiZGVzdGlu
YXRpb25PZmZzZXQgaXMgYSBtdWx0aXBsZSBvZiA0LiIKICAgICBpZiAoZGVzdGluYXRpb25PZmZz
ZXQgJSA0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE0MywxMyArMTM4LDEwIEBAIHZv
aWQgQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcihjb25zdCBCdWZmZXImIHNvdXJj
ZSwgdWludDY0X3Qgc291cmNlT2ZmCiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlv
L2dwdXdlYi8jZG9tLWdwdWNvbW1hbmRlbmNvZGVyLWNvcHlidWZmZXJ0b2J1ZmZlcgogCi0gICAg
Ly8gIlByZXBhcmUgdGhlIGVuY29kZXIgc3RhdGUgb2YgdGhpcy4gSWYgaXQgcmV0dXJucyBmYWxz
ZSwgc3RvcC4iCiAgICAgaWYgKCFwcmVwYXJlVGhlRW5jb2RlclN0YXRlKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1
bnNhdGlzZmllZAogICAgIGlmICghdmFsaWRhdGVDb3B5QnVmZmVyVG9CdWZmZXIoc291cmNlLCBz
b3VyY2VPZmZzZXQsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbk9mZnNldCwgc2l6ZSkpIHsKLSAg
ICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCiAgICAgICAg
IG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4i
X3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTY1LDcgKzE1Nyw2IEBAIHN0YXRpYyBi
b29sIHZhbGlkYXRlSW1hZ2VDb3B5QnVmZmVyKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXImIGlt
YWdlQ29weUJ1ZmZlcikKIAogICAgIC8vIEZJWE1FOiAiaW1hZ2VDb3B5QnVmZmVyLmJ1ZmZlciBt
dXN0IGJlIGEgdmFsaWQgR1BVQnVmZmVyLiIKIAotICAgIC8vICJpbWFnZUNvcHlCdWZmZXIuYnl0
ZXNQZXJSb3cgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDI1Ni4iCiAgICAgaWYgKGltYWdlQ29weUJ1
ZmZlci5sYXlvdXQuYnl0ZXNQZXJSb3cgJSAyNTYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtMTg5LDY2ICsxODAsNDkgQEAgc3RhdGljIGJvb2wgcmVmZXJzVG9BbGxBc3BlY3RzKFdHUFVU
ZXh0dXJlRm9ybWF0IGZvcm1hdCwgV0dQVVRleHR1cmVBc3BlY3QgYXNwZWMKIAogc3RhdGljIGJv
b2wgdmFsaWRhdGVDb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXIm
IHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIGRlc3RpbmF0aW9uLCBjb25zdCBX
R1BVRXh0ZW50M0QmIGNvcHlTaXplKQogewotICAgIC8vICJMZXQgZHN0VGV4dHVyZURlc2MgYmUg
ZGVzdGluYXRpb24udGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS4iCiAgICAgY29uc3QgYXV0byYgZHN0
VGV4dHVyZURlc2MgPSBmcm9tQVBJKGRlc3RpbmF0aW9uLnRleHR1cmUpLmRlc2NyaXB0b3IoKTsK
IAotICAgIC8vICJ2YWxpZGF0aW5nIEdQVUltYWdlQ29weUJ1ZmZlcihzb3VyY2UpIHJldHVybnMg
dHJ1ZS4iCiAgICAgaWYgKCF2YWxpZGF0ZUltYWdlQ29weUJ1ZmZlcihzb3VyY2UpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAic291cmNlLmJ1ZmZlci5bW3VzYWdlXV0gY29udGFp
bnMgQ09QWV9TUkMuIgogICAgIGlmICghKGZyb21BUEkoc291cmNlLmJ1ZmZlcikudXNhZ2UoKSAm
IFdHUFVCdWZmZXJVc2FnZV9Db3B5U3JjKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ly8gInZhbGlkYXRpbmcgR1BVSW1hZ2VDb3B5VGV4dHVyZShkZXN0aW5hdGlvbiwgY29weVNpemUp
IHJldHVybnMgdHJ1ZS4iCiAgICAgaWYgKCFUZXh0dXJlOjp2YWxpZGF0ZUltYWdlQ29weVRleHR1
cmUoZGVzdGluYXRpb24sIGNvcHlTaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ly8gImRzdFRleHR1cmVEZXNjLnVzYWdlIGNvbnRhaW5zIENPUFlfRFNULiIKICAgICBpZiAoIShk
c3RUZXh0dXJlRGVzYy51c2FnZSAmIFdHUFVUZXh0dXJlVXNhZ2VfQ29weURzdCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIC8vICJkc3RUZXh0dXJlRGVzYy5zYW1wbGVDb3VudCBpcyAx
LiIKICAgICBpZiAoZHN0VGV4dHVyZURlc2Muc2FtcGxlQ291bnQgIT0gMSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgLy8gIkxldCBhc3BlY3RTcGVjaWZpY0Zvcm1hdCA9IGRzdFRleHR1
cmVEZXNjLmZvcm1hdC4iCiAgICAgV0dQVVRleHR1cmVGb3JtYXQgYXNwZWN0U3BlY2lmaWNGb3Jt
YXQgPSBkc3RUZXh0dXJlRGVzYy5mb3JtYXQ7CiAKLSAgICAvLyAiSWYgZHN0VGV4dHVyZURlc2Mu
Zm9ybWF0IGlzIGEgZGVwdGgtb3Itc3RlbmNpbCBmb3JtYXQ6IgogICAgIGlmIChUZXh0dXJlOjpp
c0RlcHRoT3JTdGVuY2lsRm9ybWF0KGRzdFRleHR1cmVEZXNjLmZvcm1hdCkpIHsKLSAgICAgICAg
Ly8gImRlc3RpbmF0aW9uLmFzcGVjdCBtdXN0IHJlZmVyIHRvIGEgc2luZ2xlIGFzcGVjdCBvZiBk
c3RUZXh0dXJlRGVzYy5mb3JtYXQiCiAgICAgICAgIGlmICghVGV4dHVyZTo6cmVmZXJzVG9TaW5n
bGVBc3BlY3QoZHN0VGV4dHVyZURlc2MuZm9ybWF0LCBkZXN0aW5hdGlvbi5hc3BlY3QpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIC8vICJUaGF0IGFzcGVjdCBtdXN0IGJl
IGEgdmFsaWQgaW1hZ2UgY29weSBkZXN0aW5hdGlvbiBhY2NvcmRpbmcgdG8gwqcgMjUuMS4yIERl
cHRoLXN0ZW5jaWwgZm9ybWF0cy4iCiAgICAgICAgIGlmICghVGV4dHVyZTo6aXNWYWxpZEltYWdl
Q29weURlc3RpbmF0aW9uKGRzdFRleHR1cmVEZXNjLmZvcm1hdCwgZGVzdGluYXRpb24uYXNwZWN0
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyAiU2V0IGFzcGVjdFNw
ZWNpZmljRm9ybWF0IHRvIHRoZSBhc3BlY3Qtc3BlY2lmaWMgZm9ybWF0IGFjY29yZGluZyB0byDC
p+KArzI1LjEuMiBEZXB0aC1zdGVuY2lsIGZvcm1hdHMuIgogICAgICAgICBhc3BlY3RTcGVjaWZp
Y0Zvcm1hdCA9IFRleHR1cmU6OmFzcGVjdFNwZWNpZmljRm9ybWF0KGRzdFRleHR1cmVEZXNjLmZv
cm1hdCwgZGVzdGluYXRpb24uYXNwZWN0KTsKICAgICB9CiAKLSAgICAvLyAidmFsaWRhdGluZyB0
ZXh0dXJlIGNvcHkgcmFuZ2UoZGVzdGluYXRpb24sIGNvcHlTaXplKSByZXR1cm4gdHJ1ZS4iCiAg
ICAgaWYgKCFUZXh0dXJlOjp2YWxpZGF0ZVRleHR1cmVDb3B5UmFuZ2UoZGVzdGluYXRpb24sIGNv
cHlTaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gIklmIGRzdFRleHR1cmVE
ZXNjLmZvcm1hdCBpcyBub3QgYSBkZXB0aC1vci1zdGVuY2lsIGZvcm1hdDoiCiAgICAgaWYgKCFU
ZXh0dXJlOjppc0RlcHRoT3JTdGVuY2lsRm9ybWF0KGRzdFRleHR1cmVEZXNjLmZvcm1hdCkpIHsK
LSAgICAgICAgLy8gInNvdXJjZS5vZmZzZXQgaXMgYSBtdWx0aXBsZSBvZiB0aGUgdGV4ZWwgYmxv
Y2sgc2l6ZSBvZiBkc3RUZXh0dXJlRGVzYy5mb3JtYXQuIgogICAgICAgICBhdXRvIHRleGVsQmxv
Y2tTaXplID0gVGV4dHVyZTo6dGV4ZWxCbG9ja1NpemUoZHN0VGV4dHVyZURlc2MuZm9ybWF0KTsK
ICAgICAgICAgaWYgKHNvdXJjZS5sYXlvdXQub2Zmc2V0ICUgdGV4ZWxCbG9ja1NpemUpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gIklmIGRzdFRleHR1cmVEZXNj
LmZvcm1hdCBpcyBhIGRlcHRoLW9yLXN0ZW5jaWwgZm9ybWF0OiIKICAgICBpZiAoVGV4dHVyZTo6
aXNEZXB0aE9yU3RlbmNpbEZvcm1hdChkc3RUZXh0dXJlRGVzYy5mb3JtYXQpKSB7Ci0gICAgICAg
IC8vICJzb3VyY2Uub2Zmc2V0IGlzIGEgbXVsdGlwbGUgb2YgNC4iCiAgICAgICAgIGlmIChzb3Vy
Y2UubGF5b3V0Lm9mZnNldCAlIDQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgLy8gInZhbGlkYXRpbmcgbGluZWFyIHRleHR1cmUgZGF0YShzb3VyY2UsIHNvdXJjZS5i
dWZmZXIuW1tzaXplXV0sIGFzcGVjdFNwZWNpZmljRm9ybWF0LCBjb3B5U2l6ZSkgc3VjY2VlZHMu
IgogICAgIGlmICghVGV4dHVyZTo6dmFsaWRhdGVMaW5lYXJUZXh0dXJlRGF0YShzb3VyY2UubGF5
b3V0LCBmcm9tQVBJKHNvdXJjZS5idWZmZXIpLnNpemUoKSwgYXNwZWN0U3BlY2lmaWNGb3JtYXQs
IGNvcHlTaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yNjIsMTMgKzIzNiwxMCBA
QCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFn
ZUNvcHlCdWZmZXImIHNvdXJjZSwgY29ucwogCiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYi8jZG9tLWdwdWNvbW1hbmRlbmNvZGVyLWNvcHlidWZmZXJ0b3RleHR1cmUKIAot
ICAgIC8vICJQcmVwYXJlIHRoZSBlbmNvZGVyIHN0YXRlIG9mIHRoaXMuIElmIGl0IHJldHVybnMg
ZmFsc2UsIHN0b3AuIgogICAgIGlmICghcHJlcGFyZVRoZUVuY29kZXJTdGF0ZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291
cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7Ci0gICAgICAgIC8vICJnZW5lcmF0ZSBhIHZh
bGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgogICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFs
aWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0zNzQsNjYgKzM0NSw0OSBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVy
VG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXImIHNvdXJjZSwgY29ucwogCiBzdGF0
aWMgYm9vbCB2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29weVRl
eHR1cmUmIHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciYgZGVzdGluYXRpb24sIGNv
bnN0IFdHUFVFeHRlbnQzRCYgY29weVNpemUpCiB7Ci0gICAgLy8gIkxldCBzcmNUZXh0dXJlRGVz
YyBiZSBzb3VyY2UudGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS4iCiAgICAgY29uc3QgYXV0byYgc3Jj
VGV4dHVyZURlc2MgPSBmcm9tQVBJKHNvdXJjZS50ZXh0dXJlKS5kZXNjcmlwdG9yKCk7CiAKLSAg
ICAvLyAidmFsaWRhdGluZyBHUFVJbWFnZUNvcHlUZXh0dXJlKHNvdXJjZSwgY29weVNpemUpIHJl
dHVybnMgdHJ1ZS4iCiAgICAgaWYgKCFUZXh0dXJlOjp2YWxpZGF0ZUltYWdlQ29weVRleHR1cmUo
c291cmNlLCBjb3B5U2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJzcmNU
ZXh0dXJlRGVzYy51c2FnZSBjb250YWlucyBDT1BZX1NSQy4iCiAgICAgaWYgKCEoc3JjVGV4dHVy
ZURlc2MudXNhZ2UgJiBXR1BVQnVmZmVyVXNhZ2VfQ29weVNyYykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIC8vICJzcmNUZXh0dXJlRGVzYy5zYW1wbGVDb3VudCBpcyAxLiIKICAgICBp
ZiAoc3JjVGV4dHVyZURlc2Muc2FtcGxlQ291bnQgIT0gMSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgLy8gIkxldCBhc3BlY3RTcGVjaWZpY0Zvcm1hdCA9IGRzdFRleHR1cmVEZXNjLmZv
cm1hdC4iCiAgICAgV0dQVVRleHR1cmVGb3JtYXQgYXNwZWN0U3BlY2lmaWNGb3JtYXQgPSBzcmNU
ZXh0dXJlRGVzYy5mb3JtYXQ7CiAKLSAgICAvLyAiSWYgc3JjVGV4dHVyZURlc2MuZm9ybWF0IGlz
IGEgZGVwdGgtc3RlbmNpbCBmb3JtYXQ6IgogICAgIGlmIChUZXh0dXJlOjppc0RlcHRoT3JTdGVu
Y2lsRm9ybWF0KHNyY1RleHR1cmVEZXNjLmZvcm1hdCkpIHsKLSAgICAgICAgLy8gInNvdXJjZS5h
c3BlY3QgbXVzdCByZWZlciB0byBhIHNpbmdsZSBhc3BlY3Qgb2Ygc3JjVGV4dHVyZURlc2MuZm9y
bWF0IgogICAgICAgICBpZiAoIVRleHR1cmU6OnJlZmVyc1RvU2luZ2xlQXNwZWN0KHNyY1RleHR1
cmVEZXNjLmZvcm1hdCwgc291cmNlLmFzcGVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgLy8gImFuZCB0aGF0IGFzcGVjdCBtdXN0IGJlIGEgdmFsaWQgaW1hZ2UgY29w
eSBzb3VyY2UgYWNjb3JkaW5nIHRvIMKnIDI1LjEuMiBEZXB0aC1zdGVuY2lsIGZvcm1hdHMuIgog
ICAgICAgICBpZiAoIVRleHR1cmU6OmlzVmFsaWRJbWFnZUNvcHlTb3VyY2Uoc3JjVGV4dHVyZURl
c2MuZm9ybWF0LCBzb3VyY2UuYXNwZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICAvLyAiU2V0IGFzcGVjdFNwZWNpZmljRm9ybWF0IHRvIHRoZSBhc3BlY3Qtc3BlY2lm
aWMgZm9ybWF0IGFjY29yZGluZyB0byDCp+KArzI1LjEuMiBEZXB0aC1zdGVuY2lsIGZvcm1hdHMu
IgogICAgICAgICBhc3BlY3RTcGVjaWZpY0Zvcm1hdCA9IFRleHR1cmU6OmFzcGVjdFNwZWNpZmlj
Rm9ybWF0KHNyY1RleHR1cmVEZXNjLmZvcm1hdCwgc291cmNlLmFzcGVjdCk7CiAgICAgfQogCi0g
ICAgLy8gInZhbGlkYXRpbmcgR1BVSW1hZ2VDb3B5QnVmZmVyKGRlc3RpbmF0aW9uKSByZXR1cm5z
IHRydWUuIgogICAgIGlmICghdmFsaWRhdGVJbWFnZUNvcHlCdWZmZXIoZGVzdGluYXRpb24pKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAiZGVzdGluYXRpb24uYnVmZmVyLltbdXNh
Z2VdXSBjb250YWlucyBDT1BZX0RTVC4iCiAgICAgaWYgKCEoZnJvbUFQSShkZXN0aW5hdGlvbi5i
dWZmZXIpLnVzYWdlKCkgJiBXR1BVQnVmZmVyVXNhZ2VfQ29weURzdCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIC8vICJ2YWxpZGF0aW5nIHRleHR1cmUgY29weSByYW5nZShzb3VyY2Us
IGNvcHlTaXplKSByZXR1cm5zIHRydWUuIgogICAgIGlmICghVGV4dHVyZTo6dmFsaWRhdGVUZXh0
dXJlQ29weVJhbmdlKHNvdXJjZSwgY29weVNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAvLyAiSWYgc3JjVGV4dHVyZURlc2MuZm9ybWF0IGlzIG5vdCBhIGRlcHRoLW9yLXN0ZW5j
aWwgZm9ybWF0OiIKICAgICBpZiAoIVRleHR1cmU6OmlzRGVwdGhPclN0ZW5jaWxGb3JtYXQoc3Jj
VGV4dHVyZURlc2MuZm9ybWF0KSkgewotICAgICAgICAvLyAiZGVzdGluYXRpb24ub2Zmc2V0IGlz
IGEgbXVsdGlwbGUgb2YgdGhlIHRleGVsIGJsb2NrIHNpemUgb2Ygc3JjVGV4dHVyZURlc2MuZm9y
bWF0LiIKICAgICAgICAgYXV0byB0ZXhlbEJsb2NrU2l6ZSA9IFRleHR1cmU6OnRleGVsQmxvY2tT
aXplKHNyY1RleHR1cmVEZXNjLmZvcm1hdCk7CiAgICAgICAgIGlmIChkZXN0aW5hdGlvbi5sYXlv
dXQub2Zmc2V0ICUgdGV4ZWxCbG9ja1NpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgLy8gIklmIHNyY1RleHR1cmVEZXNjLmZvcm1hdCBpcyBhIGRlcHRoLW9yLXN0
ZW5jaWwgZm9ybWF0OiIKICAgICBpZiAoVGV4dHVyZTo6aXNEZXB0aE9yU3RlbmNpbEZvcm1hdChz
cmNUZXh0dXJlRGVzYy5mb3JtYXQpKSB7Ci0gICAgICAgIC8vICJkZXN0aW5hdGlvbi5vZmZzZXQg
aXMgYSBtdWx0aXBsZSBvZiA0LiIKICAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmxheW91dC5vZmZz
ZXQgJSA0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vICJ2YWxp
ZGF0aW5nIGxpbmVhciB0ZXh0dXJlIGRhdGEoZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uLmJ1ZmZl
ci5bW3NpemVdXSwgYXNwZWN0U3BlY2lmaWNGb3JtYXQsIGNvcHlTaXplKSBzdWNjZWVkcy4iCiAg
ICAgaWYgKCFUZXh0dXJlOjp2YWxpZGF0ZUxpbmVhclRleHR1cmVEYXRhKGRlc3RpbmF0aW9uLmxh
eW91dCwgZnJvbUFQSShkZXN0aW5hdGlvbi5idWZmZXIpLnNpemUoKSwgYXNwZWN0U3BlY2lmaWNG
b3JtYXQsIGNvcHlTaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00NDcsMTMgKzQw
MSwxMCBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKGNvbnN0IFdH
UFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvbgogCiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIu
Z2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWNvbW1hbmRlbmNvZGVyLWNvcHl0ZXh0dXJldG9idWZm
ZXIKIAotICAgIC8vICJQcmVwYXJlIHRoZSBlbmNvZGVyIHN0YXRlIG9mIHRoaXMuIElmIGl0IHJl
dHVybnMgZmFsc2UsIHN0b3AuIgogICAgIGlmICghcHJlcGFyZVRoZUVuY29kZXJTdGF0ZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZm
ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7Ci0gICAgICAgIC8vICJnZW5lcmF0
ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgogICAgICAgICBtX2RldmljZS0+Z2VuZXJh
dGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC01NjEsMTEgKzUxMiw5IEBAIHN0YXRpYyBib29sIGFyZUNvcHlDb21wYXRp
YmxlKFdHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdDEsIFdHUFVUZXh0dXJlRm9ybWF0IGZvcm1hCiB7
CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jY29weS1jb21wYXRpYmxl
CiAKLSAgICAvLyAiZm9ybWF0MSBlcXVhbHMgZm9ybWF0MiIKICAgICBpZiAoZm9ybWF0MSA9PSBm
b3JtYXQyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIC8vICJmb3JtYXQxIGFuZCBmb3Jt
YXQyIGRpZmZlciBvbmx5IGluIHdoZXRoZXIgdGhleSBhcmUgc3JnYiBmb3JtYXRzIChoYXZlIHRo
ZSAtc3JnYiBzdWZmaXgpLiIKICAgICBhdXRvIGNhbm9uaWNhbGl6ZWRGb3JtYXQxID0gVGV4dHVy
ZTo6cmVtb3ZlU1JHQlN1ZmZpeChmb3JtYXQxKTsKICAgICBhdXRvIGNhbm9uaWNhbGl6ZWRGb3Jt
YXQyID0gVGV4dHVyZTo6cmVtb3ZlU1JHQlN1ZmZpeChmb3JtYXQyKTsKICAgICBpZiAoIWNhbm9u
aWNhbGl6ZWRGb3JtYXQxIHx8ICFjYW5vbmljYWxpemVkRm9ybWF0MikKQEAgLTU3OCw2NCArNTI3
LDQ4IEBAIHN0YXRpYyBib29sIGFyZUNvcHlDb21wYXRpYmxlKFdHUFVUZXh0dXJlRm9ybWF0IGZv
cm1hdDEsIFdHUFVUZXh0dXJlRm9ybWF0IGZvcm1hCiAKIHN0YXRpYyBib29sIHZhbGlkYXRlQ29w
eVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY29u
c3QgV0dQVUltYWdlQ29weVRleHR1cmUmIGRlc3RpbmF0aW9uLCBjb25zdCBXR1BVRXh0ZW50M0Qm
IGNvcHlTaXplKQogewotICAgIC8vICJMZXQgc3JjVGV4dHVyZURlc2MgYmUgc291cmNlLnRleHR1
cmUuW1tkZXNjcmlwdG9yXV0uIgogICAgIGNvbnN0IGF1dG8mIHNyY1RleHR1cmVEZXNjID0gZnJv
bUFQSShzb3VyY2UudGV4dHVyZSkuZGVzY3JpcHRvcigpOwogCi0gICAgLy8gIkxldCBkc3RUZXh0
dXJlRGVzYyBiZSBkZXN0aW5hdGlvbi50ZXh0dXJlLltbZGVzY3JpcHRvcl1dLiIKICAgICBjb25z
dCBhdXRvJiBkc3RUZXh0dXJlRGVzYyA9IGZyb21BUEkoZGVzdGluYXRpb24udGV4dHVyZSkuZGVz
Y3JpcHRvcigpOwogCi0gICAgLy8gInZhbGlkYXRpbmcgR1BVSW1hZ2VDb3B5VGV4dHVyZShzb3Vy
Y2UsIGNvcHlTaXplKSByZXR1cm5zIHRydWUuIgogICAgIGlmICghVGV4dHVyZTo6dmFsaWRhdGVJ
bWFnZUNvcHlUZXh0dXJlKHNvdXJjZSwgY29weVNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAvLyAic3JjVGV4dHVyZURlc2MudXNhZ2UgY29udGFpbnMgQ09QWV9TUkMuIgogICAg
IGlmICghKHNyY1RleHR1cmVEZXNjLnVzYWdlICYgV0dQVVRleHR1cmVVc2FnZV9Db3B5U3JjKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gInZhbGlkYXRpbmcgR1BVSW1hZ2VDb3B5
VGV4dHVyZShkZXN0aW5hdGlvbiwgY29weVNpemUpIHJldHVybnMgdHJ1ZS4iCiAgICAgaWYgKCFU
ZXh0dXJlOjp2YWxpZGF0ZUltYWdlQ29weVRleHR1cmUoZGVzdGluYXRpb24sIGNvcHlTaXplKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gImRzdFRleHR1cmVEZXNjLnVzYWdlIGNv
bnRhaW5zIENPUFlfRFNULiIKICAgICBpZiAoIShkc3RUZXh0dXJlRGVzYy51c2FnZSAmIFdHUFVU
ZXh0dXJlVXNhZ2VfQ29weURzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJz
cmNUZXh0dXJlRGVzYy5zYW1wbGVDb3VudCBpcyBlcXVhbCB0byBkc3RUZXh0dXJlRGVzYy5zYW1w
bGVDb3VudC4iCiAgICAgaWYgKHNyY1RleHR1cmVEZXNjLnNhbXBsZUNvdW50ICE9IGRzdFRleHR1
cmVEZXNjLnNhbXBsZUNvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAic3Jj
VGV4dHVyZURlc2MuZm9ybWF0IGFuZCBkc3RUZXh0dXJlRGVzYy5mb3JtYXQgbXVzdCBiZSBjb3B5
LWNvbXBhdGlibGUuIgogICAgIGlmICghYXJlQ29weUNvbXBhdGlibGUoc3JjVGV4dHVyZURlc2Mu
Zm9ybWF0LCBkc3RUZXh0dXJlRGVzYy5mb3JtYXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAvLyAiSWYgc3JjVGV4dHVyZURlc2MuZm9ybWF0IGlzIGEgZGVwdGgtc3RlbmNpbCBmb3Jt
YXQ6IgogICAgIGlmIChUZXh0dXJlOjppc0RlcHRoT3JTdGVuY2lsRm9ybWF0KHNyY1RleHR1cmVE
ZXNjLmZvcm1hdCkpIHsKLSAgICAgICAgLy8gInNvdXJjZS5hc3BlY3QgYW5kIGRlc3RpbmF0aW9u
LmFzcGVjdCBtdXN0IGJvdGggcmVmZXIgdG8gYWxsIGFzcGVjdHMgb2Ygc3JjVGV4dHVyZURlc2Mu
Zm9ybWF0IGFuZCBkc3RUZXh0dXJlRGVzYy5mb3JtYXQsIHJlc3BlY3RpdmVseS4iCiAgICAgICAg
IGlmICghcmVmZXJzVG9BbGxBc3BlY3RzKHNyY1RleHR1cmVEZXNjLmZvcm1hdCwgc291cmNlLmFz
cGVjdCkKICAgICAgICAgICAgIHx8ICFyZWZlcnNUb0FsbEFzcGVjdHMoZHN0VGV4dHVyZURlc2Mu
Zm9ybWF0LCBkZXN0aW5hdGlvbi5hc3BlY3QpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIC8vICJ2YWxpZGF0aW5nIHRleHR1cmUgY29weSByYW5nZShzb3VyY2UsIGNv
cHlTaXplKSByZXR1cm5zIHRydWUuIgogICAgIGlmICghVGV4dHVyZTo6dmFsaWRhdGVUZXh0dXJl
Q29weVJhbmdlKHNvdXJjZSwgY29weVNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAvLyAidmFsaWRhdGluZyB0ZXh0dXJlIGNvcHkgcmFuZ2UoZGVzdGluYXRpb24sIGNvcHlTaXpl
KSByZXR1cm5zIHRydWUuIgogICAgIGlmICghVGV4dHVyZTo6dmFsaWRhdGVUZXh0dXJlQ29weVJh
bmdlKGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IC8vICJUaGUgc2V0IG9mIHN1YnJlc291cmNlcyBmb3IgdGV4dHVyZSBjb3B5KHNvdXJjZSwgY29w
eVNpemUpIGFuZCB0aGUgc2V0IG9mIHN1YnJlc291cmNlcyBmb3IgdGV4dHVyZSBjb3B5KGRlc3Rp
bmF0aW9uLCBjb3B5U2l6ZSkgaXMgZGlzam9pbnQuIgogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdp
dGh1Yi5pby9ncHV3ZWIvI2Fic3RyYWN0LW9wZGVmLXNldC1vZi1zdWJyZXNvdXJjZXMtZm9yLXRl
eHR1cmUtY29weQogICAgIGlmIChzb3VyY2UudGV4dHVyZSA9PSBkZXN0aW5hdGlvbi50ZXh0dXJl
KSB7CiAgICAgICAgIC8vIE1pcCBsZXZlbHMgYXJlIG5ldmVyIHJhbmdlcy4KICAgICAgICAgaWYg
KHNvdXJjZS5taXBMZXZlbCA9PSBkZXN0aW5hdGlvbi5taXBMZXZlbCkgewogICAgICAgICAgICAg
c3dpdGNoIChmcm9tQVBJKHNvdXJjZS50ZXh0dXJlKS5kZXNjcmlwdG9yKCkuZGltZW5zaW9uKSB7
CiAgICAgICAgICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uXzFEOgotICAgICAgICAgICAg
ICAgIC8vICJUaGUgc3VicmVzb3VyY2Ugb2YgaW1hZ2VDb3B5VGV4dHVyZS50ZXh0dXJlIGF0IG1p
cG1hcCBsZXZlbCBpbWFnZUNvcHlUZXh0dXJlLm1pcExldmVsLiIKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uXzJEOiB7
Ci0gICAgICAgICAgICAgICAgLy8gIkZvciBlYWNoIGFycmF5TGF5ZXIgb2YgdGhlIGNvcHlTaXpl
LmRlcHRoT3JBcnJheUxheWVycyBhcnJheSBsYXllcnMgc3RhcnRpbmcgYXQgaW1hZ2VDb3B5VGV4
dHVyZS5vcmlnaW4uejoiCi0gICAgICAgICAgICAgICAgLy8gIlRoZSBzdWJyZXNvdXJjZSBvZiBp
bWFnZUNvcHlUZXh0dXJlLnRleHR1cmUgYXQgbWlwbWFwIGxldmVsIGltYWdlQ29weVRleHR1cmUu
bWlwTGV2ZWwgYW5kIGFycmF5IGxheWVyIGFycmF5TGF5ZXIuIgogICAgICAgICAgICAgICAgIFJh
bmdlPHVpbnQzMl90PiBzb3VyY2VSYW5nZShzb3VyY2Uub3JpZ2luLnosIHNvdXJjZS5vcmlnaW4u
eiArIGNvcHlTaXplLmRlcHRoT3JBcnJheUxheWVycyk7CiAgICAgICAgICAgICAgICAgUmFuZ2U8
dWludDMyX3Q+IGRlc3RpbmF0aW9uUmFuZ2UoZGVzdGluYXRpb24ub3JpZ2luLnosIHNvdXJjZS5v
cmlnaW4ueiArIGNvcHlTaXplLmRlcHRoT3JBcnJheUxheWVycyk7CiAgICAgICAgICAgICAgICAg
aWYgKHNvdXJjZVJhbmdlLm92ZXJsYXBzKGRlc3RpbmF0aW9uUmFuZ2UpKQpAQCAtNjQzLDcgKzU3
Niw2IEBAIHN0YXRpYyBib29sIHZhbGlkYXRlQ29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQ
VUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY29uCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uXzNEOgot
ICAgICAgICAgICAgICAgIC8vICJUaGUgc3VicmVzb3VyY2Ugb2YgaW1hZ2VDb3B5VGV4dHVyZS50
ZXh0dXJlIGF0IG1pcG1hcCBsZXZlbCBpbWFnZUNvcHlUZXh0dXJlLm1pcExldmVsLiIKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBjYXNlIFdHUFVUZXh0dXJlRGlt
ZW5zaW9uX0ZvcmNlMzI6CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC02NjIsMTMgKzU5NCwxMCBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4
dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjbwogCiAgICAgLy8gaHR0
cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWNvbW1hbmRlbmNvZGVyLWNvcHl0
ZXh0dXJldG90ZXh0dXJlCiAKLSAgICAvLyAiUHJlcGFyZSB0aGUgZW5jb2RlciBzdGF0ZSBvZiB0
aGlzLiBJZiBpdCByZXR1cm5zIGZhbHNlLCBzdG9wLiIKICAgICBpZiAoIXByZXBhcmVUaGVFbmNv
ZGVyU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gIklmIGFueSBvZiB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5
VGV4dHVyZVRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsKLSAgICAg
ICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCiAgICAgICAgIG1f
ZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc1MSwxOSArNjgwLDE1IEBAIHN0YXRpYyBib29s
IHZhbGlkYXRlQ2xlYXJCdWZmZXIoY29uc3QgQnVmZmVyJiBidWZmZXIsIHVpbnQ2NF90IG9mZnNl
dCwgdWludDY0X3QKIHsKICAgICAvLyBGSVhNRTogImJ1ZmZlciBpcyB2YWxpZCB0byB1c2Ugd2l0
aCB0aGlzLiIKIAotICAgIC8vICJidWZmZXIuW1t1c2FnZV1dIGNvbnRhaW5zIENPUFlfRFNULiIK
ICAgICBpZiAoIShidWZmZXIudXNhZ2UoKSAmIFdHUFVCdWZmZXJVc2FnZV9Db3B5RHN0KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gInNpemUgaXMgYSBtdWx0aXBsZSBvZiA0LiIK
ICAgICBpZiAoc2l6ZSAlIDQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJvZmZz
ZXQgaXMgYSBtdWx0aXBsZSBvZiA0LiIKICAgICBpZiAob2Zmc2V0ICUgNCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgLy8gImJ1ZmZlci5bW3NpemVdXSBpcyBncmVhdGVyIHRoYW4gb3Ig
ZXF1YWwgdG8gKG9mZnNldCArIHNpemUpLiIKICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJp
dGhtZXRpYy4KICAgICBpZiAoYnVmZmVyLnNpemUoKSA8IG9mZnNldCArIHNpemUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTc3NSwxOSArNzAwLDE1IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6
OmNsZWFyQnVmZmVyKGNvbnN0IEJ1ZmZlciYgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2
NF90CiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWNv
bW1hbmRlbmNvZGVyLWNsZWFyYnVmZmVyCiAKLSAgICAvLyAiUHJlcGFyZSB0aGUgZW5jb2RlciBz
dGF0ZSBvZiB0aGlzLiBJZiBpdCByZXR1cm5zIGZhbHNlLCBzdG9wLiIKICAgICBpZiAoIXByZXBh
cmVUaGVFbmNvZGVyU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gIklmIHNpemUg
aXMgbWlzc2luZywgc2V0IHNpemUgdG8gbWF4KDAsIHxidWZmZXJ8Lnt7R1BVQnVmZmVyL1tbc2l6
ZV1dfX0gLSB8b2Zmc2V0fCkuIgogICAgIGlmIChzaXplID09IFdHUFVfV0hPTEVfU0laRSkgewog
ICAgICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICAgICAgc2l6ZSA9
IGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQ7CiAgICAgfQogCi0gICAgLy8gIklmIGFueSBvZiB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVD
bGVhckJ1ZmZlcihidWZmZXIsIG9mZnNldCwgc2l6ZSkpIHsKLSAgICAgICAgLy8gImdlbmVyYXRl
IGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCiAgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0
ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtNzk5LDExICs3MjAsOCBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjbGVh
ckJ1ZmZlcihjb25zdCBCdWZmZXImIGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdAog
CiBib29sIENvbW1hbmRFbmNvZGVyOjp2YWxpZGF0ZUZpbmlzaCgpIGNvbnN0CiB7Ci0gICAgLy8g
IkxldCB2YWxpZGF0aW9uU3VjY2VlZGVkIGJlIHRydWUgaWYgYWxsIG9mIHRoZSBmb2xsb3dpbmcg
cmVxdWlyZW1lbnRzIGFyZSBtZXQsIGFuZCBmYWxzZSBvdGhlcndpc2UuIgotCiAgICAgLy8gRklY
TUU6ICJ0aGlzIG11c3QgYmUgdmFsaWQuIgogCi0gICAgLy8gInRoaXMuW1tzdGF0ZV1dIG11c3Qg
YmUgIm9wZW4iLiIKICAgICBpZiAobV9zdGF0ZSAhPSBFbmNvZGVyU3RhdGU6Ok9wZW4pCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtODIxLDE1ICs3MzksMTEgQEAgUmVmUHRyPENvbW1hbmRC
dWZmZXI+IENvbW1hbmRFbmNvZGVyOjpmaW5pc2goY29uc3QgV0dQVUNvbW1hbmRCdWZmZXJEZXNj
cmlwdG9yJgogCiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdw
dWNvbW1hbmRlbmNvZGVyLWZpbmlzaAogCi0gICAgLy8gIkxldCB2YWxpZGF0aW9uU3VjY2VlZGVk
IGJlIHRydWUgaWYgYWxsIG9mIHRoZSBmb2xsb3dpbmcgcmVxdWlyZW1lbnRzIGFyZSBtZXQsIGFu
ZCBmYWxzZSBvdGhlcndpc2UuIgogICAgIGF1dG8gdmFsaWRhdGlvbkZhaWxlZCA9ICF2YWxpZGF0
ZUZpbmlzaCgpOwogCi0gICAgLy8gIlNldCB0aGlzLltbc3RhdGVdXSB0byAiZW5kZWQiLiIKICAg
ICBtX3N0YXRlID0gRW5jb2RlclN0YXRlOjpFbmRlZDsKIAotICAgIC8vICJJZiB2YWxpZGF0aW9u
U3VjY2VlZGVkIGlzIGZhbHNlLCB0aGVuOiIKICAgICBpZiAodmFsaWRhdGlvbkZhaWxlZCkgewot
ICAgICAgICAvLyAiR2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yLiIKICAgICAgICAgbV9kZXZp
Y2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAK
ICAgICAgICAgLy8gRklYTUU6ICJSZXR1cm4gYSBuZXcgaW52YWxpZCBHUFVDb21tYW5kQnVmZmVy
LiIKQEAgLTgzOCw3ICs3NTIsNiBAQCBSZWZQdHI8Q29tbWFuZEJ1ZmZlcj4gQ29tbWFuZEVuY29k
ZXI6OmZpbmlzaChjb25zdCBXR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3ImCiAKICAgICBmaW5h
bGl6ZUJsaXRDb21tYW5kRW5jb2RlcigpOwogCi0gICAgLy8gIlNldCBjb21tYW5kQnVmZmVyLltb
Y29tbWFuZF9saXN0XV0gdG8gdGhpcy5bW2NvbW1hbmRzXV0uIgogICAgIGF1dG8gKmNvbW1hbmRC
dWZmZXIgPSBtX2NvbW1hbmRCdWZmZXI7CiAgICAgbV9jb21tYW5kQnVmZmVyID0gbmlsOwogCkBA
IC04NTEsNyArNzY0LDYgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIo
U3RyaW5nJiYgbWFya2VyTGFiZWwpCiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlv
L2dwdXdlYi8jZG9tLWdwdWRlYnVnY29tbWFuZHNtaXhpbi1pbnNlcnRkZWJ1Z21hcmtlcgogCi0g
ICAgLy8gIlByZXBhcmUgdGhlIGVuY29kZXIgc3RhdGUgb2YgdGhpcy4gSWYgaXQgcmV0dXJucyBm
YWxzZSwgc3RvcC4iCiAgICAgaWYgKCFwcmVwYXJlVGhlRW5jb2RlclN0YXRlKCkpCiAgICAgICAg
IHJldHVybjsKIApAQCAtODY0LDcgKzc3Niw2IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6Omluc2Vy
dERlYnVnTWFya2VyKFN0cmluZyYmIG1hcmtlckxhYmVsKQogCiBib29sIENvbW1hbmRFbmNvZGVy
Ojp2YWxpZGF0ZVBvcERlYnVnR3JvdXAoKSBjb25zdAogewotICAgIC8vICJ0aGlzLltbZGVidWdf
Z3JvdXBfc3RhY2tdXSBtdXN0IG5vdCBiZSBlbXB0eS4iCiAgICAgaWYgKCFtX2RlYnVnR3JvdXBT
dGFja1NpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODc1LDExICs3ODYsOSBAQCB2
b2lkIENvbW1hbmRFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKCkKIHsKICAgICAvLyBodHRwczovL2dw
dXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGVidWdjb21tYW5kc21peGluLXBvcGRlYnVn
Z3JvdXAKIAotICAgIC8vICJQcmVwYXJlIHRoZSBlbmNvZGVyIHN0YXRlIG9mIHRoaXMuIElmIGl0
IHJldHVybnMgZmFsc2UsIHN0b3AuIgogICAgIGlmICghcHJlcGFyZVRoZUVuY29kZXJTdGF0ZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgcmVx
dWlyZW1lbnRzIGFyZSB1bm1ldCIKICAgICBpZiAoIXZhbGlkYXRlUG9wRGVidWdHcm91cCgpKSB7
CiAgICAgICAgIC8vIEZJWE1FOiAibWFrZSB0aGlzIGludmFsaWQsIGFuZCBzdG9wLiIKICAgICAg
ICAgcmV0dXJuOwpAQCAtODg3LDcgKzc5Niw2IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OnBvcERl
YnVnR3JvdXAoKQogCiAgICAgZmluYWxpemVCbGl0Q29tbWFuZEVuY29kZXIoKTsKIAotICAgIC8v
ICJQb3AgYW4gZW50cnkgb2ZmIG9mIHRoaXMuW1tkZWJ1Z19ncm91cF9zdGFja11dLiIKICAgICAt
LW1fZGVidWdHcm91cFN0YWNrU2l6ZTsKICAgICBbbV9jb21tYW5kQnVmZmVyIHBvcERlYnVnR3Jv
dXBdOwogfQpAQCAtODk2LDEzICs4MDQsMTEgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6cHVzaERl
YnVnR3JvdXAoU3RyaW5nJiYgZ3JvdXBMYWJlbCkKIHsKICAgICAvLyBodHRwczovL2dwdXdlYi5n
aXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGVidWdjb21tYW5kc21peGluLXB1c2hkZWJ1Z2dyb3Vw
CiAKLSAgICAvLyAiUHJlcGFyZSB0aGUgZW5jb2RlciBzdGF0ZSBvZiB0aGlzLiBJZiBpdCByZXR1
cm5zIGZhbHNlLCBzdG9wLiIKICAgICBpZiAoIXByZXBhcmVUaGVFbmNvZGVyU3RhdGUoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAogICAgIGZpbmFsaXplQmxpdENvbW1hbmRFbmNvZGVyKCk7CiAK
LSAgICAvLyAiUHVzaCBncm91cExhYmVsIG9udG8gdGhpcy5bW2RlYnVnX2dyb3VwX3N0YWNrXV0u
IgogICAgICsrbV9kZWJ1Z0dyb3VwU3RhY2tTaXplOwogICAgIFttX2NvbW1hbmRCdWZmZXIgcHVz
aERlYnVnR3JvdXA6Z3JvdXBMYWJlbF07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRl
UGFzc0VuY29kZXIubW0KaW5kZXggMDlkYzljM2IzMjhjLi43OTczZjBkZDE4MmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW0KQEAgLTcyLDcgKzcyLDYgQEAg
dm9pZCBDb21wdXRlUGFzc0VuY29kZXI6Omluc2VydERlYnVnTWFya2VyKFN0cmluZyYmIG1hcmtl
ckxhYmVsKQogewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1n
cHVkZWJ1Z2NvbW1hbmRzbWl4aW4taW5zZXJ0ZGVidWdtYXJrZXIKIAotICAgIC8vICJQcmVwYXJl
IHRoZSBlbmNvZGVyIHN0YXRlIG9mIHRoaXMuIElmIGl0IHJldHVybnMgZmFsc2UsIHN0b3AuIgog
ICAgIGlmICghcHJlcGFyZVRoZUVuY29kZXJTdGF0ZSgpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTgxLDcgKzgwLDYgQEAgdm9pZCBDb21wdXRlUGFzc0VuY29kZXI6Omluc2VydERlYnVnTWFya2Vy
KFN0cmluZyYmIG1hcmtlckxhYmVsKQogCiBib29sIENvbXB1dGVQYXNzRW5jb2Rlcjo6dmFsaWRh
dGVQb3BEZWJ1Z0dyb3VwKCkgY29uc3QKIHsKLSAgICAvLyAidGhpcy5bW2RlYnVnX2dyb3VwX3N0
YWNrXV0gbXVzdCBub3QgYmUgZW1wdHkuIgogICAgIGlmICghbV9kZWJ1Z0dyb3VwU3RhY2tTaXpl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTkyLDE3ICs5MCwxNCBAQCB2b2lkIENvbXB1
dGVQYXNzRW5jb2Rlcjo6cG9wRGVidWdHcm91cCgpCiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIu
Z2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWRlYnVnY29tbWFuZHNtaXhpbi1wb3BkZWJ1Z2dyb3Vw
CiAKLSAgICAvLyAiUHJlcGFyZSB0aGUgZW5jb2RlciBzdGF0ZSBvZiB0aGlzLiBJZiBpdCByZXR1
cm5zIGZhbHNlLCBzdG9wLiIKICAgICBpZiAoIXByZXBhcmVUaGVFbmNvZGVyU3RhdGUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIHJlcXVpcmVt
ZW50cyBhcmUgdW5tZXQiCiAgICAgaWYgKCF2YWxpZGF0ZVBvcERlYnVnR3JvdXAoKSkgewogICAg
ICAgICAvLyBGSVhNRTogIm1ha2UgdGhpcyBpbnZhbGlkLCBhbmQgc3RvcC4iCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICAvLyAiUG9wIGFuIGVudHJ5IG9mZiBvZiB0aGlzLltbZGVidWdf
Z3JvdXBfc3RhY2tdXS4iCiAgICAgLS1tX2RlYnVnR3JvdXBTdGFja1NpemU7CiAgICAgW21fY29t
cHV0ZUNvbW1hbmRFbmNvZGVyIHBvcERlYnVnR3JvdXBdOwogfQpAQCAtMTExLDExICsxMDYsOSBA
QCB2b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6cHVzaERlYnVnR3JvdXAoU3RyaW5nJiYgZ3JvdXBM
YWJlbCkKIHsKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1
ZGVidWdjb21tYW5kc21peGluLXB1c2hkZWJ1Z2dyb3VwCiAKLSAgICAvLyAiUHJlcGFyZSB0aGUg
ZW5jb2RlciBzdGF0ZSBvZiB0aGlzLiBJZiBpdCByZXR1cm5zIGZhbHNlLCBzdG9wLiIKICAgICBp
ZiAoIXByZXBhcmVUaGVFbmNvZGVyU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8g
IlB1c2ggZ3JvdXBMYWJlbCBvbnRvIHRoaXMuW1tkZWJ1Z19ncm91cF9zdGFja11dLiIKICAgICAr
K21fZGVidWdHcm91cFN0YWNrU2l6ZTsKICAgICBbbV9jb21wdXRlQ29tbWFuZEVuY29kZXIgcHVz
aERlYnVnR3JvdXA6Z3JvdXBMYWJlbF07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9EZXZpY2UuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCmluZGV4IGQ4ZTU5
YzhlZDQ3Ni4uNjI2YzU2NWM0NTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9E
ZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaApAQCAtMTEwLDggKzEx
MCw4IEBAIHByaXZhdGU6CiAgICAgICAgIFN0cmluZyBtZXNzYWdlOwogICAgIH07CiAgICAgc3Ry
dWN0IEVycm9yU2NvcGUgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPEVycm9yPiBlcnJvcjsgLy8g
IlRoZSBmaXJzdCBHUFVFcnJvciwgaWYgYW55LCBvYnNlcnZlZCB3aGlsZSB0aGUgR1BVIGVycm9y
IHNjb3BlIHdhcyBjdXJyZW50LiIKLSAgICAgICAgY29uc3QgV0dQVUVycm9yRmlsdGVyIGZpbHRl
cjsgLy8gRGV0ZXJtaW5lcyB3aGF0IHR5cGUgb2YgR1BVRXJyb3IgdGhpcyBHUFUgZXJyb3Igc2Nv
cGUgb2JzZXJ2ZXMuCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3I+IGVycm9yOworICAgICAg
ICBjb25zdCBXR1BVRXJyb3JGaWx0ZXIgZmlsdGVyOwogICAgIH07CiAKICAgICBjb25zdCBpZDxN
VExEZXZpY2U+IG1fZGV2aWNlIHsgbmlsIH07CkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToK
ICAgICBjb25zdCBSZWY8SW5zdGFuY2U+IG1faW5zdGFuY2U7CiAKICAgICBGdW5jdGlvbjx2b2lk
KFdHUFVFcnJvclR5cGUsIFN0cmluZyYmKT4gbV91bmNhcHR1cmVkRXJyb3JDYWxsYmFjazsKLSAg
ICBWZWN0b3I8RXJyb3JTY29wZT4gbV9lcnJvclNjb3BlU3RhY2s7IC8vICJBIHN0YWNrIG9mIEdQ
VSBlcnJvciBzY29wZXMgdGhhdCBoYXZlIGJlZW4gcHVzaGVkIHRvIHRoZSBHUFVEZXZpY2UuIgor
ICAgIFZlY3RvcjxFcnJvclNjb3BlPiBtX2Vycm9yU2NvcGVTdGFjazsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1t
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tCmluZGV4IGU5MWVkMDU2MmQ2MC4uNjQ4
MzY4OGUwYzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0KKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tCkBAIC0xMDYsMTUgKzEwNiwxMCBAQCBh
dXRvIERldmljZTo6Y3VycmVudEVycm9yU2NvcGUoV0dQVUVycm9yRmlsdGVyIHR5cGUpIC0+IEVy
cm9yU2NvcGUqCiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jYWJz
dHJhY3Qtb3BkZWYtY3VycmVudC1lcnJvci1zY29wZQogCi0gICAgLy8gIkxldCBzY29wZSBiZSB0
aGUgbGFzdCBpdGVtIG9mIGRldmljZS5bW2Vycm9yU2NvcGVTdGFja11dLiIKLSAgICAvLyAiV2hp
bGUgc2NvcGUgaXMgbm90IHVuZGVmaW5lZDoiCiAgICAgZm9yIChhdXRvIGl0ZXJhdG9yID0gbV9l
cnJvclNjb3BlU3RhY2sucmJlZ2luKCk7IGl0ZXJhdG9yICE9IG1fZXJyb3JTY29wZVN0YWNrLnJl
bmQoKTsgKytpdGVyYXRvcikgewotICAgICAgICAvLyAiSWYgc2NvcGUuW1tmaWx0ZXJdXSBpcyB0
eXBlLCByZXR1cm4gc2NvcGUuIgogICAgICAgICBpZiAoaXRlcmF0b3ItPmZpbHRlciA9PSB0eXBl
KQogICAgICAgICAgICAgcmV0dXJuICYqaXRlcmF0b3I7Ci0gICAgICAgIC8vICJTZXQgc2NvcGUg
dG8gdGhlIHByZXZpb3VzIGl0ZW0gb2YgZGV2aWNlLltbZXJyb3JTY29wZVN0YWNrXV0uIgogICAg
IH0KLSAgICAvLyAiUmV0dXJuIHVuZGVmaW5lZC4iCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
QEAgLTEyMiwyMCArMTE3LDE0IEBAIHZvaWQgRGV2aWNlOjpnZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoU3RyaW5nJiYgbWVzc2FnZSkKIHsKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8v
Z3B1d2ViLyNhYnN0cmFjdC1vcGRlZi1nZW5lcmF0ZS1hLXZhbGlkYXRpb24tZXJyb3IKIAotICAg
IC8vICJMZXQgc2NvcGUgYmUgdGhlIGN1cnJlbnQgZXJyb3Igc2NvcGUgZm9yIGVycm9yIGFuZCBk
ZXZpY2UuIgogICAgIGF1dG8qIHNjb3BlID0gY3VycmVudEVycm9yU2NvcGUoV0dQVUVycm9yRmls
dGVyX1ZhbGlkYXRpb24pOwogCi0gICAgLy8gIklmIHNjb3BlIGlzIG5vdCB1bmRlZmluZWQ6Igog
ICAgIGlmIChzY29wZSkgewotICAgICAgICAvLyAiSWYgc2NvcGUuW1tlcnJvcl1dIGlzIG51bGws
IHNldCBzY29wZS5bW2Vycm9yXV0gdG8gZXJyb3IuIgogICAgICAgICBpZiAoIXNjb3BlLT5lcnJv
cikKICAgICAgICAgICAgIHNjb3BlLT5lcnJvciA9IEVycm9yIHsgV0dQVUVycm9yVHlwZV9WYWxp
ZGF0aW9uLCBXVEZNb3ZlKG1lc3NhZ2UpIH07Ci0gICAgICAgIC8vICJTdG9wLiIKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIC8vICJPdGhlcndpc2UgaXNzdWUgdGhlIGZvbGxvd2luZyBz
dGVwcyB0byB0aGUgQ29udGVudCB0aW1lbGluZToiCi0gICAgLy8gIklmIHRoZSB1c2VyIGFnZW50
IGNob29zZXMsIHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQg
bmFtZWQgInVuY2FwdHVyZWRlcnJvciIgb24gZGV2aWNlIHdpdGggYW4gZXJyb3Igb2YgZXJyb3Iu
IgogICAgIGlmIChtX3VuY2FwdHVyZWRFcnJvckNhbGxiYWNrKSB7CiAgICAgICAgIG1faW5zdGFu
Y2UtPnNjaGVkdWxlV29yayhbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIG1lc3NhZ2Ug
PSBXVEZNb3ZlKG1lc3NhZ2UpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+bV91bmNhcHR1cmVkRXJyb3JDYWxsYmFjayhXR1BVRXJyb3JUeXBlX1ZhbGlkYXRpb24sIFdU
Rk1vdmUobWVzc2FnZSkpOwpAQCAtMTQ3LDcgKzEzNiw2IEBAIGJvb2wgRGV2aWNlOjp2YWxpZGF0
ZVBvcEVycm9yU2NvcGUoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiAidGhpcyBtdXN0IG5vdCBi
ZSBsb3N0LiIKIAotICAgIC8vICJ0aGlzLltbZXJyb3JTY29wZVN0YWNrXV0uc2l6ZSA+IDAuIgog
ICAgIGlmIChtX2Vycm9yU2NvcGVTdGFjay5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMTU4LDE3ICsxNDYsMTMgQEAgYm9vbCBEZXZpY2U6OnBvcEVycm9yU2NvcGUoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXR1BVRXJyb3JUeXBlLCBTdHJpbmcmJik+JiYgY2EKIHsKICAg
ICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGV2aWNlLXBvcGVy
cm9yc2NvcGUKIAotICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHMg
YXJlIHVubWV0IgogICAgIGlmICghdmFsaWRhdGVQb3BFcnJvclNjb3BlKCkpIHsKLSAgICAgICAg
Ly8gInJlamVjdCBwcm9taXNlIHdpdGggYW4gT3BlcmF0aW9uRXJyb3IgYW5kIHN0b3AuIgogICAg
ICAgICBjYWxsYmFjayhXR1BVRXJyb3JUeXBlX1Vua25vd24sICJwb3BFcnJvclNjb3BlKCkgZmFp
bGVkIHZhbGlkYXRpb24uIl9zKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IC8vICJMZXQgc2NvcGUgYmUgdGhlIHJlc3VsdCBvZiBwb3BwaW5nIGFuIGl0ZW0gb2ZmIG9mIHRo
aXMuW1tlcnJvclNjb3BlU3RhY2tdXS4iCiAgICAgYXV0byBzY29wZSA9IG1fZXJyb3JTY29wZVN0
YWNrLnRha2VMYXN0KCk7CiAKLSAgICAvLyAiUmVzb2x2ZSBwcm9taXNlIHdpdGggc2NvcGUuW1tl
cnJvcl1dLiIKICAgICBtX2luc3RhbmNlLT5zY2hlZHVsZVdvcmsoW3Njb3BlID0gV1RGTW92ZShz
Y29wZSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChzY29wZS5lcnJvcikKICAgICAgICAgICAgIGNhbGxiYWNrKHNjb3BlLmVycm9yLT50eXBl
LCBXVEZNb3ZlKHNjb3BlLmVycm9yLT5tZXNzYWdlKSk7CkBAIC0xODQsMTEgKzE2OCw4IEBAIHZv
aWQgRGV2aWNlOjpwdXNoRXJyb3JTY29wZShXR1BVRXJyb3JGaWx0ZXIgZmlsdGVyKQogewogICAg
IC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVkZXZpY2UtcHVzaGVy
cm9yc2NvcGUKIAotICAgIC8vICJMZXQgc2NvcGUgYmUgYSBuZXcgR1BVIGVycm9yIHNjb3BlLiIK
LSAgICAvLyAiU2V0IHNjb3BlLltbZmlsdGVyXV0gdG8gZmlsdGVyLiIKICAgICBFcnJvclNjb3Bl
IHNjb3BlIHsgc3RkOjpudWxsb3B0LCBmaWx0ZXIgfTsKIAotICAgIC8vICJQdXNoIHNjb3BlIG9u
dG8gdGhpcy5bW2Vycm9yU2NvcGVTdGFja11dLiIKICAgICBtX2Vycm9yU2NvcGVTdGFjay5hcHBl
bmQoV1RGTW92ZShzY29wZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9RdWV1ZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tCmluZGV4IDM0MzFlZGMz
ZjczZS4uOWE3MDA2YjkxYTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1
ZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbQpAQCAtMTI5LDI5ICsxMjks
MTkgQEAgdm9pZCBRdWV1ZTo6c3VibWl0KFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNv
bnN0IENvbW1hbmRCdWZmZXI+PiYmIGNvbW1hbmQKIHsKICAgICAvLyBodHRwczovL2dwdXdlYi5n
aXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1cXVldWUtc3VibWl0CiAKLSAgICAvLyAiSWYgYW55IG9m
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxp
ZGF0ZVN1Ym1pdCgpKSB7Ci0gICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgogICAgICAgICBtX2RldmljZS5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZh
bGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZmlu
YWxpemVCbGl0Q29tbWFuZEVuY29kZXIoKTsKIAotICAgIC8vICJGb3IgZWFjaCBjb21tYW5kQnVm
ZmVyIGluIGNvbW1hbmRCdWZmZXJzOiIKLSAgICBmb3IgKGF1dG8gY29tbWFuZEJ1ZmZlciA6IGNv
bW1hbmRzKSB7Ci0gICAgICAgIC8vICJFeGVjdXRlIGVhY2ggY29tbWFuZCBpbiBjb21tYW5kQnVm
ZmVyLltbY29tbWFuZF9saXN0XV0uIgorICAgIGZvciAoYXV0byBjb21tYW5kQnVmZmVyIDogY29t
bWFuZHMpCiAgICAgICAgIGNvbW1pdE1UTENvbW1hbmRCdWZmZXIoY29tbWFuZEJ1ZmZlci5nZXQo
KS5jb21tYW5kQnVmZmVyKCkpOwotICAgIH0KIH0KIAogc3RhdGljIGJvb2wgdmFsaWRhdGVXcml0
ZUJ1ZmZlckluaXRpYWwoc2l6ZV90IHNpemUpCiB7Ci0gICAgLy8gImNvbnRlbnRzU2l6ZSDiiaUg
MC4iCi0KLSAgICAvLyAiZGF0YU9mZnNldCArIGNvbnRlbnRzU2l6ZSDiiaQgZGF0YVNpemUuIgot
Ci0gICAgLy8gImNvbnRlbnRzU2l6ZSwgY29udmVydGVkIHRvIGJ5dGVzLCBpcyBhIG11bHRpcGxl
IG9mIDQgYnl0ZXMuIgogICAgIGlmIChzaXplICUgNCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC0xNjIsMTkgKzE1MiwxNSBAQCBib29sIFF1ZXVlOjp2YWxpZGF0ZVdyaXRlQnVmZmVyKGNv
bnN0IEJ1ZmZlciYgYnVmZmVyLCB1aW50NjRfdCBidWZmZXJPZmZzZXQsIHNpegogewogICAgIC8v
IEZJWE1FOiAiYnVmZmVyIGlzIHZhbGlkIHRvIHVzZSB3aXRoIHRoaXMuIgogCi0gICAgLy8gImJ1
ZmZlci5bW3N0YXRlXV0gaXMgdW5tYXBwZWQuIgogICAgIGlmIChidWZmZXIuc3RhdGUoKSAhPSBC
dWZmZXI6OlN0YXRlOjpVbm1hcHBlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8g
ImJ1ZmZlci5bW3VzYWdlXV0gaW5jbHVkZXMgQ09QWV9EU1QuIgogICAgIGlmICghKGJ1ZmZlci51
c2FnZSgpICYgV0dQVUJ1ZmZlclVzYWdlX0NvcHlEc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAvLyAiYnVmZmVyT2Zmc2V0LCBjb252ZXJ0ZWQgdG8gYnl0ZXMsIGlzIGEgbXVsdGlw
bGUgb2YgNCBieXRlcy4iCiAgICAgaWYgKGJ1ZmZlck9mZnNldCAlIDQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIC8vICJidWZmZXJPZmZzZXQgKyBjb250ZW50c1NpemUsIGNvbnZlcnRl
ZCB0byBieXRlcywg4omkIGJ1ZmZlci5bW3NpemVdXSBieXRlcy4iCiAgICAgLy8gRklYTUU6IFVz
ZSBjaGVja2VkIGFyaXRobWV0aWMKICAgICBpZiAoYnVmZmVyT2Zmc2V0ICsgc2l6ZSA+IGJ1ZmZl
ci5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4NiwzMCArMTcyLDE2IEBAIHZv
aWQgUXVldWU6OndyaXRlQnVmZmVyKGNvbnN0IEJ1ZmZlciYgYnVmZmVyLCB1aW50NjRfdCBidWZm
ZXJPZmZzZXQsIGNvbnN0IHZvaWQqCiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlv
L2dwdXdlYi8jZG9tLWdwdXF1ZXVlLXdyaXRlYnVmZmVyCiAKLSAgICAvLyAiSWYgZGF0YSBpcyBh
biBBcnJheUJ1ZmZlciBvciBEYXRhVmlldywgbGV0IHRoZSBlbGVtZW50IHR5cGUgYmUgImJ5dGUi
LiBPdGhlcndpc2UsIGRhdGEgaXMgYSBUeXBlZEFycmF5OyBsZXQgdGhlIGVsZW1lbnQgdHlwZSBi
ZSB0aGUgdHlwZSBvZiB0aGUgVHlwZWRBcnJheS4iCi0KLSAgICAvLyAiTGV0IGRhdGFTaXplIGJl
IHRoZSBzaXplIG9mIGRhdGEsIGluIGVsZW1lbnRzLiIKLQotICAgIC8vICJJZiBzaXplIGlzIG1p
c3NpbmcsIGxldCBjb250ZW50c1NpemUgYmUgZGF0YVNpemUg4oiSIGRhdGFPZmZzZXQuIE90aGVy
d2lzZSwgbGV0IGNvbnRlbnRzU2l6ZSBiZSBzaXplLiIKLQotICAgIC8vICJJZiBhbnkgb2YgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRl
V3JpdGVCdWZmZXJJbml0aWFsKHNpemUpKSB7CiAgICAgICAgIC8vIEZJWE1FOiAidGhyb3cgT3Bl
cmF0aW9uRXJyb3IgYW5kIHN0b3AuIgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8g
IkxldCBkYXRhQ29udGVudHMgYmUgYSBjb3B5IG9mIHRoZSBieXRlcyBoZWxkIGJ5IHRoZSBidWZm
ZXIgc291cmNlLiIKLQotICAgIC8vICJMZXQgY29udGVudHMgYmUgdGhlIGNvbnRlbnRzU2l6ZSBl
bGVtZW50cyBvZiBkYXRhQ29udGVudHMgc3RhcnRpbmcgYXQgYW4gb2Zmc2V0IG9mIGRhdGFPZmZz
ZXQgZWxlbWVudHMuIgotCi0gICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVXcml0ZUJ1ZmZlcihidWZmZXIs
IGJ1ZmZlck9mZnNldCwgc2l6ZSkpIHsKLSAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlv
biBlcnJvciBhbmQgc3RvcC4iCiAgICAgICAgIG1fZGV2aWNlLmdlbmVyYXRlQVZhbGlkYXRpb25F
cnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICAvLyAiV3JpdGUgY29udGVudHMgaW50byBidWZmZXIgc3RhcnRpbmcgYXQgYnVmZmVyT2Zm
c2V0LiIKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjUxLDQwICsyMjMs
MjkgQEAgdm9pZCBRdWV1ZTo6d3JpdGVCdWZmZXIoY29uc3QgQnVmZmVyJiBidWZmZXIsIHVpbnQ2
NF90IGJ1ZmZlck9mZnNldCwgY29uc3Qgdm9pZCoKIAogc3RhdGljIGJvb2wgdmFsaWRhdGVXcml0
ZVRleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIGRlc3RpbmF0aW9uLCBjb25zdCBX
R1BVVGV4dHVyZURhdGFMYXlvdXQmIGRhdGFMYXlvdXQsIGNvbnN0IFdHUFVFeHRlbnQzRCYgc2l6
ZSwgc2l6ZV90IGRhdGFCeXRlU2l6ZSwgY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiB0ZXh0
dXJlRGVzYykKIHsKLSAgICAvLyAidmFsaWRhdGluZyBHUFVJbWFnZUNvcHlUZXh0dXJlKGRlc3Rp
bmF0aW9uLCBzaXplKSByZXR1cm5zIHRydWUuIgogICAgIGlmICghVGV4dHVyZTo6dmFsaWRhdGVJ
bWFnZUNvcHlUZXh0dXJlKGRlc3RpbmF0aW9uLCBzaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgLy8gInRleHR1cmVEZXNjLnVzYWdlIGluY2x1ZGVzIENPUFlfRFNULiIKICAgICBp
ZiAoISh0ZXh0dXJlRGVzYy51c2FnZSAmIFdHUFVUZXh0dXJlVXNhZ2VfQ29weURzdCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJ0ZXh0dXJlRGVzYy5zYW1wbGVDb3VudCBpcyAx
LiIKICAgICBpZiAodGV4dHVyZURlc2Muc2FtcGxlQ291bnQgIT0gMSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgLy8gInZhbGlkYXRpbmcgdGV4dHVyZSBjb3B5IHJhbmdlKGRlc3RpbmF0
aW9uLCBzaXplKSByZXR1cm4gdHJ1ZS4iCiAgICAgaWYgKCFUZXh0dXJlOjp2YWxpZGF0ZVRleHR1
cmVDb3B5UmFuZ2UoZGVzdGluYXRpb24sIHNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAvLyAiZGVzdGluYXRpb24uYXNwZWN0IG11c3QgcmVmZXIgdG8gYSBzaW5nbGUgYXNwZWN0
IG9mIHRleHR1cmVEZXNjLmZvcm1hdC4iCiAgICAgaWYgKCFUZXh0dXJlOjpyZWZlcnNUb1Npbmds
ZUFzcGVjdCh0ZXh0dXJlRGVzYy5mb3JtYXQsIGRlc3RpbmF0aW9uLmFzcGVjdCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIC8vICJUaGF0IGFzcGVjdCBtdXN0IGJlIGEgdmFsaWQgaW1h
Z2UgY29weSBkZXN0aW5hdGlvbiBhY2NvcmRpbmcgdG8gwqfigK8yNS4xLjIgRGVwdGgtc3RlbmNp
bCBmb3JtYXRzLiIKICAgICBpZiAoIVRleHR1cmU6OmlzVmFsaWRJbWFnZUNvcHlEZXN0aW5hdGlv
bih0ZXh0dXJlRGVzYy5mb3JtYXQsIGRlc3RpbmF0aW9uLmFzcGVjdCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIC8vICJMZXQgYXNwZWN0U3BlY2lmaWNGb3JtYXQgPSB0ZXh0dXJlRGVz
Yy5mb3JtYXQuIgogICAgIGF1dG8gYXNwZWN0U3BlY2lmaWNGb3JtYXQgPSB0ZXh0dXJlRGVzYy5m
b3JtYXQ7CiAKLSAgICAvLyAiSWYgdGV4dHVyZURlc2MuZm9ybWF0IGlzIGEgZGVwdGgtb3Itc3Rl
bmNpbCBmb3JtYXQ6IgotICAgIGlmIChUZXh0dXJlOjppc0RlcHRoT3JTdGVuY2lsRm9ybWF0KHRl
eHR1cmVEZXNjLmZvcm1hdCkpIHsKLSAgICAgICAgLy8gIlNldCBhc3BlY3RTcGVjaWZpY0Zvcm1h
dCB0byB0aGUgYXNwZWN0LXNwZWNpZmljIGZvcm1hdCBvZiB0ZXh0dXJlRGVzYy5mb3JtYXQgYWNj
b3JkaW5nIHRvIMKn4oCvMjUuMS4yIERlcHRoLXN0ZW5jaWwgZm9ybWF0cy4iCisgICAgaWYgKFRl
eHR1cmU6OmlzRGVwdGhPclN0ZW5jaWxGb3JtYXQodGV4dHVyZURlc2MuZm9ybWF0KSkKICAgICAg
ICAgYXNwZWN0U3BlY2lmaWNGb3JtYXQgPSBUZXh0dXJlOjphc3BlY3RTcGVjaWZpY0Zvcm1hdCh0
ZXh0dXJlRGVzYy5mb3JtYXQsIGRlc3RpbmF0aW9uLmFzcGVjdCk7Ci0gICAgfQogCi0gICAgLy8g
InZhbGlkYXRpbmcgbGluZWFyIHRleHR1cmUgZGF0YShkYXRhTGF5b3V0LCBkYXRhQnl0ZVNpemUs
IGFzcGVjdFNwZWNpZmljRm9ybWF0LCBzaXplKSBzdWNjZWVkcy4iCiAgICAgaWYgKCFUZXh0dXJl
Ojp2YWxpZGF0ZUxpbmVhclRleHR1cmVEYXRhKGRhdGFMYXlvdXQsIGRhdGFCeXRlU2l6ZSwgYXNw
ZWN0U3BlY2lmaWNGb3JtYXQsIHNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI5
OCwyMyArMjU5LDE1IEBAIHZvaWQgUXVldWU6OndyaXRlVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VD
b3B5VGV4dHVyZSYgZGVzdGluYXRpb24sIGNvbnN0IHZvaWQqIGRhCiAKICAgICAvLyBodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1cXVldWUtd3JpdGV0ZXh0dXJlCiAKLSAg
ICAvLyAiTGV0IGRhdGFCeXRlcyBiZSBhIGNvcHkgb2YgdGhlIGJ5dGVzIGhlbGQgYnkgdGhlIGJ1
ZmZlciBzb3VyY2UgZGF0YS4iCi0gICAgLy8gIkxldCBkYXRhQnl0ZVNpemUgYmUgdGhlIG51bWJl
ciBvZiBieXRlcyBpbiBkYXRhQnl0ZXMuIgogICAgIGF1dG8gZGF0YUJ5dGVTaXplID0gZGF0YVNp
emU7CiAKLSAgICAvLyAiTGV0IHRleHR1cmVEZXNjIGJlIGRlc3RpbmF0aW9uLnRleHR1cmUuW1tk
ZXNjcmlwdG9yXV0uIgogICAgIGNvbnN0IGF1dG8mIHRleHR1cmVEZXNjID0gZnJvbUFQSShkZXN0
aW5hdGlvbi50ZXh0dXJlKS5kZXNjcmlwdG9yKCk7CiAKLSAgICAvLyAiTGV0IGNvbnRlbnRzIGJl
IHRoZSBjb250ZW50cyBvZiB0aGUgaW1hZ2VzIHNlZW4gYnkgdmlld2luZyBkYXRhQnl0ZXMgd2l0
aCBkYXRhTGF5b3V0IGFuZCBzaXplLiIKLQotICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRlV3JpdGVUZXh0
dXJlKGRlc3RpbmF0aW9uLCBkYXRhTGF5b3V0LCBzaXplLCBkYXRhQnl0ZVNpemUsIHRleHR1cmVE
ZXNjKSkgewotICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9w
LiIKICAgICAgICAgbV9kZXZpY2UuZ2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9u
IGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vICJXcml0ZSBj
b250ZW50cyBpbnRvIGRlc3RpbmF0aW9uLiIKICAgICBpZiAoIWRhdGFTaXplKQogICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVu
Y29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1tCmlu
ZGV4IDJmM2UxMTAxZmE2ZS4uZDg2ZmE5OWYxZjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1JlbmRlckJ1bmRsZUVuY29kZXIubW0KQEAgLTg3LDcgKzg3LDYgQEAgdm9pZCBSZW5kZXJCdW5k
bGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJikKIHsKICAgICAvLyBodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGVidWdjb21tYW5kc21peGluLWluc2Vy
dGRlYnVnbWFya2VyCiAKLSAgICAvLyAiUHJlcGFyZSB0aGUgZW5jb2RlciBzdGF0ZSBvZiB0aGlz
LiBJZiBpdCByZXR1cm5zIGZhbHNlLCBzdG9wLiIKICAgICBpZiAoIXByZXBhcmVUaGVFbmNvZGVy
U3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC05Niw3ICs5NSw2IEBAIHZvaWQgUmVuZGVy
QnVuZGxlRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIoU3RyaW5nJiYpCiAKIGJvb2wgUmVuZGVy
QnVuZGxlRW5jb2Rlcjo6dmFsaWRhdGVQb3BEZWJ1Z0dyb3VwKCkgY29uc3QKIHsKLSAgICAvLyAi
dGhpcy5bW2RlYnVnX2dyb3VwX3N0YWNrXV0gbXVzdCBub3QgYmUgZW1wdHkuIgogICAgIGlmICgh
bV9kZWJ1Z0dyb3VwU3RhY2tTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwNywx
NyArMTA1LDE0IEBAIHZvaWQgUmVuZGVyQnVuZGxlRW5jb2Rlcjo6cG9wRGVidWdHcm91cCgpCiB7
CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWRlYnVnY29t
bWFuZHNtaXhpbi1wb3BkZWJ1Z2dyb3VwCiAKLSAgICAvLyAiUHJlcGFyZSB0aGUgZW5jb2RlciBz
dGF0ZSBvZiB0aGlzLiBJZiBpdCByZXR1cm5zIGZhbHNlLCBzdG9wLiIKICAgICBpZiAoIXByZXBh
cmVUaGVFbmNvZGVyU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gIklmIGFueSBv
ZiB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50cyBhcmUgdW5tZXQiCiAgICAgaWYgKCF2YWxpZGF0
ZVBvcERlYnVnR3JvdXAoKSkgewogICAgICAgICAvLyBGSVhNRTogIm1ha2UgdGhpcyBpbnZhbGlk
LCBhbmQgc3RvcC4iCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyAiUG9wIGFuIGVu
dHJ5IG9mZiBvZiB0aGlzLltbZGVidWdfZ3JvdXBfc3RhY2tdXS4iCiAgICAgLS1tX2RlYnVnR3Jv
dXBTdGFja1NpemU7CiAgICAgLy8gTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVycyBkb24ndCBzdXBw
b3J0IGRlYnVnIGNvbW1hbmRzLgogfQpAQCAtMTI2LDExICsxMjEsOSBAQCB2b2lkIFJlbmRlckJ1
bmRsZUVuY29kZXI6OnB1c2hEZWJ1Z0dyb3VwKFN0cmluZyYmKQogewogICAgIC8vIGh0dHBzOi8v
Z3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVkZWJ1Z2NvbW1hbmRzbWl4aW4tcHVzaGRl
YnVnZ3JvdXAKIAotICAgIC8vICJQcmVwYXJlIHRoZSBlbmNvZGVyIHN0YXRlIG9mIHRoaXMuIElm
IGl0IHJldHVybnMgZmFsc2UsIHN0b3AuIgogICAgIGlmICghcHJlcGFyZVRoZUVuY29kZXJTdGF0
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyAiUHVzaCBncm91cExhYmVsIG9udG8gdGhp
cy5bW2RlYnVnX2dyb3VwX3N0YWNrXV0uIgogICAgICsrbV9kZWJ1Z0dyb3VwU3RhY2tTaXplOwog
ICAgIC8vIE1UTEluZGlyZWN0Q29tbWFuZEJ1ZmZlcnMgZG9uJ3Qgc3VwcG9ydCBkZWJ1ZyBjb21t
YW5kcy4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNv
ZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW0KaW5kZXgg
NzRmNjg1MzAwMTI1Li5mZDk0MDJhOWM2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1JlbmRlclBhc3NFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRl
clBhc3NFbmNvZGVyLm1tCkBAIC0xMDYsNyArMTA2LDYgQEAgdm9pZCBSZW5kZXJQYXNzRW5jb2Rl
cjo6aW5zZXJ0RGVidWdNYXJrZXIoU3RyaW5nJiYgbWFya2VyTGFiZWwpCiB7CiAgICAgLy8gaHR0
cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWRlYnVnY29tbWFuZHNtaXhpbi1p
bnNlcnRkZWJ1Z21hcmtlcgogCi0gICAgLy8gIlByZXBhcmUgdGhlIGVuY29kZXIgc3RhdGUgb2Yg
dGhpcy4gSWYgaXQgcmV0dXJucyBmYWxzZSwgc3RvcC4iCiAgICAgaWYgKCFwcmVwYXJlVGhlRW5j
b2RlclN0YXRlKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTE1LDcgKzExNCw2IEBAIHZvaWQg
UmVuZGVyUGFzc0VuY29kZXI6Omluc2VydERlYnVnTWFya2VyKFN0cmluZyYmIG1hcmtlckxhYmVs
KQogCiBib29sIFJlbmRlclBhc3NFbmNvZGVyOjp2YWxpZGF0ZVBvcERlYnVnR3JvdXAoKSBjb25z
dAogewotICAgIC8vICJ0aGlzLltbZGVidWdfZ3JvdXBfc3RhY2tdXSBtdXN0IG5vdCBiZSBlbXB0
eS4iCiAgICAgaWYgKCFtX2RlYnVnR3JvdXBTdGFja1NpemUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMTI2LDE3ICsxMjQsMTQgQEAgdm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6cG9wRGVi
dWdHcm91cCgpCiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9t
LWdwdWRlYnVnY29tbWFuZHNtaXhpbi1wb3BkZWJ1Z2dyb3VwCiAKLSAgICAvLyAiUHJlcGFyZSB0
aGUgZW5jb2RlciBzdGF0ZSBvZiB0aGlzLiBJZiBpdCByZXR1cm5zIGZhbHNlLCBzdG9wLiIKICAg
ICBpZiAoIXByZXBhcmVUaGVFbmNvZGVyU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Ly8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50cyBhcmUgdW5tZXQiCiAgICAg
aWYgKCF2YWxpZGF0ZVBvcERlYnVnR3JvdXAoKSkgewogICAgICAgICAvLyBGSVhNRTogIm1ha2Ug
dGhpcyBpbnZhbGlkLCBhbmQgc3RvcC4iCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAv
LyAiUG9wIGFuIGVudHJ5IG9mZiBvZiB0aGlzLltbZGVidWdfZ3JvdXBfc3RhY2tdXS4iCiAgICAg
LS1tX2RlYnVnR3JvdXBTdGFja1NpemU7CiAgICAgW21fcmVuZGVyQ29tbWFuZEVuY29kZXIgcG9w
RGVidWdHcm91cF07CiB9CkBAIC0xNDUsMTEgKzE0MCw5IEBAIHZvaWQgUmVuZGVyUGFzc0VuY29k
ZXI6OnB1c2hEZWJ1Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpCiB7CiAgICAgLy8gaHR0cHM6
Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWRlYnVnY29tbWFuZHNtaXhpbi1wdXNo
ZGVidWdncm91cAogCi0gICAgLy8gIlByZXBhcmUgdGhlIGVuY29kZXIgc3RhdGUgb2YgdGhpcy4g
SWYgaXQgcmV0dXJucyBmYWxzZSwgc3RvcC4iCiAgICAgaWYgKCFwcmVwYXJlVGhlRW5jb2RlclN0
YXRlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vICJQdXNoIGdyb3VwTGFiZWwgb250byB0
aGlzLltbZGVidWdfZ3JvdXBfc3RhY2tdXS4iCiAgICAgKyttX2RlYnVnR3JvdXBTdGFja1NpemU7
CiAgICAgW21fcmVuZGVyQ29tbWFuZEVuY29kZXIgcHVzaERlYnVnR3JvdXA6Z3JvdXBMYWJlbF07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLmggYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9TYW1wbGVyLmgKaW5kZXggYmVhNjA4ZDk5ZmI0Li4zNmEyODY0ZGI3Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9TYW1wbGVyLmgKQEAgLTUwLDkgKzUwLDcgQEAgcHVibGljOgogCiAgICAg
aWQ8TVRMU2FtcGxlclN0YXRlPiBzYW1wbGVyU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBs
ZXJTdGF0ZTsgfQogICAgIGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcigp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRvcjsgfQotICAgIC8vICJTZXQgcy5bW2lzQ29tcGFy
aXNvbl1dIHRvIGZhbHNlIGlmIHRoZSBjb21wYXJlIGF0dHJpYnV0ZSBvZiBzLltbZGVzY3JpcHRv
cl1dIGlzIG51bGwgb3IgdW5kZWZpbmVkLiBPdGhlcndpc2UsIHNldCBpdCB0byB0cnVlLiIKICAg
ICBib29sIGlzQ29tcGFyaXNvbigpIGNvbnN0IHsgcmV0dXJuIGRlc2NyaXB0b3IoKS5jb21wYXJl
ICE9IFdHUFVDb21wYXJlRnVuY3Rpb25fVW5kZWZpbmVkOyB9Ci0gICAgLy8gIlNldCBzLltbaXNG
aWx0ZXJpbmddXSB0byBmYWxzZSBpZiBub25lIG9mIG1pbkZpbHRlciwgbWFnRmlsdGVyLCBvciBt
aXBtYXBGaWx0ZXIgaGFzIHRoZSB2YWx1ZSBvZiAibGluZWFyIi4gT3RoZXJ3aXNlLCBzZXQgaXQg
dG8gdHJ1ZS4iCiAgICAgYm9vbCBpc0ZpbHRlcmluZygpIGNvbnN0IHsgcmV0dXJuIGRlc2NyaXB0
b3IoKS5taW5GaWx0ZXIgPT0gV0dQVUZpbHRlck1vZGVfTGluZWFyIHx8IGRlc2NyaXB0b3IoKS5t
YWdGaWx0ZXIgPT0gV0dQVUZpbHRlck1vZGVfTGluZWFyIHx8IGRlc2NyaXB0b3IoKS5taXBtYXBG
aWx0ZXIgPT0gV0dQVUZpbHRlck1vZGVfTGluZWFyOyB9CiAKIHByaXZhdGU6CkBAIC02MCw5ICs1
OCw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBpZDxNVExTYW1wbGVyU3RhdGU+IG1fc2FtcGxl
clN0YXRlIHsgbmlsIH07CiAKLSAgICBjb25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3IgbV9kZXNj
cmlwdG9yIHsgfTsgLy8gIlRoZSBHUFVTYW1wbGVyRGVzY3JpcHRvciB3aXRoIHdoaWNoIHRoZSBH
UFVTYW1wbGVyIHdhcyBjcmVhdGVkLiIKLSAgICAvLyAiW1tpc0NvbXBhcmlzb25dXSBvZiB0eXBl
IGJvb2xlYW4uIiBUaGlzIGlzIHVubmVjZXNzYXJ5OyBpdCdzIGltcGxlbWVudGVkIGluIGlzQ29t
cGFyaXNvbigpLgotICAgIC8vICJbW2lzRmlsdGVyaW5nXV0gb2YgdHlwZSBib29sZWFuLiIgVGhp
cyBpcyB1bm5lY2Vzc2FyeTsgaXQncyBpbXBsZW1lbnRlZCBpbiBpc0ZpbHRlcmluZygpLgorICAg
IGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciBtX2Rlc2NyaXB0b3IgeyB9OwogCiAgICAgY29u
c3QgUmVmPERldmljZT4gbV9kZXZpY2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvU2FtcGxlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0KaW5kZXgg
ZTU3ZmEyNjVkZDVkLi5jZWFjNmNlMzk3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1NhbXBsZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbQpAQCAt
MzgsMjEgKzM4LDE2IEBAIHN0YXRpYyBib29sIHZhbGlkYXRlQ3JlYXRlU2FtcGxlcihEZXZpY2Um
LCBjb25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3ImIGRlc2NyaXB0CiAKICAgICAvLyBGSVhNRTog
ImRldmljZSBpcyB2YWxpZC4iCiAKLSAgICAvLyAiZGVzY3JpcHRvci5sb2RNaW5DbGFtcCBpcyBn
cmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMC4iCiAgICAgaWYgKHN0ZDo6aXNuYW4oZGVzY3JpcHRv
ci5sb2RNaW5DbGFtcCkgfHwgZGVzY3JpcHRvci5sb2RNaW5DbGFtcCA8IDApCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIC8vICJkZXNjcmlwdG9yLmxvZE1heENsYW1wIGlzIGdyZWF0ZXIg
dGhhbiBvciBlcXVhbCB0byBkZXNjcmlwdG9yLmxvZE1pbkNsYW1wLiIKICAgICBpZiAoc3RkOjpp
c25hbihkZXNjcmlwdG9yLmxvZE1heENsYW1wKSB8fCBkZXNjcmlwdG9yLmxvZE1heENsYW1wIDwg
ZGVzY3JpcHRvci5sb2RNaW5DbGFtcCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8g
ImRlc2NyaXB0b3IubWF4QW5pc290cm9weSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS4i
CiAgICAgaWYgKGRlc2NyaXB0b3IubWF4QW5pc290cm9weSA8IDEpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIC8vICJXaGVuIGRlc2NyaXB0b3IubWF4QW5pc290cm9weSBpcyBncmVhdGVy
IHRoYW4gMSIKICAgICBpZiAoZGVzY3JpcHRvci5tYXhBbmlzb3Ryb3B5ID4gMSkgewotICAgICAg
ICAvLyAiZGVzY3JpcHRvci5tYWdGaWx0ZXIsIGRlc2NyaXB0b3IubWluRmlsdGVyLCBhbmQgZGVz
Y3JpcHRvci5taXBtYXBGaWx0ZXIgbXVzdCBiZSBlcXVhbCB0byAibGluZWFyIi4iCiAgICAgICAg
IGlmIChkZXNjcmlwdG9yLm1hZ0ZpbHRlciAhPSBXR1BVRmlsdGVyTW9kZV9MaW5lYXIKICAgICAg
ICAgICAgIHx8IGRlc2NyaXB0b3IubWluRmlsdGVyICE9IFdHUFVGaWx0ZXJNb2RlX0xpbmVhcgog
ICAgICAgICAgICAgfHwgZGVzY3JpcHRvci5taXBtYXBGaWx0ZXIgIT0gV0dQVUZpbHRlck1vZGVf
TGluZWFyKQpAQCAtMTM2LDEyICsxMzEsOSBAQCBSZWZQdHI8U2FtcGxlcj4gRGV2aWNlOjpjcmVh
dGVTYW1wbGVyKGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIAogICAg
IC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVkZXZpY2UtY3JlYXRl
c2FtcGxlcgogCi0gICAgLy8gIklmIHZhbGlkYXRpbmcgR1BVU2FtcGxlckRlc2NyaXB0b3IodGhp
cywgZGVzY3JpcHRvcikgcmV0dXJucyBmYWxzZToiCiAgICAgaWYgKCF2YWxpZGF0ZUNyZWF0ZVNh
bXBsZXIoKnRoaXMsIGRlc2NyaXB0b3IpKSB7Ci0gICAgICAgIC8vICJHZW5lcmF0ZSBhIHZhbGlk
YXRpb24gZXJyb3IuIgogICAgICAgICBnZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRp
b24gZmFpbHVyZS4iX3MpOwogCi0gICAgICAgIC8vICJDcmVhdGUgYSBuZXcgaW52YWxpZCBHUFVT
YW1wbGVyIGFuZCByZXR1cm4gdGhlIHJlc3VsdC4iCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIApAQCAtMTU3LDcgKzE0OSw2IEBAIFJlZlB0cjxTYW1wbGVyPiBEZXZpY2U6OmNyZWF0
ZVNhbXBsZXIoY29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogICAgIHNh
bXBsZXJEZXNjcmlwdG9yLmxvZE1heENsYW1wID0gZGVzY3JpcHRvci5sb2RNYXhDbGFtcDsKICAg
ICBzYW1wbGVyRGVzY3JpcHRvci5jb21wYXJlRnVuY3Rpb24gPSBjb21wYXJlRnVuY3Rpb24oZGVz
Y3JpcHRvci5jb21wYXJlKTsKIAotICAgIC8vICJUaGUgdXNlZCB2YWx1ZSBvZiBtYXhBbmlzb3Ry
b3B5IHdpbGwgYmUgY2xhbXBlZCB0byB0aGUgbWF4aW11bSB2YWx1ZSB0aGF0IHRoZSBwbGF0Zm9y
bSBzdXBwb3J0cy4iCiAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50
YXRpb24vbWV0YWwvbXRsc2FtcGxlcmRlc2NyaXB0b3IvMTUxNjE2NC1tYXhhbmlzb3Ryb3B5P2xh
bmd1YWdlPW9iamMKICAgICAvLyAiVmFsdWVzIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAxNiwgaW5j
bHVzaXZlLiIKICAgICBzYW1wbGVyRGVzY3JpcHRvci5tYXhBbmlzb3Ryb3B5ID0gc3RkOjptaW48
dWludDE2X3Q+KGRlc2NyaXB0b3IubWF4QW5pc290cm9weSwgMTYpOwpAQCAtMTY4LDEyICsxNTks
NiBAQCBSZWZQdHI8U2FtcGxlcj4gRGV2aWNlOjpjcmVhdGVTYW1wbGVyKGNvbnN0IFdHUFVTYW1w
bGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKICAgICBpZiAoIXNhbXBsZXJTdGF0ZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAvLyAiTGV0IHMgYmUgYSBuZXcgR1BVU2FtcGxlciBv
YmplY3QuIgotICAgIC8vICJTZXQgcy5bW2Rlc2NyaXB0b3JdXSB0byBkZXNjcmlwdG9yLiIKLSAg
ICAvLyAiU2V0IHMuW1tpc0NvbXBhcmlzb25dXSB0byBmYWxzZSBpZiB0aGUgY29tcGFyZSBhdHRy
aWJ1dGUgb2Ygcy5bW2Rlc2NyaXB0b3JdXSBpcyBudWxsIG9yIHVuZGVmaW5lZC4gT3RoZXJ3aXNl
LCBzZXQgaXQgdG8gdHJ1ZS4iCi0gICAgLy8gIlNldCBzLltbaXNGaWx0ZXJpbmddXSB0byBmYWxz
ZSBpZiBub25lIG9mIG1pbkZpbHRlciwgbWFnRmlsdGVyLCBvciBtaXBtYXBGaWx0ZXIgaGFzIHRo
ZSB2YWx1ZSBvZiAibGluZWFyIi4gT3RoZXJ3aXNlLCBzZXQgaXQgdG8gdHJ1ZS4iCi0gICAgLy8g
IlJldHVybiBzLiIKLQogICAgIHJldHVybiBTYW1wbGVyOjpjcmVhdGUoc2FtcGxlclN0YXRlLCBk
ZXNjcmlwdG9yLCAqdGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1RleHR1cmUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaAppbmRleCA0MDg1Y2I2
ZWM0ZjYuLjExNDUzMDhlOGFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4
dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaApAQCAtODUsNyArODUs
NyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgaWQ8TVRMVGV4dHVyZT4gbV90ZXh0dXJlIHsgbmls
IH07CiAKLSAgICBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3IgbV9kZXNjcmlwdG9yIHsgfTsg
Ly8gIlRoZSBHUFVUZXh0dXJlRGVzY3JpcHRvciBkZXNjcmliaW5nIHRoaXMgdGV4dHVyZS4iCisg
ICAgY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yIG1fZGVzY3JpcHRvciB7IH07CiAgICAgY29u
c3QgVmVjdG9yPFdHUFVUZXh0dXJlRm9ybWF0PiBtX3ZpZXdGb3JtYXRzOwogCiAgICAgY29uc3Qg
UmVmPERldmljZT4gbV9kZXZpY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9U
ZXh0dXJlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbQppbmRleCA3ZjEzYzVi
MTkxNzYuLjY5NmFlZTU2ZTQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4
dHVyZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCkBAIC0xNDcsNyAr
MTQ3LDYgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V0dQVUZlYXR1cmVOYW1lPiBmZWF0dXJlUmVx
dWlyZW1lbnRGb3JGb3JtYXQoV0dQVVRleHR1cmVGb3IKIHN0YXRpYyBib29sIGlzQ29tcHJlc3Nl
ZEZvcm1hdChXR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQpCiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3
ZWIuZ2l0aHViLmlvL2dwdXdlYi8jcGFja2VkLWZvcm1hdHMKLSAgICAvLyAiQSBjb21wcmVzc2Vk
IGZvcm1hdCBpcyBhbnkgZm9ybWF0IHdpdGggYSBibG9jayBzaXplIGdyZWF0ZXIgdGhhbiAxIMOX
IDEuIgogICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9C
QzFSR0JBVW5vcm06CiAgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzFSR0JBVW5vcm1Tcmdi
OgpAQCAtNDk1LDcgKzQ5NCw2IEBAIGJvb2wgVGV4dHVyZTo6Y29udGFpbnNTdGVuY2lsQXNwZWN0
KFdHUFVUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQpCiBib29sIFRleHR1cmU6OmlzRGVwdGhP
clN0ZW5jaWxGb3JtYXQoV0dQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQogewogICAgIC8vIGh0dHBz
Oi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RlcHRoLWZvcm1hdHMKLSAgICAvLyAiQSBkZXB0
aC1vci1zdGVuY2lsIGZvcm1hdCBpcyBhbnkgZm9ybWF0IHdpdGggZGVwdGggYW5kL29yIHN0ZW5j
aWwgYXNwZWN0cy4iCiAgICAgcmV0dXJuIGNvbnRhaW5zRGVwdGhBc3BlY3QoZm9ybWF0KSB8fCBj
b250YWluc1N0ZW5jaWxBc3BlY3QoZm9ybWF0KTsKIH0KIApAQCAtNTYzLDcgKzU2MSw2IEBAIHVp
bnQzMl90IFRleHR1cmU6OnRleGVsQmxvY2tXaWR0aChXR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQp
CiAgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybToKICAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMlVub3JtU3JnYjoKICAgICAgICAgcmV0dXJuIDEyOwot
ICAgIC8vICJGb3IgcGl4ZWwtYmFzZWQgR1BVVGV4dHVyZUZvcm1hdHMsIHRoZSB0ZXhlbCBibG9j
ayB3aWR0aCBhbmQgdGV4ZWwgYmxvY2sgaGVpZ2h0IGFyZSBhbHdheXMgMS4iCiAgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9SOFVub3JtOgogICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhT
bm9ybToKICAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4VWludDoKQEAgLTY4NCw3ICs2ODEs
NiBAQCB1aW50MzJfdCBUZXh0dXJlOjp0ZXhlbEJsb2NrSGVpZ2h0KFdHUFVUZXh0dXJlRm9ybWF0
IGZvcm1hdCkKICAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMlVub3JtOgogICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5vcm1TcmdiOgogICAgICAgICByZXR1
cm4gMTI7Ci0gICAgLy8gIkZvciBwaXhlbC1iYXNlZCBHUFVUZXh0dXJlRm9ybWF0cywgdGhlIHRl
eGVsIGJsb2NrIHdpZHRoIGFuZCB0ZXhlbCBibG9jayBoZWlnaHQgYXJlIGFsd2F5cyAxLiIKICAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4VW5vcm06CiAgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9SOFNub3JtOgogICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhVaW50OgpAQCAtNzM5
LDggKzczNSw2IEBAIHVpbnQzMl90IFRleHR1cmU6OnRleGVsQmxvY2tIZWlnaHQoV0dQVVRleHR1
cmVGb3JtYXQgZm9ybWF0KQogc3RhdGljIGJvb2wgaXNSZW5kZXJhYmxlRm9ybWF0KFdHUFVUZXh0
dXJlRm9ybWF0IGZvcm1hdCkKIHsKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1
d2ViLyNyZW5kZXJhYmxlLWZvcm1hdAotICAgIC8vICJJZiBhIGZvcm1hdCBpcyBsaXN0ZWQgaW4g
wqfigK8yNS4xLjEgUGxhaW4gY29sb3IgZm9ybWF0cyB3aXRoIFJFTkRFUl9BVFRBQ0hNRU5UIGNh
cGFiaWxpdHksIGl0IGlzIGEgY29sb3IgcmVuZGVyYWJsZSBmb3JtYXQuIEFueSBvdGhlciBmb3Jt
YXQgaXMgbm90IGEgY29sb3IgcmVuZGVyYWJsZSBmb3JtYXQuIEFsbCBkZXB0aC1vci1zdGVuY2ls
IGZvcm1hdHMgYXJlIHJlbmRlcmFibGUuIgotICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5p
by9ncHV3ZWIvI3BsYWluLWNvbG9yLWZvcm1hdHMKICAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhVbm9ybToKICAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X1I4VWludDoKQEAgLTg3OSw3ICs4NzMsNiBAQCBzdGF0aWMgYm9vbCBzdXBwb3J0c011bHRp
c2FtcGxpbmcoV0dQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQogICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfUkdCQTE2U2ludDoKICAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkExNkZsb2F0
OgogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RlcHRoLWZvcm1hdHMK
LSAgICAvLyAiQWxsIG9mIHRoZXNlIGZvcm1hdHMgc3VwcG9ydCBtdWx0aXNhbXBsaW5nLiIKICAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1N0ZW5jaWw4OgogICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfRGVwdGgxNlVub3JtOgogICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFBs
dXM6CkBAIC05NjAsMjAgKzk1MywxNSBAQCBzdGF0aWMgdWludDMyX3QgbWF4aW11bU1pcGxldmVs
Q291bnQoV0dQVVRleHR1cmVEaW1lbnNpb24gZGltZW5zaW9uLCBXR1BVRXh0ZW50MwogewogICAg
IC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2Fic3RyYWN0LW9wZGVmLW1heGlt
dW0tbWlwbGV2ZWwtY291bnQKIAotICAgIC8vICJDYWxjdWxhdGUgdGhlIG1heCBkaW1lbnNpb24g
dmFsdWUgbToiCiAgICAgdWludDMyX3QgbSA9IDA7CiAKLSAgICAvLyAiSWYgZGltZW5zaW9uIGlz
OiIKICAgICBzd2l0Y2ggKGRpbWVuc2lvbikgewogICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNp
b25fMUQ6Ci0gICAgICAgIC8vICJSZXR1cm4gMS4iCiAgICAgICAgIHJldHVybiAxOwogICAgIGNh
c2UgV0dQVVRleHR1cmVEaW1lbnNpb25fMkQ6Ci0gICAgICAgIC8vICJMZXQgbSA9IG1heChzaXpl
LndpZHRoLCBzaXplLmhlaWdodCkuIgogICAgICAgICBtID0gc3RkOjptYXgoc2l6ZS53aWR0aCwg
c2l6ZS5oZWlnaHQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5z
aW9uXzNEOgotICAgICAgICAvLyAiTGV0IG0gPSBtYXgobWF4KHNpemUud2lkdGgsIHNpemUuaGVp
Z2h0KSwgc2l6ZS5kZXB0aE9yQXJyYXlMYXllcikuIgogICAgICAgICBtID0gc3RkOjptYXgoc3Rk
OjptYXgoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpLCBzaXplLmRlcHRoT3JBcnJheUxheWVycyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fRm9yY2UzMjoK
QEAgLTk4MSw3ICs5NjksNiBAQCBzdGF0aWMgdWludDMyX3QgbWF4aW11bU1pcGxldmVsQ291bnQo
V0dQVVRleHR1cmVEaW1lbnNpb24gZGltZW5zaW9uLCBXR1BVRXh0ZW50MwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICAvLyAiUmV0dXJuIGZsb29yKGxvZzIobSkpICsgMS4iCiAgICAg
YXV0byBpc1Bvd2VyT2YyID0gIShtICYgKG0gLSAxKSk7CiAgICAgaWYgKGlzUG93ZXJPZjIpCiAg
ICAgICAgIHJldHVybiBXVEY6OmZhc3RMb2cyKG0pICsgMTsKQEAgLTEyNTAsNDAgKzEyMzcsMzEg
QEAgYm9vbCBEZXZpY2U6OnZhbGlkYXRlQ3JlYXRlVGV4dHVyZShjb25zdCBXR1BVVGV4dHVyZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIGNvbnMKIHsKICAgICAvLyBGSVhNRTogInRoaXMgbXVzdCBi
ZSBhIHZhbGlkIEdQVURldmljZS4iCiAKLSAgICAvLyAiZGVzY3JpcHRvci51c2FnZSBtdXN0IG5v
dCBiZSAwLiIKICAgICBpZiAoIWRlc2NyaXB0b3IudXNhZ2UpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIC8vICJkZXNjcmlwdG9yLnNpemUud2lkdGgsIGRlc2NyaXB0b3Iuc2l6ZS5oZWln
aHQsIGFuZCBkZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzIG11c3QgYmUgZ3JlYXRl
ciB0aGFuIHplcm8uIgogICAgIGlmICghZGVzY3JpcHRvci5zaXplLndpZHRoIHx8ICFkZXNjcmlw
dG9yLnNpemUuaGVpZ2h0IHx8ICFkZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAiZGVzY3JpcHRvci5taXBMZXZlbENvdW50
IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIgogICAgIGlmICghZGVzY3JpcHRvci5taXBMZXZl
bENvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAiZGVzY3JpcHRvci5zYW1w
bGVDb3VudCBtdXN0IGJlIGVpdGhlciAxIG9yIDQuIgogICAgIGlmIChkZXNjcmlwdG9yLnNhbXBs
ZUNvdW50ICE9IDEgJiYgZGVzY3JpcHRvci5zYW1wbGVDb3VudCAhPSA0KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAvLyAiSWYgZGVzY3JpcHRvci5kaW1lbnNpb24gaXM6IgogICAgIHN3
aXRjaCAoZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5z
aW9uXzFEOgogICAgICAgICAvLyBGSVhNRTogImRlc2NyaXB0b3Iuc2l6ZS53aWR0aCBtdXN0IGJl
IGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGlzLmxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMUQu
IgogCi0gICAgICAgIC8vICJkZXNjcmlwdG9yLnNpemUuaGVpZ2h0IG11c3QgYmUgMS4iCiAgICAg
ICAgIGlmIChkZXNjcmlwdG9yLnNpemUuaGVpZ2h0ICE9IDEpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgLy8gImRlc2NyaXB0b3Iuc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMg
bXVzdCBiZSAxLiIKICAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aE9yQXJyYXlMYXll
cnMgIT0gMSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyAiZGVzY3Jp
cHRvci5zYW1wbGVDb3VudCBtdXN0IGJlIDEuIgogICAgICAgICBpZiAoZGVzY3JpcHRvci5zYW1w
bGVDb3VudCAhPSAxKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIC8vICJk
ZXNjcmlwdG9yLmZvcm1hdCBtdXN0IG5vdCBiZSBhIGNvbXByZXNzZWQgZm9ybWF0IG9yIGRlcHRo
LW9yLXN0ZW5jaWwgZm9ybWF0LiIKICAgICAgICAgaWYgKGlzQ29tcHJlc3NlZEZvcm1hdChkZXNj
cmlwdG9yLmZvcm1hdCkgfHwgVGV4dHVyZTo6aXNEZXB0aE9yU3RlbmNpbEZvcm1hdChkZXNjcmlw
dG9yLmZvcm1hdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwpA
QCAtMTMwMSwxMSArMTI3OSw5IEBAIGJvb2wgRGV2aWNlOjp2YWxpZGF0ZUNyZWF0ZVRleHR1cmUo
Y29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zCiAKICAgICAgICAg
Ly8gRklYTUU6ICJkZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzIG11c3QgYmUgbGVz
cyB0aGFuIG9yIGVxdWFsIHRvIHRoaXMubGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRC4iCiAK
LSAgICAgICAgLy8gImRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgbXVzdCBiZSAxLiIKICAgICAgICAg
aWYgKGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgIT0gMSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgICAgICAvLyAiZGVzY3JpcHRvci5mb3JtYXQgbXVzdCBub3QgYmUgYSBjb21wcmVz
c2VkIGZvcm1hdCBvciBkZXB0aC1vci1zdGVuY2lsIGZvcm1hdC4iCiAgICAgICAgIGlmIChpc0Nv
bXByZXNzZWRGb3JtYXQoZGVzY3JpcHRvci5mb3JtYXQpIHx8IFRleHR1cmU6OmlzRGVwdGhPclN0
ZW5jaWxGb3JtYXQoZGVzY3JpcHRvci5mb3JtYXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBicmVhazsKQEAgLTEzMTQsNjQgKzEyOTAsNDYgQEAgYm9vbCBEZXZpY2U6OnZh
bGlkYXRlQ3JlYXRlVGV4dHVyZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGNvbnMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vICJkZXNjcmlw
dG9yLnNpemUud2lkdGggbXVzdCBiZSBtdWx0aXBsZSBvZiB0ZXhlbCBibG9jayB3aWR0aC4iCiAg
ICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCAlIFRleHR1cmU6OnRleGVsQmxvY2tXaWR0aChk
ZXNjcmlwdG9yLmZvcm1hdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJkZXNj
cmlwdG9yLnNpemUuaGVpZ2h0IG11c3QgYmUgbXVsdGlwbGUgb2YgdGV4ZWwgYmxvY2sgaGVpZ2h0
LiIKICAgICBpZiAoZGVzY3JpcHRvci5zaXplLmhlaWdodCAlIFRleHR1cmU6OnRleGVsQmxvY2tI
ZWlnaHQoZGVzY3JpcHRvci5mb3JtYXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAv
LyAiSWYgZGVzY3JpcHRvci5zYW1wbGVDb3VudCA+IDE6IgogICAgIGlmIChkZXNjcmlwdG9yLnNh
bXBsZUNvdW50ID4gMSkgewotICAgICAgICAvLyAiZGVzY3JpcHRvci5taXBMZXZlbENvdW50IG11
c3QgYmUgMS4iCiAgICAgICAgIGlmIChkZXNjcmlwdG9yLm1pcExldmVsQ291bnQgIT0gMSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyAiZGVzY3JpcHRvci5zaXplLmRl
cHRoT3JBcnJheUxheWVycyBtdXN0IGJlIDEuIgogICAgICAgICBpZiAoZGVzY3JpcHRvci5zaXpl
LmRlcHRoT3JBcnJheUxheWVycyAhPSAxKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgIC8vICJkZXNjcmlwdG9yLnVzYWdlIG11c3Qgbm90IGluY2x1ZGUgdGhlIFNUT1JBR0Vf
QklORElORyBiaXQuIgogICAgICAgICBpZiAoZGVzY3JpcHRvci51c2FnZSAmIFdHUFVUZXh0dXJl
VXNhZ2VfU3RvcmFnZUJpbmRpbmcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgLy8gImRlc2NyaXB0b3IuZm9ybWF0IG11c3QgYmUgYSByZW5kZXJhYmxlIGZvcm1hdCIKICAg
ICAgICAgaWYgKCFpc1JlbmRlcmFibGVGb3JtYXQoZGVzY3JpcHRvci5mb3JtYXQpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIC8vICJhbmQgc3VwcG9ydCBtdWx0aXNhbXBs
aW5nIGFjY29yZGluZyB0byDCp+KArzI1LjEgVGV4dHVyZSBGb3JtYXQgQ2FwYWJpbGl0aWVzLiIK
ICAgICAgICAgaWYgKCFzdXBwb3J0c011bHRpc2FtcGxpbmcoZGVzY3JpcHRvci5mb3JtYXQpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vICJkZXNjcmlwdG9yLm1p
cExldmVsQ291bnQgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gbWF4aW11bSBtaXBMZXZl
bCBjb3VudChkZXNjcmlwdG9yLmRpbWVuc2lvbiwgZGVzY3JpcHRvci5zaXplKS4iCiAgICAgaWYg
KGRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCA+IG1heGltdW1NaXBsZXZlbENvdW50KGRlc2NyaXB0
b3IuZGltZW5zaW9uLCBkZXNjcmlwdG9yLnNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAvLyAiZGVzY3JpcHRvci51c2FnZSBtdXN0IGJlIGEgY29tYmluYXRpb24gb2YgR1BVVGV4
dHVyZVVzYWdlIHZhbHVlcy4iCi0KLSAgICAvLyAiSWYgZGVzY3JpcHRvci51c2FnZSBpbmNsdWRl
cyB0aGUgUkVOREVSX0FUVEFDSE1FTlQgYml0OiIKICAgICBpZiAoZGVzY3JpcHRvci51c2FnZSAm
IFdHUFVUZXh0dXJlVXNhZ2VfUmVuZGVyQXR0YWNobWVudCkgewotICAgICAgICAvLyAiZGVzY3Jp
cHRvci5mb3JtYXQgbXVzdCBiZSBhIHJlbmRlcmFibGUgZm9ybWF0LiIKICAgICAgICAgaWYgKCFp
c1JlbmRlcmFibGVGb3JtYXQoZGVzY3JpcHRvci5mb3JtYXQpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgIC8vICJkZXNjcmlwdG9yLmRpbWVuc2lvbiBtdXN0IGJlICIyZCIu
IgogICAgICAgICBpZiAoZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1cmVEaW1lbnNp
b25fMkQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gIklmIGRl
c2NyaXB0b3IudXNhZ2UgaW5jbHVkZXMgdGhlIFNUT1JBR0VfQklORElORyBiaXQ6IgogICAgIGlm
IChkZXNjcmlwdG9yLnVzYWdlICYgV0dQVVRleHR1cmVVc2FnZV9TdG9yYWdlQmluZGluZykgewot
ICAgICAgICAvLyAiZGVzY3JpcHRvci5mb3JtYXQgbXVzdCBiZSBsaXN0ZWQgaW4gwqfigK8yNS4x
LjEgUGxhaW4gY29sb3IgZm9ybWF0cyB0YWJsZSB3aXRoIFNUT1JBR0VfQklORElORyBjYXBhYmls
aXR5LiIKICAgICAgICAgaWYgKCFoYXNTdG9yYWdlQmluZGluZ0NhcGFiaWxpdHkoZGVzY3JpcHRv
ci5mb3JtYXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vICJG
b3IgZWFjaCB2aWV3Rm9ybWF0IGluIGRlc2NyaXB0b3Iudmlld0Zvcm1hdHMiCiAgICAgZm9yIChh
dXRvIHZpZXdGb3JtYXQgOiB2aWV3Rm9ybWF0cykgewotICAgICAgICAvLyAiZGVzY3JpcHRvci5m
b3JtYXQgYW5kIHZpZXdGb3JtYXQgbXVzdCBiZSB0ZXh0dXJlIHZpZXcgZm9ybWF0IGNvbXBhdGli
bGUuIgogICAgICAgICBpZiAoIXRleHR1cmVWaWV3Rm9ybWF0Q29tcGF0aWJsZShkZXNjcmlwdG9y
LmZvcm1hdCwgdmlld0Zvcm1hdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpA
QCAtMjAyOSwxNSArMTk4NywxMiBAQCBSZWZQdHI8VGV4dHVyZT4gRGV2aWNlOjpjcmVhdGVUZXh0
dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIAogICAgIC8vIGh0
dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVkZXZpY2UtY3JlYXRldGV4dHVy
ZQogCi0gICAgLy8gIklmIGRlc2NyaXB0b3IuZm9ybWF0IGlzIGEgR1BVVGV4dHVyZUZvcm1hdCB0
aGF0IHJlcXVpcmVzIGEgZmVhdHVyZSAoc2VlIMKn4oCvMjUuMSBUZXh0dXJlIEZvcm1hdCBDYXBh
YmlsaXRpZXMpCiAgICAgaWYgKGZlYXR1cmVSZXF1aXJlbWVudEZvckZvcm1hdChkZXNjcmlwdG9y
LmZvcm1hdCkpIHsKICAgICAgICAgLy8gRklYTUU6ICJidXQgdGhpcy5bW2RldmljZV1dLltbZmVh
dHVyZXNdXSBkb2VzIG5vdCBjb250YWluIHRoZSBmZWF0dXJlLCB0aHJvdyBhIFR5cGVFcnJvci4i
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIC8vICJJZiBhbnkgb2YgdGhl
IGZvbGxvd2luZyByZXF1aXJlbWVudHMgYXJlIHVubWV0OiIKICAgICBpZiAoIXZhbGlkYXRlQ3Jl
YXRlVGV4dHVyZShkZXNjcmlwdG9yLCB2aWV3Rm9ybWF0cykpIHsKLSAgICAgICAgLy8gIkdlbmVy
YXRlIGEgdmFsaWRhdGlvbiBlcnJvci4iCiAgICAgICAgIGdlbmVyYXRlQVZhbGlkYXRpb25FcnJv
cigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIC8vIEZJWE1FOiAiUmV0dXJuIGEg
bmV3IGludmFsaWQgR1BVVGV4dHVyZS4iCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjEw
NCwxMCArMjA1OSw2IEBAIFJlZlB0cjxUZXh0dXJlPiBEZXZpY2U6OmNyZWF0ZVRleHR1cmUoY29u
c3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogCiAgICAgdGV4dHVyZS5sYWJl
bCA9IGZyb21BUEkoZGVzY3JpcHRvci5sYWJlbCk7CiAKLSAgICAvLyAiTGV0IHQgYmUgYSBuZXcg
R1BVVGV4dHVyZSBvYmplY3QuIgotICAgIC8vICJTZXQgdC5bW2Rlc2NyaXB0b3JdXSB0byBkZXNj
cmlwdG9yLiIKLSAgICAvLyAiUmV0dXJuIHQuIgotCiAgICAgcmV0dXJuIFRleHR1cmU6OmNyZWF0
ZSh0ZXh0dXJlLCBkZXNjcmlwdG9yLCBXVEZNb3ZlKHZpZXdGb3JtYXRzKSwgKnRoaXMpOwogfQog
CkBAIC0yMTI1LDM2ICsyMDc2LDI1IEBAIFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IgVGV4dHVy
ZTo6cmVzb2x2ZVRleHR1cmVWaWV3RGVzY3JpcHRvckRlZmF1bHRzKGNvbnN0IFdHCiB7CiAgICAg
Ly8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jYWJzdHJhY3Qtb3BkZWYtcmVzb2x2
aW5nLWdwdXRleHR1cmV2aWV3ZGVzY3JpcHRvci1kZWZhdWx0cwogCi0gICAgLy8gIkxldCByZXNv
bHZlZCBiZSBhIGNvcHkgb2YgZGVzY3JpcHRvci4iCiAgICAgV0dQVVRleHR1cmVWaWV3RGVzY3Jp
cHRvciByZXNvbHZlZCA9IGRlc2NyaXB0b3I7CiAKLSAgICAvLyAiSWYgcmVzb2x2ZWQuZm9ybWF0
IGlzIHVuZGVmaW5lZCIKLSAgICBpZiAocmVzb2x2ZWQuZm9ybWF0ID09IFdHUFVUZXh0dXJlRm9y
bWF0X1VuZGVmaW5lZCkgewotICAgICAgICAvLyAic2V0IHJlc29sdmVkLmZvcm1hdCB0byB0ZXh0
dXJlLltbZGVzY3JpcHRvcl1dLmZvcm1hdC4iCisgICAgaWYgKHJlc29sdmVkLmZvcm1hdCA9PSBX
R1BVVGV4dHVyZUZvcm1hdF9VbmRlZmluZWQpCiAgICAgICAgIHJlc29sdmVkLmZvcm1hdCA9IG1f
ZGVzY3JpcHRvci5mb3JtYXQ7Ci0gICAgfQogCi0gICAgLy8gIklmIHJlc29sdmVkLm1pcExldmVs
Q291bnQgaXMgdW5kZWZpbmVkIgogICAgIGlmIChyZXNvbHZlZC5taXBMZXZlbENvdW50ID09IFdH
UFVfTUlQX0xFVkVMX0NPVU5UX1VOREVGSU5FRCkgewotICAgICAgICAvLyAic2V0IHJlc29sdmVk
Lm1pcExldmVsQ291bnQgdG8gdGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS5taXBMZXZlbENvdW50IOKI
kiByZXNvbHZlZC5iYXNlTWlwTGV2ZWwuIgogICAgICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQg
YXJpdGhtZXRpYy4KICAgICAgICAgcmVzb2x2ZWQubWlwTGV2ZWxDb3VudCA9IG1fZGVzY3JpcHRv
ci5taXBMZXZlbENvdW50IC0gcmVzb2x2ZWQuYmFzZU1pcExldmVsOwogICAgIH0KIAotICAgIC8v
ICJJZiByZXNvbHZlZC5kaW1lbnNpb24gaXMgdW5kZWZpbmVkIgogICAgIGlmIChyZXNvbHZlZC5k
aW1lbnNpb24gPT0gV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX1VuZGVmaW5lZCkgewotICAgICAg
ICAvLyAiYW5kIHRleHR1cmUuW1tkZXNjcmlwdG9yXV0uZGltZW5zaW9uIGlzOiIKICAgICAgICAg
c3dpdGNoIChtX2Rlc2NyaXB0b3IuZGltZW5zaW9uKSB7CiAgICAgICAgIGNhc2UgV0dQVVRleHR1
cmVEaW1lbnNpb25fMUQ6Ci0gICAgICAgICAgICAvLyAiU2V0IHJlc29sdmVkLmRpbWVuc2lvbiB0
byAiMWQiLiIKICAgICAgICAgICAgIHJlc29sdmVkLmRpbWVuc2lvbiA9IFdHUFVUZXh0dXJlVmll
d0RpbWVuc2lvbl8xRDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdHUFVUZXh0
dXJlRGltZW5zaW9uXzJEOgotICAgICAgICAgICAgLy8gIlNldCByZXNvbHZlZC5kaW1lbnNpb24g
dG8gIjJkIi4iCiAgICAgICAgICAgICByZXNvbHZlZC5kaW1lbnNpb24gPSBXR1BVVGV4dHVyZVZp
ZXdEaW1lbnNpb25fMkQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVVGV4
dHVyZURpbWVuc2lvbl8zRDoKLSAgICAgICAgICAgIC8vICJTZXQgcmVzb2x2ZWQuZGltZW5zaW9u
IHRvICIzZCIuIgogICAgICAgICAgICAgcmVzb2x2ZWQuZGltZW5zaW9uID0gV0dQVVRleHR1cmVW
aWV3RGltZW5zaW9uXzNEOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVVRl
eHR1cmVEaW1lbnNpb25fRm9yY2UzMjoKQEAgLTIxNjMsMjYgKzIxMDMsMjAgQEAgV0dQVVRleHR1
cmVWaWV3RGVzY3JpcHRvciBUZXh0dXJlOjpyZXNvbHZlVGV4dHVyZVZpZXdEZXNjcmlwdG9yRGVm
YXVsdHMoY29uc3QgV0cKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vICJJZiByZXNvbHZlZC5h
cnJheUxheWVyQ291bnQgaXMgdW5kZWZpbmVkIgogICAgIGlmIChyZXNvbHZlZC5hcnJheUxheWVy
Q291bnQgPT0gV0dQVV9BUlJBWV9MQVlFUl9DT1VOVF9VTkRFRklORUQpIHsKLSAgICAgICAgLy8g
ImFuZCByZXNvbHZlZC5kaW1lbnNpb24gaXM6IgogICAgICAgICBzd2l0Y2ggKHJlc29sdmVkLmRp
bWVuc2lvbikgewogICAgICAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9VbmRlZmlu
ZWQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVy
biByZXNvbHZlZDsKICAgICAgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fMUQ6CiAg
ICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzJEOgogICAgICAgICBjYXNlIFdH
UFVUZXh0dXJlVmlld0RpbWVuc2lvbl8zRDoKLSAgICAgICAgICAgIC8vICJTZXQgcmVzb2x2ZWQu
YXJyYXlMYXllckNvdW50IHRvIDEuIgogICAgICAgICAgICAgcmVzb2x2ZWQuYXJyYXlMYXllckNv
dW50ID0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdHUFVUZXh0dXJlVmll
d0RpbWVuc2lvbl9DdWJlOgotICAgICAgICAgICAgLy8gIlNldCByZXNvbHZlZC5hcnJheUxheWVy
Q291bnQgdG8gNi4iCiAgICAgICAgICAgICByZXNvbHZlZC5hcnJheUxheWVyQ291bnQgPSA2Owog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9u
XzJEQXJyYXk6CiAgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0N1YmVBcnJh
eToKLSAgICAgICAgICAgIC8vICJTZXQgcmVzb2x2ZWQuYXJyYXlMYXllckNvdW50IHRvIHRleHR1
cmUuW1tkZXNjcmlwdG9yXV0uc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMg4oiSIGJhc2VBcnJheUxh
eWVyLiIKICAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljCiAgICAg
ICAgICAgICByZXNvbHZlZC5hcnJheUxheWVyQ291bnQgPSBtX2Rlc2NyaXB0b3Iuc2l6ZS5kZXB0
aE9yQXJyYXlMYXllcnMgLSByZXNvbHZlZC5iYXNlQXJyYXlMYXllcjsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMjE5Miw3ICsyMTI2LDYgQEAgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciBUZXh0
dXJlOjpyZXNvbHZlVGV4dHVyZVZpZXdEZXNjcmlwdG9yRGVmYXVsdHMoY29uc3QgV0cKICAgICAg
ICAgfQogICAgIH0KIAotICAgIC8vICJSZXR1cm4gcmVzb2x2ZWQuIgogICAgIHJldHVybiByZXNv
bHZlZDsKIH0KIApAQCAtMjIwMCwxNiArMjEzMywxMiBAQCB1aW50MzJfdCBUZXh0dXJlOjphcnJh
eUxheWVyQ291bnQoKSBjb25zdAogewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIvI2Fic3RyYWN0LW9wZGVmLWFycmF5LWxheWVyLWNvdW50CiAKLSAgICAvLyAiSWYgdGV4
dHVyZS5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gaXM6IgogICAgIHN3aXRjaCAobV9kZXNjcmlw
dG9yLmRpbWVuc2lvbikgewogICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fMUQ6Ci0gICAg
ICAgIC8vICJSZXR1cm4gMS4iCiAgICAgICAgIHJldHVybiAxOwogICAgIGNhc2UgV0dQVVRleHR1
cmVEaW1lbnNpb25fMkQ6Ci0gICAgICAgIC8vICJSZXR1cm4gdGV4dHVyZS5bW2Rlc2NyaXB0b3Jd
XS5zaXplLmRlcHRoT3JBcnJheUxheWVycy4iCiAgICAgICAgIHJldHVybiBtX2Rlc2NyaXB0b3Iu
c2l6ZS5kZXB0aE9yQXJyYXlMYXllcnM7CiAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8z
RDoKLSAgICAgICAgLy8gIlJldHVybiAxLiIKICAgICAgICAgcmV0dXJuIDE7CiAgICAgY2FzZSBX
R1BVVGV4dHVyZURpbWVuc2lvbl9Gb3JjZTMyOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTIyMjEsMTcgKzIxNTAsMTQgQEAgYm9vbCBUZXh0dXJlOjp2YWxpZGF0ZUNyZWF0ZVZp
ZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY28KIHsKICAg
ICAvLyBGSVhNRTogInRoaXMgaXMgdmFsaWQiCiAKLSAgICAvLyAiSWYgdGhlIGRlc2NyaXB0b3Iu
YXNwZWN0IGlzIgogICAgIHN3aXRjaCAoZGVzY3JpcHRvci5hc3BlY3QpIHsKICAgICBjYXNlIFdH
UFVUZXh0dXJlQXNwZWN0X0FsbDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXR1BVVGV4dHVy
ZUFzcGVjdF9TdGVuY2lsT25seToKLSAgICAgICAgLy8gInRoaXMuW1tkZXNjcmlwdG9yXV0uZm9y
bWF0IG11c3QgYmUgYSBkZXB0aC1vci1zdGVuY2lsIGZvcm1hdCB3aGljaCBoYXMgYSBzdGVuY2ls
IGFzcGVjdC4iCiAgICAgICAgIGlmICghY29udGFpbnNTdGVuY2lsQXNwZWN0KG1fZGVzY3JpcHRv
ci5mb3JtYXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFdHUFVUZXh0dXJlQXNwZWN0X0RlcHRoT25seToKLSAgICAgICAgLy8gInRoaXMuW1tk
ZXNjcmlwdG9yXV0uZm9ybWF0IG11c3QgYmUgYSBkZXB0aC1vci1zdGVuY2lsIGZvcm1hdCB3aGlj
aCBoYXMgYSBkZXB0aCBhc3BlY3QuIgogICAgICAgICBpZiAoIWNvbnRhaW5zRGVwdGhBc3BlY3Qo
bV9kZXNjcmlwdG9yLmZvcm1hdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGJyZWFrOwpAQCAtMjI0MCwyMCArMjE2NiwxNiBAQCBib29sIFRleHR1cmU6OnZhbGlkYXRlQ3Jl
YXRlVmlldyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjbwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gImRlc2NyaXB0b3IubWlwTGV2
ZWxDb3VudCBtdXN0IGJlID4gMC4iCiAgICAgaWYgKCFkZXNjcmlwdG9yLm1pcExldmVsQ291bnQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJkZXNjcmlwdG9yLmJhc2VNaXBMZXZl
bCArIGRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCBtdXN0IGJlIOKJpCB0aGlzLltbZGVzY3JpcHRv
cl1dLm1pcExldmVsQ291bnQuIgogICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGlj
LgogICAgIGlmIChkZXNjcmlwdG9yLmJhc2VNaXBMZXZlbCArIGRlc2NyaXB0b3IubWlwTGV2ZWxD
b3VudCA+IG1fZGVzY3JpcHRvci5taXBMZXZlbENvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAvLyAiZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgbXVzdCBiZSA+IDAuIgogICAg
IGlmICghZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIC8vICJkZXNjcmlwdG9yLmJhc2VBcnJheUxheWVyICsgZGVzY3JpcHRvci5hcnJheUxh
eWVyQ291bnQgbXVzdCBiZSDiiaQgdGhlIGFycmF5IGxheWVyIGNvdW50IG9mIHRoaXMuIgogICAg
IC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgogICAgIGlmIChkZXNjcmlwdG9yLmJh
c2VBcnJheUxheWVyICsgZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgPiBhcnJheUxheWVyQ291
bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI3MSw2NSArMjE5Myw1MSBAQCBib29s
IFRleHR1cmU6OnZhbGlkYXRlQ3JlYXRlVmlldyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKSBjbwogICAgIGlmICghZm91bmRGb3JtYXQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIC8vICJJZiBkZXNjcmlwdG9yLmRpbWVuc2lvbiBpczoiCiAgICAgc3dp
dGNoIChkZXNjcmlwdG9yLmRpbWVuc2lvbikgewogICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGlt
ZW5zaW9uX1VuZGVmaW5lZDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgV0dQVVRl
eHR1cmVWaWV3RGltZW5zaW9uXzFEOgotICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5k
aW1lbnNpb24gbXVzdCBiZSAiMWQiLiIKICAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5kaW1lbnNp
b24gIT0gV0dQVVRleHR1cmVEaW1lbnNpb25fMUQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgLy8gImRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50IG11c3QgYmUgMS4iCiAg
ICAgICAgIGlmIChkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCAhPSAxKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0Rp
bWVuc2lvbl8yRDoKLSAgICAgICAgLy8gInRoaXMuW1tkZXNjcmlwdG9yXV0uZGltZW5zaW9uIG11
c3QgYmUgIjJkIi4iCiAgICAgICAgIGlmIChtX2Rlc2NyaXB0b3IuZGltZW5zaW9uICE9IFdHUFVU
ZXh0dXJlRGltZW5zaW9uXzJEKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IC8vICJkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCBtdXN0IGJlIDEuIgogICAgICAgICBpZiAo
ZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgIT0gMSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fMkRB
cnJheToKLSAgICAgICAgLy8gInRoaXMuW1tkZXNjcmlwdG9yXV0uZGltZW5zaW9uIG11c3QgYmUg
IjJkIi4iCiAgICAgICAgIGlmIChtX2Rlc2NyaXB0b3IuZGltZW5zaW9uICE9IFdHUFVUZXh0dXJl
RGltZW5zaW9uXzJEKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9DdWJlOgotICAgICAgICAvLyAidGhp
cy5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gbXVzdCBiZSAiMmQiLiIKICAgICAgICAgaWYgKG1f
ZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1cmVEaW1lbnNpb25fMkQpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgLy8gImRlc2NyaXB0b3IuYXJyYXlMYXllckNv
dW50IG11c3QgYmUgNi4iCiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCAh
PSA2KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIC8vICJ0aGlzLltbZGVz
Y3JpcHRvcl1dLnNpemUud2lkdGggbXVzdCBiZSB0aGlzLltbZGVzY3JpcHRvcl1dLnNpemUuaGVp
Z2h0LiIKICAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5zaXplLndpZHRoICE9IG1fZGVzY3JpcHRv
ci5zaXplLmhlaWdodCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fQ3ViZUFycmF5OgotICAgICAgICAv
LyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gbXVzdCBiZSAiMmQiLiIKICAgICAgICAg
aWYgKG1fZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1cmVEaW1lbnNpb25fMkQpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgLy8gImRlc2NyaXB0b3IuYXJyYXlM
YXllckNvdW50IG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2LiIKICAgICAgICAgaWYgKGRlc2NyaXB0
b3IuYXJyYXlMYXllckNvdW50ICUgNikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5zaXplLndpZHRoIG11c3QgYmUgdGhpcy5bW2Rl
c2NyaXB0b3JdXS5zaXplLmhlaWdodC4iCiAgICAgICAgIGlmIChtX2Rlc2NyaXB0b3Iuc2l6ZS53
aWR0aCAhPSBtX2Rlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzNE
OgotICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gbXVzdCBiZSAiM2Qi
LiIKICAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1cmVEaW1l
bnNpb25fM0QpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgLy8gImRlc2Ny
aXB0b3IuYXJyYXlMYXllckNvdW50IG11c3QgYmUgMS4iCiAgICAgICAgIGlmIChkZXNjcmlwdG9y
LmFycmF5TGF5ZXJDb3VudCAhPSAxKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBicmVhazsKQEAgLTIzNDUsMTkgKzIyNTMsMTQgQEAgc3RhdGljIFdHUFVFeHRlbnQzRCBjb21w
dXRlUmVuZGVyRXh0ZW50KGNvbnN0IFdHUFVFeHRlbnQzRCYgYmFzZVNpemUsIHVpbnQzMl90IG0K
IHsKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNhYnN0cmFjdC1vcGRl
Zi1jb21wdXRlLXJlbmRlci1leHRlbnQKIAotICAgIC8vICJMZXQgZXh0ZW50IGJlIGEgbmV3IEdQ
VUV4dGVudDNERGljdCBvYmplY3QuIgogICAgIFdHUFVFeHRlbnQzRCBleHRlbnQgeyB9OwogCi0g
ICAgLy8gIlNldCBleHRlbnQud2lkdGggdG8gbWF4KDEsIGJhc2VTaXplLndpZHRoIOKJqyBtaXBM
ZXZlbCkuIgogICAgIGV4dGVudC53aWR0aCA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PHVpbnQzMl90
PigxKSwgYmFzZVNpemUud2lkdGggPj4gbWlwTGV2ZWwpOwogCi0gICAgLy8gIlNldCBleHRlbnQu
aGVpZ2h0IHRvIG1heCgxLCBiYXNlU2l6ZS5oZWlnaHQg4omrIG1pcExldmVsKS4iCiAgICAgZXh0
ZW50LmhlaWdodCA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PHVpbnQzMl90PigxKSwgYmFzZVNpemUu
aGVpZ2h0ID4+IG1pcExldmVsKTsKIAotICAgIC8vICJTZXQgZXh0ZW50LmRlcHRoT3JBcnJheUxh
eWVycyB0byAxLiIKICAgICBleHRlbnQuZGVwdGhPckFycmF5TGF5ZXJzID0gMTsKIAotICAgIC8v
ICJSZXR1cm4gZXh0ZW50LiIKICAgICByZXR1cm4gZXh0ZW50OwogfQogCkBAIC0yMzY4LDEyICsy
MjcxLDkgQEAgUmVmUHRyPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVhdGVWaWV3KGNvbnN0IFdH
UFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGlucHV0RGUKIAogICAgIC8vIGh0dHBzOi8vZ3B1d2Vi
LmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHV0ZXh0dXJlLWNyZWF0ZXZpZXcKIAotICAgIC8vICJT
ZXQgZGVzY3JpcHRvciB0byB0aGUgcmVzdWx0IG9mIHJlc29sdmluZyBHUFVUZXh0dXJlVmlld0Rl
c2NyaXB0b3IgZGVmYXVsdHMgd2l0aCBkZXNjcmlwdG9yLiIKICAgICBhdXRvIGRlc2NyaXB0b3Ig
PSByZXNvbHZlVGV4dHVyZVZpZXdEZXNjcmlwdG9yRGVmYXVsdHMoaW5wdXREZXNjcmlwdG9yKTsK
IAotICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHMgYXJlIHVubWV0
OiIKICAgICBpZiAoIXZhbGlkYXRlQ3JlYXRlVmlldyhkZXNjcmlwdG9yKSkgewotICAgICAgICAv
LyAiR2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yLiIKICAgICAgICAgbV9kZXZpY2UtPmdlbmVy
YXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAKICAgICAgICAg
Ly8gRklYTUU6ICJSZXR1cm4gYSBuZXcgaW52YWxpZCBHUFVUZXh0dXJlVmlldy4iCkBAIC0yNDUy
LDE5ICsyMzUyLDEwIEBAIFJlZlB0cjxUZXh0dXJlVmlldz4gVGV4dHVyZTo6Y3JlYXRlVmlldyhj
b25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBpbnB1dERlCiAKICAgICB0ZXh0dXJlLmxh
YmVsID0gZnJvbUFQSShkZXNjcmlwdG9yLmxhYmVsKTsKIAotICAgIC8vICJMZXQgdmlldyBiZSBh
IG5ldyBHUFVUZXh0dXJlVmlldyBvYmplY3QuIgotICAgIC8vICJTZXQgdmlldy5bW3RleHR1cmVd
XSB0byB0aGlzLiIKLSAgICAvLyAiU2V0IHZpZXcuW1tkZXNjcmlwdG9yXV0gdG8gZGVzY3JpcHRv
ci4iCi0KLSAgICAvLyAiSWYgdGhpcy5bW2Rlc2NyaXB0b3JdXS51c2FnZSBjb250YWlucyBSRU5E
RVJfQVRUQUNITUVOVDoiCiAgICAgc3RkOjpvcHRpb25hbDxXR1BVRXh0ZW50M0Q+IHJlbmRlckV4
dGVudDsKLSAgICBpZiAgKG1fZGVzY3JpcHRvci51c2FnZSAmIFdHUFVUZXh0dXJlVXNhZ2VfUmVu
ZGVyQXR0YWNobWVudCkgewotICAgICAgICAvLyAiTGV0IHJlbmRlckV4dGVudCBiZSBjb21wdXRl
IHJlbmRlciBleHRlbnQodGhpcy5bW2Rlc2NyaXB0b3JdXS5zaXplLCBkZXNjcmlwdG9yLmJhc2VN
aXBMZXZlbCkuIgotICAgICAgICAvLyAiU2V0IHZpZXcuW1tyZW5kZXJFeHRlbnRdXSB0byByZW5k
ZXJFeHRlbnQuIgorICAgIGlmICAobV9kZXNjcmlwdG9yLnVzYWdlICYgV0dQVVRleHR1cmVVc2Fn
ZV9SZW5kZXJBdHRhY2htZW50KQogICAgICAgICByZW5kZXJFeHRlbnQgPSBjb21wdXRlUmVuZGVy
RXh0ZW50KG1fZGVzY3JpcHRvci5zaXplLCBkZXNjcmlwdG9yLmJhc2VNaXBMZXZlbCk7Ci0gICAg
fQogCi0gICAgLy8gIlJldHVybiB2aWV3LiIKICAgICByZXR1cm4gVGV4dHVyZVZpZXc6OmNyZWF0
ZSh0ZXh0dXJlLCBkZXNjcmlwdG9yLCByZW5kZXJFeHRlbnQpOwogfQogCkBAIC0yNDg0LDI3ICsy
Mzc1LDE4IEBAIFdHUFVFeHRlbnQzRCBUZXh0dXJlOjpsb2dpY2FsTWlwbGV2ZWxTcGVjaWZpY1Rl
eHR1cmVFeHRlbnQodWludDMyX3QgbWlwTGV2ZWwpCiAgICAgc3dpdGNoIChtX2Rlc2NyaXB0b3Iu
ZGltZW5zaW9uKSB7CiAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8xRDoKICAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgICAgIC8vICJTZXQgZXh0ZW50LndpZHRoIHRvIG1heCgxLCBkZXNj
cmlwdG9yLnNpemUud2lkdGgg4omrIG1pcExldmVsKS4iCiAgICAgICAgICAgICBzdGQ6Om1heChz
dGF0aWNfY2FzdDx1aW50MzJfdD4oMSksIG1fZGVzY3JpcHRvci5zaXplLndpZHRoID4+IG1pcExl
dmVsKSwKLSAgICAgICAgICAgIC8vICJTZXQgZXh0ZW50LmhlaWdodCB0byAxLiIKICAgICAgICAg
ICAgIDEsCi0gICAgICAgICAgICAvLyAiU2V0IGV4dGVudC5kZXB0aE9yQXJyYXlMYXllcnMgdG8g
ZGVzY3JpcHRvci5zaXplLmRlcHRoT3JBcnJheUxheWVycy4iCiAgICAgICAgICAgICBtX2Rlc2Ny
aXB0b3Iuc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMgfTsKICAgICBjYXNlIFdHUFVUZXh0dXJlRGlt
ZW5zaW9uXzJEOgogICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgLy8gIlNldCBleHRlbnQu
d2lkdGggdG8gbWF4KDEsIGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCDiiasgbWlwTGV2ZWwpLiIKICAg
ICAgICAgICAgIHN0ZDo6bWF4KHN0YXRpY19jYXN0PHVpbnQzMl90PigxKSwgbV9kZXNjcmlwdG9y
LnNpemUud2lkdGggPj4gbWlwTGV2ZWwpLAotICAgICAgICAgICAgLy8gIlNldCBleHRlbnQuaGVp
Z2h0IHRvIG1heCgxLCBkZXNjcmlwdG9yLnNpemUuaGVpZ2h0IOKJqyBtaXBMZXZlbCkuIgogICAg
ICAgICAgICAgc3RkOjptYXgoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEpLCBtX2Rlc2NyaXB0b3Iu
c2l6ZS5oZWlnaHQgPj4gbWlwTGV2ZWwpLAotICAgICAgICAgICAgLy8gIlNldCBleHRlbnQuZGVw
dGhPckFycmF5TGF5ZXJzIHRvIGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMuIgog
ICAgICAgICAgICAgbV9kZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzIH07CiAgICAg
Y2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8zRDoKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAg
ICAgIC8vICJTZXQgZXh0ZW50LndpZHRoIHRvIG1heCgxLCBkZXNjcmlwdG9yLnNpemUud2lkdGgg
4omrIG1pcExldmVsKS4iCiAgICAgICAgICAgICBzdGQ6Om1heChzdGF0aWNfY2FzdDx1aW50MzJf
dD4oMSksIG1fZGVzY3JpcHRvci5zaXplLndpZHRoID4+IG1pcExldmVsKSwKLSAgICAgICAgICAg
IC8vICJTZXQgZXh0ZW50LmhlaWdodCB0byBtYXgoMSwgZGVzY3JpcHRvci5zaXplLmhlaWdodCDi
iasgbWlwTGV2ZWwpLiIKICAgICAgICAgICAgIHN0ZDo6bWF4KHN0YXRpY19jYXN0PHVpbnQzMl90
PigxKSwgbV9kZXNjcmlwdG9yLnNpemUuaGVpZ2h0ID4+IG1pcExldmVsKSwKLSAgICAgICAgICAg
IC8vICJTZXQgZXh0ZW50LmRlcHRoT3JBcnJheUxheWVycyB0byBtYXgoMSwgZGVzY3JpcHRvci5z
aXplLmRlcHRoT3JBcnJheUxheWVycyDiiasgbWlwTGV2ZWwpLiIKICAgICAgICAgICAgIHN0ZDo6
bWF4KHN0YXRpY19jYXN0PHVpbnQzMl90PigxKSwgbV9kZXNjcmlwdG9yLnNpemUuZGVwdGhPckFy
cmF5TGF5ZXJzID4+IG1pcExldmVsKSB9OwogICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25f
Rm9yY2UzMjoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNTE2LDMzICsyMzk4
LDIzIEBAIFdHUFVFeHRlbnQzRCBUZXh0dXJlOjpwaHlzaWNhbE1pcGxldmVsU3BlY2lmaWNUZXh0
dXJlRXh0ZW50KHVpbnQzMl90IG1pcExldmVsKQogewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdp
dGh1Yi5pby9ncHV3ZWIvI2Fic3RyYWN0LW9wZGVmLXBoeXNpY2FsLW1pcGxldmVsLXNwZWNpZmlj
LXRleHR1cmUtZXh0ZW50CiAKLSAgICAvLyAiTGV0IGxvZ2ljYWxFeHRlbnQgYmUgbG9naWNhbCBt
aXBsZXZlbC1zcGVjaWZpYyB0ZXh0dXJlIGV4dGVudChkZXNjcmlwdG9yLCBtaXBMZXZlbCkuIgog
ICAgIGF1dG8gbG9naWNhbEV4dGVudCA9IGxvZ2ljYWxNaXBsZXZlbFNwZWNpZmljVGV4dHVyZUV4
dGVudChtaXBMZXZlbCk7CiAKICAgICBzd2l0Y2ggKG1fZGVzY3JpcHRvci5kaW1lbnNpb24pIHsK
ICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uXzFEOgogICAgICAgICByZXR1cm4gewotICAg
ICAgICAgICAgLy8gIlNldCBleHRlbnQud2lkdGggdG8gbG9naWNhbEV4dGVudC53aWR0aCByb3Vu
ZGVkIHVwIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIGRlc2NyaXB0b3LigJlzIHRleGVsIGJs
b2NrIHdpZHRoLiIKICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihXVEY6OnJvdW5k
VXBUb011bHRpcGxlT2YodGV4ZWxCbG9ja1dpZHRoKG1fZGVzY3JpcHRvci5mb3JtYXQpLCBsb2dp
Y2FsRXh0ZW50LndpZHRoKSksCi0gICAgICAgICAgICAvLyAiU2V0IGV4dGVudC5oZWlnaHQgdG8g
MS4iCiAgICAgICAgICAgICAxLAotICAgICAgICAgICAgLy8gIlNldCBleHRlbnQuZGVwdGhPckFy
cmF5TGF5ZXJzIHRvIGxvZ2ljYWxFeHRlbnQuZGVwdGhPckFycmF5TGF5ZXJzLiIKICAgICAgICAg
ICAgIGxvZ2ljYWxFeHRlbnQuZGVwdGhPckFycmF5TGF5ZXJzIH07CiAgICAgY2FzZSBXR1BVVGV4
dHVyZURpbWVuc2lvbl8yRDoKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIC8vICJTZXQg
ZXh0ZW50LndpZHRoIHRvIGxvZ2ljYWxFeHRlbnQud2lkdGggcm91bmRlZCB1cCB0byB0aGUgbmVh
cmVzdCBtdWx0aXBsZSBvZiBkZXNjcmlwdG9y4oCZcyB0ZXhlbCBibG9jayB3aWR0aC4iCiAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHRl
eGVsQmxvY2tXaWR0aChtX2Rlc2NyaXB0b3IuZm9ybWF0KSwgbG9naWNhbEV4dGVudC53aWR0aCkp
LAotICAgICAgICAgICAgLy8gIlNldCBleHRlbnQuaGVpZ2h0IHRvIGxvZ2ljYWxFeHRlbnQuaGVp
Z2h0IHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3QgbXVsdGlwbGUgb2YgZGVzY3JpcHRvcuKAmXMg
dGV4ZWwgYmxvY2sgaGVpZ2h0LiIKICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2YodGV4ZWxCbG9ja0hlaWdodChtX2Rlc2NyaXB0b3IuZm9y
bWF0KSwgbG9naWNhbEV4dGVudC5oZWlnaHQpKSwKLSAgICAgICAgICAgIC8vICJTZXQgZXh0ZW50
LmRlcHRoT3JBcnJheUxheWVycyB0byBsb2dpY2FsRXh0ZW50LmRlcHRoT3JBcnJheUxheWVycy4i
CiAgICAgICAgICAgICBsb2dpY2FsRXh0ZW50LmRlcHRoT3JBcnJheUxheWVycyB9OwogICAgIGNh
c2UgV0dQVVRleHR1cmVEaW1lbnNpb25fM0Q6CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAg
ICAvLyAiU2V0IGV4dGVudC53aWR0aCB0byBsb2dpY2FsRXh0ZW50LndpZHRoIHJvdW5kZWQgdXAg
dG8gdGhlIG5lYXJlc3QgbXVsdGlwbGUgb2YgZGVzY3JpcHRvcuKAmXMgdGV4ZWwgYmxvY2sgd2lk
dGguIgogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZih0ZXhlbEJsb2NrV2lkdGgobV9kZXNjcmlwdG9yLmZvcm1hdCksIGxvZ2ljYWxFeHRl
bnQud2lkdGgpKSwKLSAgICAgICAgICAgIC8vICJTZXQgZXh0ZW50LmhlaWdodCB0byBsb2dpY2Fs
RXh0ZW50LmhlaWdodCByb3VuZGVkIHVwIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIGRlc2Ny
aXB0b3LigJlzIHRleGVsIGJsb2NrIGhlaWdodC4iCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHRleGVsQmxvY2tIZWlnaHQobV9kZXNj
cmlwdG9yLmZvcm1hdCksIGxvZ2ljYWxFeHRlbnQuaGVpZ2h0KSksCi0gICAgICAgICAgICAvLyAi
U2V0IGV4dGVudC5kZXB0aE9yQXJyYXlMYXllcnMgdG8gbG9naWNhbEV4dGVudC5kZXB0aE9yQXJy
YXlMYXllcnMuIgogICAgICAgICAgICAgbG9naWNhbEV4dGVudC5kZXB0aE9yQXJyYXlMYXllcnMg
fTsKICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uX0ZvcmNlMzI6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjU1NCw3ICsyNDI2LDYgQEAgc3RhdGljIFdHUFVFeHRlbnQz
RCBpbWFnZUNvcHlUZXh0dXJlU3VicmVzb3VyY2VTaXplKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0
dXJlJgogewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2ltYWdlY29w
eXRleHR1cmUtc3VicmVzb3VyY2Utc2l6ZQogCi0gICAgLy8gIkl0cyB3aWR0aCwgaGVpZ2h0IGFu
ZCBkZXB0aE9yQXJyYXlMYXllcnMgYXJlIHRoZSB3aWR0aCwgaGVpZ2h0LCBhbmQgZGVwdGgsIHJl
c3BlY3RpdmVseSwgb2YgdGhlIHBoeXNpY2FsIHNpemUgb2YgaW1hZ2VDb3B5VGV4dHVyZS50ZXh0
dXJlIHN1YnJlc291cmNlIGF0IG1pcG1hcCBsZXZlbCBpbWFnZUNvcHlUZXh0dXJlLm1pcExldmVs
LiIKICAgICByZXR1cm4gZnJvbUFQSShpbWFnZUNvcHlUZXh0dXJlLnRleHR1cmUpLnBoeXNpY2Fs
TWlwbGV2ZWxTcGVjaWZpY1RleHR1cmVFeHRlbnQoaW1hZ2VDb3B5VGV4dHVyZS5taXBMZXZlbCk7
CiB9CiAKQEAgLTI1NjIsMzEgKzI0MzMsMjMgQEAgYm9vbCBUZXh0dXJlOjp2YWxpZGF0ZUltYWdl
Q29weVRleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIGltYWdlQ29weVRleHQKIHsK
ICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNhYnN0cmFjdC1vcGRlZi12
YWxpZGF0aW5nLWdwdWltYWdlY29weXRleHR1cmUKIAotICAgIC8vICJibG9ja1dpZHRoIGJlIHRo
ZSB0ZXhlbCBibG9jayB3aWR0aCBvZiBpbWFnZUNvcHlUZXh0dXJlLnRleHR1cmUuW1tkZXNjcmlw
dG9yXV0uZm9ybWF0LiIKICAgICB1aW50MzJfdCBibG9ja1dpZHRoID0gVGV4dHVyZTo6dGV4ZWxC
bG9ja1dpZHRoKGZyb21BUEkoaW1hZ2VDb3B5VGV4dHVyZS50ZXh0dXJlKS5kZXNjcmlwdG9yKCku
Zm9ybWF0KTsKIAotICAgIC8vICJibG9ja0hlaWdodCBiZSB0aGUgdGV4ZWwgYmxvY2sgaGVpZ2h0
IG9mIGltYWdlQ29weVRleHR1cmUudGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS5mb3JtYXQuIgogICAg
IHVpbnQzMl90IGJsb2NrSGVpZ2h0ID0gVGV4dHVyZTo6dGV4ZWxCbG9ja0hlaWdodChmcm9tQVBJ
KGltYWdlQ29weVRleHR1cmUudGV4dHVyZSkuZGVzY3JpcHRvcigpLmZvcm1hdCk7CiAKICAgICAv
LyBGSVhNRTogImltYWdlQ29weVRleHR1cmUudGV4dHVyZSBtdXN0IGJlIGEgdmFsaWQgR1BVVGV4
dHVyZS4iCiAKLSAgICAvLyAiaW1hZ2VDb3B5VGV4dHVyZS5taXBMZXZlbCBtdXN0IGJlIGxlc3Mg
dGhhbiB0aGUgW1tkZXNjcmlwdG9yXV0ubWlwTGV2ZWxDb3VudCBvZiBpbWFnZUNvcHlUZXh0dXJl
LnRleHR1cmUuIgogICAgIGlmIChpbWFnZUNvcHlUZXh0dXJlLm1pcExldmVsID49IGZyb21BUEko
aW1hZ2VDb3B5VGV4dHVyZS50ZXh0dXJlKS5kZXNjcmlwdG9yKCkubWlwTGV2ZWxDb3VudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gImltYWdlQ29weVRleHR1cmUub3JpZ2luLngg
bXVzdCBiZSBhIG11bHRpcGxlIG9mIGJsb2NrV2lkdGguIgogICAgIGlmIChpbWFnZUNvcHlUZXh0
dXJlLm9yaWdpbi54ICUgYmxvY2tXaWR0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ly8gImltYWdlQ29weVRleHR1cmUub3JpZ2luLnkgbXVzdCBiZSBhIG11bHRpcGxlIG9mIGJsb2Nr
SGVpZ2h0LiIKICAgICBpZiAoaW1hZ2VDb3B5VGV4dHVyZS5vcmlnaW4ueSAlIGJsb2NrSGVpZ2h0
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAiaW1hZ2VDb3B5VGV4dHVyZS50ZXh0
dXJlLltbZGVzY3JpcHRvcl1dLmZvcm1hdCBpcyBhIGRlcHRoLXN0ZW5jaWwgZm9ybWF0LiIKLSAg
ICAvLyAiaW1hZ2VDb3B5VGV4dHVyZS50ZXh0dXJlLltbZGVzY3JpcHRvcl1dLnNhbXBsZUNvdW50
IGlzIGdyZWF0ZXIgdGhhbiAxLiIKICAgICBpZiAoVGV4dHVyZTo6aXNEZXB0aE9yU3RlbmNpbEZv
cm1hdChmcm9tQVBJKGltYWdlQ29weVRleHR1cmUudGV4dHVyZSkuZGVzY3JpcHRvcigpLmZvcm1h
dCkKICAgICAgICAgfHwgZnJvbUFQSShpbWFnZUNvcHlUZXh0dXJlLnRleHR1cmUpLmRlc2NyaXB0
b3IoKS5zYW1wbGVDb3VudCA+IDEpIHsKLSAgICAgICAgLy8gIlRoZSBpbWFnZUNvcHlUZXh0dXJl
IHN1YnJlc291cmNlIHNpemUgb2YgaW1hZ2VDb3B5VGV4dHVyZSBpcyBlcXVhbCB0byBjb3B5U2l6
ZSIKICAgICAgICAgYXV0byBzdWJyZXNvdXJjZVNpemUgPSBpbWFnZUNvcHlUZXh0dXJlU3VicmVz
b3VyY2VTaXplKGltYWdlQ29weVRleHR1cmUpOwogICAgICAgICBpZiAoc3VicmVzb3VyY2VTaXpl
LndpZHRoICE9IGNvcHlTaXplLndpZHRoCiAgICAgICAgICAgICB8fCBzdWJyZXNvdXJjZVNpemUu
aGVpZ2h0ICE9IGNvcHlTaXplLmhlaWdodApAQCAtMjg1MiwzNSArMjcxNSwyNyBAQCBib29sIFRl
eHR1cmU6OnZhbGlkYXRlVGV4dHVyZUNvcHlSYW5nZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVy
ZSYgaW1hZ2VDb3B5VGV4dAogewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3
ZWIvI3ZhbGlkYXRpbmctdGV4dHVyZS1jb3B5LXJhbmdlCiAKLSAgICAvLyAiTGV0IGJsb2NrV2lk
dGggYmUgdGhlIHRleGVsIGJsb2NrIHdpZHRoIG9mIGltYWdlQ29weVRleHR1cmUudGV4dHVyZS5b
W2Rlc2NyaXB0b3JdXS5mb3JtYXQuIgogICAgIGF1dG8gYmxvY2tXaWR0aCA9IFRleHR1cmU6OnRl
eGVsQmxvY2tXaWR0aChmcm9tQVBJKGltYWdlQ29weVRleHR1cmUudGV4dHVyZSkuZGVzY3JpcHRv
cigpLmZvcm1hdCk7CiAKLSAgICAvLyAiTGV0IGJsb2NrSGVpZ2h0IGJlIHRoZSB0ZXhlbCBibG9j
ayBoZWlnaHQgb2YgaW1hZ2VDb3B5VGV4dHVyZS50ZXh0dXJlLltbZGVzY3JpcHRvcl1dLmZvcm1h
dC4iCiAgICAgYXV0byBibG9ja0hlaWdodCA9IFRleHR1cmU6OnRleGVsQmxvY2tIZWlnaHQoZnJv
bUFQSShpbWFnZUNvcHlUZXh0dXJlLnRleHR1cmUpLmRlc2NyaXB0b3IoKS5mb3JtYXQpOwogCi0g
ICAgLy8gIkxldCBzdWJyZXNvdXJjZVNpemUgYmUgdGhlIGltYWdlQ29weVRleHR1cmUgc3VicmVz
b3VyY2Ugc2l6ZSBvZiBpbWFnZUNvcHlUZXh0dXJlLiIKICAgICBhdXRvIHN1YnJlc291cmNlU2l6
ZSA9IGltYWdlQ29weVRleHR1cmVTdWJyZXNvdXJjZVNpemUoaW1hZ2VDb3B5VGV4dHVyZSk7CiAK
LSAgICAvLyAiKGltYWdlQ29weVRleHR1cmUub3JpZ2luLnggKyBjb3B5U2l6ZS53aWR0aCkg4omk
IHN1YnJlc291cmNlU2l6ZS53aWR0aCIKICAgICAvLyBGSVhNRTogVXNlZCBjaGVja2VkIGFyaXRo
bWV0aWMKICAgICBpZiAoaW1hZ2VDb3B5VGV4dHVyZS5vcmlnaW4ueCArIGNvcHlTaXplLndpZHRo
ID4gc3VicmVzb3VyY2VTaXplLndpZHRoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAv
LyAiKGltYWdlQ29weVRleHR1cmUub3JpZ2luLnkgKyBjb3B5U2l6ZS5oZWlnaHQpIOKJpCBzdWJy
ZXNvdXJjZVNpemUuaGVpZ2h0IgogICAgIC8vIEZJWE1FOiBVc2VkIGNoZWNrZWQgYXJpdGhtZXRp
YwogICAgIGlmICgoaW1hZ2VDb3B5VGV4dHVyZS5vcmlnaW4ueSArIGNvcHlTaXplLmhlaWdodCkg
PiBzdWJyZXNvdXJjZVNpemUuaGVpZ2h0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAv
LyAiKGltYWdlQ29weVRleHR1cmUub3JpZ2luLnogKyBjb3B5U2l6ZS5kZXB0aE9yQXJyYXlMYXll
cnMpIOKJpCBzdWJyZXNvdXJjZVNpemUuZGVwdGhPckFycmF5TGF5ZXJzIgogICAgIC8vIEZJWE1F
OiBVc2VkIGNoZWNrZWQgYXJpdGhtZXRpYwogICAgIGlmICgoaW1hZ2VDb3B5VGV4dHVyZS5vcmln
aW4ueiArIGNvcHlTaXplLmRlcHRoT3JBcnJheUxheWVycykgPiBzdWJyZXNvdXJjZVNpemUuZGVw
dGhPckFycmF5TGF5ZXJzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAiY29weVNp
emUud2lkdGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIGJsb2NrV2lkdGguIgogICAgIGlmIChjb3B5
U2l6ZS53aWR0aCAlIGJsb2NrV2lkdGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8v
ICJjb3B5U2l6ZS5oZWlnaHQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIGJsb2NrSGVpZ2h0LiIKICAg
ICBpZiAoY29weVNpemUuaGVpZ2h0ICUgYmxvY2tIZWlnaHQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMjg5MSw4OCArMjc0Niw2MiBAQCBib29sIFRleHR1cmU6OnZhbGlkYXRlTGluZWFy
VGV4dHVyZURhdGEoY29uc3QgV0dQVVRleHR1cmVEYXRhTGF5b3V0JiBsYXlvdXQsIHVpbgogewog
ICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2Fic3RyYWN0LW9wZGVmLXZh
bGlkYXRpbmctbGluZWFyLXRleHR1cmUtZGF0YQogCi0gICAgLy8gIkxldCBibG9ja1dpZHRoLCBi
bG9ja0hlaWdodCwgYW5kIGJsb2NrU2l6ZSBiZSB0aGUgdGV4ZWwgYmxvY2sgd2lkdGgsIGhlaWdo
dCwgYW5kIHNpemUgb2YgZm9ybWF0LiIKICAgICB1aW50MzJfdCBibG9ja1dpZHRoID0gVGV4dHVy
ZTo6dGV4ZWxCbG9ja1dpZHRoKGZvcm1hdCk7CiAgICAgdWludDMyX3QgYmxvY2tIZWlnaHQgPSBU
ZXh0dXJlOjp0ZXhlbEJsb2NrSGVpZ2h0KGZvcm1hdCk7CiAgICAgdWludDMyX3QgYmxvY2tTaXpl
ID0gVGV4dHVyZTo6dGV4ZWxCbG9ja1NpemUoZm9ybWF0KTsKIAotICAgIC8vICJJdCBpcyBhc3N1
bWVkIHRoYXQgY29weUV4dGVudC53aWR0aCBpcyBhIG11bHRpcGxlIG9mIGJsb2NrV2lkdGggYW5k
IGNvcHlFeHRlbnQuaGVpZ2h0IGlzIGEgbXVsdGlwbGUgb2YgYmxvY2tIZWlnaHQuIgotCi0gICAg
Ly8gIndpZHRoSW5CbG9ja3MgYmUgY29weUV4dGVudC53aWR0aCDDtyBibG9ja1dpZHRoLiIKICAg
ICBhdXRvIHdpZHRoSW5CbG9ja3MgPSBjb3B5RXh0ZW50LndpZHRoIC8gYmxvY2tXaWR0aDsKIAot
ICAgIC8vICJoZWlnaHRJbkJsb2NrcyBiZSBjb3B5RXh0ZW50LmhlaWdodCDDtyBibG9ja0hlaWdo
dC4iCiAgICAgYXV0byBoZWlnaHRJbkJsb2NrcyA9IGNvcHlFeHRlbnQuaGVpZ2h0IC8gYmxvY2tI
ZWlnaHQ7CiAKLSAgICAvLyAiYnl0ZXNJbkxhc3RSb3cgYmUgYmxvY2tTaXplIMOXIHdpZHRoSW5C
bG9ja3MuIgogICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgogICAgIGF1dG8g
Ynl0ZXNJbkxhc3RSb3cgPSBibG9ja1NpemUgKiB3aWR0aEluQmxvY2tzOwogCi0gICAgLy8gIklm
IGhlaWdodEluQmxvY2tzID4gMSIKICAgICBpZiAoaGVpZ2h0SW5CbG9ja3MgPiAxKSB7Ci0gICAg
ICAgIC8vICJsYXlvdXQuYnl0ZXNQZXJSb3cgbXVzdCBiZSBzcGVjaWZpZWQuIgogICAgICAgICBp
ZiAobGF5b3V0LmJ5dGVzUGVyUm93ID09IFdHUFVfQ09QWV9TVFJJREVfVU5ERUZJTkVEKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vICJJZiBjb3B5RXh0ZW50LmRl
cHRoT3JBcnJheUxheWVycyA+IDEiCiAgICAgaWYgKGNvcHlFeHRlbnQuZGVwdGhPckFycmF5TGF5
ZXJzID4gMSkgewotICAgICAgICAvLyAibGF5b3V0LmJ5dGVzUGVyUm93IGFuZCBsYXlvdXQucm93
c1BlckltYWdlIG11c3QgYmUgc3BlY2lmaWVkLiIKICAgICAgICAgaWYgKGxheW91dC5ieXRlc1Bl
clJvdyA9PSBXR1BVX0NPUFlfU1RSSURFX1VOREVGSU5FRCB8fCBsYXlvdXQucm93c1BlckltYWdl
ID09IFdHUFVfQ09QWV9TVFJJREVfVU5ERUZJTkVEKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIC8vICJJZiBzcGVjaWZpZWQiCiAgICAgaWYgKGxheW91dC5ieXRlc1Bl
clJvdyAhPSBXR1BVX0NPUFlfU1RSSURFX1VOREVGSU5FRCkgewotICAgICAgICAvLyAibGF5b3V0
LmJ5dGVzUGVyUm93IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGJ5dGVzSW5MYXN0
Um93LiIKICAgICAgICAgaWYgKGxheW91dC5ieXRlc1BlclJvdyA8IGJ5dGVzSW5MYXN0Um93KQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vICJJZiBzcGVjaWZpZWQi
CiAgICAgaWYgKGxheW91dC5yb3dzUGVySW1hZ2UgIT0gV0dQVV9DT1BZX1NUUklERV9VTkRFRklO
RUQpIHsKLSAgICAgICAgLy8gImxheW91dC5yb3dzUGVySW1hZ2UgbXVzdCBiZSBncmVhdGVyIHRo
YW4gb3IgZXF1YWwgdG8gaGVpZ2h0SW5CbG9ja3MuIgogICAgICAgICBpZiAobGF5b3V0LnJvd3NQ
ZXJJbWFnZSA8IGhlaWdodEluQmxvY2tzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIC8vICJMZXQgcmVxdWlyZWRCeXRlc0luQ29weSBiZSAwLiIKICAgICB1aW50NjRf
dCByZXF1aXJlZEJ5dGVzSW5Db3B5ID0gMDsKIAotICAgIC8vICJJZiBjb3B5RXh0ZW50LmRlcHRo
T3JBcnJheUxheWVycyA+IDE6IgogICAgIGlmIChjb3B5RXh0ZW50LmRlcHRoT3JBcnJheUxheWVy
cyA+IDEpIHsKLSAgICAgICAgLy8gIkxldCBieXRlc1BlckltYWdlIGJlIGxheW91dC5ieXRlc1Bl
clJvdyDDlyBsYXlvdXQucm93c1BlckltYWdlLiIKICAgICAgICAgLy8gRklYTUU6IFVzZSBjaGVj
a2VkIGFyaXRobWV0aWMuCiAgICAgICAgIGF1dG8gYnl0ZXNQZXJJbWFnZSA9IGxheW91dC5ieXRl
c1BlclJvdyAqIGxheW91dC5yb3dzUGVySW1hZ2U7CiAKLSAgICAgICAgLy8gIkxldCBieXRlc0Jl
Zm9yZUxhc3RJbWFnZSBiZSBieXRlc1BlckltYWdlIMOXIChjb3B5RXh0ZW50LmRlcHRoT3JBcnJh
eUxheWVycyDiiJIgMSkuIgogICAgICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRp
Yy4KICAgICAgICAgYXV0byBieXRlc0JlZm9yZUxhc3RJbWFnZSA9IGJ5dGVzUGVySW1hZ2UgKiAo
Y29weUV4dGVudC5kZXB0aE9yQXJyYXlMYXllcnMgLSAxKTsKIAotICAgICAgICAvLyAiQWRkIGJ5
dGVzQmVmb3JlTGFzdEltYWdlIHRvIHJlcXVpcmVkQnl0ZXNJbkNvcHkuIgogICAgICAgICAvLyBG
SVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICAgICAgcmVxdWlyZWRCeXRlc0luQ29w
eSArPSBieXRlc0JlZm9yZUxhc3RJbWFnZTsKICAgICB9CiAKLSAgICAvLyAiSWYgY29weUV4dGVu
dC5kZXB0aE9yQXJyYXlMYXllcnMgPiAwOiIKICAgICBpZiAoY29weUV4dGVudC5kZXB0aE9yQXJy
YXlMYXllcnMgPiAwKSB7Ci0gICAgICAgIC8vICJJZiBoZWlnaHRJbkJsb2NrcyA+IDEiCiAgICAg
ICAgIGlmIChoZWlnaHRJbkJsb2NrcyA+IDEpIHsKLSAgICAgICAgICAgIC8vICJhZGQgbGF5b3V0
LmJ5dGVzUGVyUm93IMOXIChoZWlnaHRJbkJsb2NrcyDiiJIgMSkgdG8gcmVxdWlyZWRCeXRlc0lu
Q29weS4iCiAgICAgICAgICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAg
ICAgICAgICAgIHJlcXVpcmVkQnl0ZXNJbkNvcHkgKz0gbGF5b3V0LmJ5dGVzUGVyUm93ICogKGhl
aWdodEluQmxvY2tzIC0gMSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyAiSWYgaGVpZ2h0SW5C
bG9ja3MgPiAwIgogICAgICAgICBpZiAoaGVpZ2h0SW5CbG9ja3MgPiAwKSB7Ci0gICAgICAgICAg
ICAvLyAiYWRkIGJ5dGVzSW5MYXN0Um93IHRvIHJlcXVpcmVkQnl0ZXNJbkNvcHkuIgogICAgICAg
ICAgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCiAgICAgICAgICAgICByZXF1
aXJlZEJ5dGVzSW5Db3B5ICs9IGJ5dGVzSW5MYXN0Um93OwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgLy8gIkZhaWwgaWYgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBub3Qgc2F0aXNmaWVk
OiIKLSAgICAvLyAibGF5b3V0Lm9mZnNldCArIHJlcXVpcmVkQnl0ZXNJbkNvcHkg4omkIGJ5dGVT
aXplLiIKICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICBpZiAobGF5
b3V0Lm9mZnNldCArIHJlcXVpcmVkQnl0ZXNJbkNvcHkgPiBieXRlU2l6ZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456534</attachid>
            <date>2022-04-03 23:22:59 -0700</date>
            <delta_ts>2022-04-07 02:42:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>90775</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDg1ZjRhYjYzZDY0Y2Q0MDNjMjA0NzkzMTBhY2NiNTYzMTg2ZWNmYWQKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gQXByIDMg
MDA6NTU6MDAgMjAyMiAtMDcwMAoKICAgIERlbGV0aW5nIGNvbW1lbnRzCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwppbmRleCAz
MTUwNjY3NzYxZDUuLjM5OGI2MzUyYjZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkdQVS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDQgQEAKKzIw
MjItMDQtMDMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV2ViR1BVXSBEZWxldGUgcmVkdW5kYW50IHNwZWMgcXVvdGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIGFjdHVhbGx5IHByZWZlciB0byBo
YXZlIGxvdHMgYW5kIGxvdHMgb2Ygc3BlYyBxdW90ZXMgdGhyb3VnaG91dCB0aGUgaW1wbGVtZW50
YXRpb24sCisgICAgICAgIGJ1dCBlbm91Z2ggcGVvcGxlIGhhdmUgY29tbWVudGVkIGFib3V0IGl0
IHRoYXQgaXQncyBiZWNvbWUgY2xlYXIgdGhhdCB3ZSBwcm9iYWJseQorICAgICAgICBzaG91bGRu
J3QgaGF2ZSB0aGVtLiBUaGlzIGRlbGV0ZXMgYWxtb3N0IGFsbCBvZiB0aGVtIChhbmQgbGVhdmVz
IGp1c3QgdGhlIG9uZXMgdGhhdAorICAgICAgICBhcmUgcGFydGljdWxhcmx5IGluc2lnaHRmdWwp
LgorCisgICAgICAgICogV2ViR1BVL0J1ZmZlci5oOgorICAgICAgICAqIFdlYkdQVS9CdWZmZXIu
bW06CisgICAgICAgIChXZWJHUFU6OnZhbGlkYXRlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJH
UFU6OnZhbGlkYXRlQ3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViR1BVOjpCdWZmZXI6OmRlc3Ryb3kpOgorICAgICAgICAo
V2ViR1BVOjpCdWZmZXI6OnZhbGlkYXRlR2V0TWFwcGVkUmFuZ2UgY29uc3QpOgorICAgICAgICAo
V2ViR1BVOjpCdWZmZXI6OmdldE1hcHBlZFJhbmdlKToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVy
Ojp2YWxpZGF0ZU1hcEFzeW5jIGNvbnN0KToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVyOjptYXBB
c3luYyk6CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6dmFsaWRhdGVVbm1hcCBjb25zdCk6Cisg
ICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6dW5tYXApOgorICAgICAgICAqIFdlYkdQVS9Db21tYW5k
RW5jb2Rlci5tbToKKyAgICAgICAgKFdlYkdQVTo6dmFsaWRhdGVDb3B5QnVmZmVyVG9CdWZmZXIp
OgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvQnVmZmVyKToK
KyAgICAgICAgKFdlYkdQVTo6dmFsaWRhdGVJbWFnZUNvcHlCdWZmZXIpOgorICAgICAgICAoV2Vi
R1BVOjp2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUpOgorICAgICAgICAoV2ViR1BVOjpDb21t
YW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSk6CisgICAgICAgIChXZWJHUFU6OnZhbGlk
YXRlQ29weVRleHR1cmVUb0J1ZmZlcik6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVy
Ojpjb3B5VGV4dHVyZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYkdQVTo6YXJlQ29weUNvbXBhdGli
bGUpOgorICAgICAgICAoV2ViR1BVOjp2YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKToKKyAg
ICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKToKKyAg
ICAgICAgKFdlYkdQVTo6dmFsaWRhdGVDbGVhckJ1ZmZlcik6CisgICAgICAgIChXZWJHUFU6OkNv
bW1hbmRFbmNvZGVyOjpjbGVhckJ1ZmZlcik6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNv
ZGVyOjp2YWxpZGF0ZUZpbmlzaCBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNv
ZGVyOjpmaW5pc2gpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6aW5zZXJ0RGVi
dWdNYXJrZXIpOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6dmFsaWRhdGVQb3BE
ZWJ1Z0dyb3VwIGNvbnN0KToKKyAgICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OnBvcERl
YnVnR3JvdXApOgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6cHVzaERlYnVnR3Jv
dXApOgorICAgICAgICAqIFdlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW06CisgICAgICAgIChX
ZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAo
V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXI6OnZhbGlkYXRlUG9wRGVidWdHcm91cCBjb25zdCk6
CisgICAgICAgIChXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6cG9wRGVidWdHcm91cCk6Cisg
ICAgICAgIChXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcjo6cHVzaERlYnVnR3JvdXApOgorICAg
ICAgICAqIFdlYkdQVS9EZXZpY2UuaDoKKyAgICAgICAgKiBXZWJHUFUvRGV2aWNlLm1tOgorICAg
ICAgICAoV2ViR1BVOjpEZXZpY2U6OmN1cnJlbnRFcnJvclNjb3BlKToKKyAgICAgICAgKFdlYkdQ
VTo6RGV2aWNlOjpnZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IpOgorICAgICAgICAoV2ViR1BVOjpE
ZXZpY2U6OnZhbGlkYXRlUG9wRXJyb3JTY29wZSBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OkRl
dmljZTo6cG9wRXJyb3JTY29wZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6cHVzaEVycm9y
U2NvcGUpOgorICAgICAgICAqIFdlYkdQVS9RdWV1ZS5tbToKKyAgICAgICAgKFdlYkdQVTo6UXVl
dWU6OnN1Ym1pdCk6CisgICAgICAgIChXZWJHUFU6OnZhbGlkYXRlV3JpdGVCdWZmZXJJbml0aWFs
KToKKyAgICAgICAgKFdlYkdQVTo6UXVldWU6OnZhbGlkYXRlV3JpdGVCdWZmZXIgY29uc3QpOgor
ICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6d3JpdGVCdWZmZXIpOgorICAgICAgICAoV2ViR1BVOjp2
YWxpZGF0ZVdyaXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJHUFU6OlF1ZXVlOjp3cml0ZVRleHR1
cmUpOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1tOgorICAgICAgICAo
V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAg
IChXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI6OnZhbGlkYXRlUG9wRGVidWdHcm91cCBjb25z
dCk6CisgICAgICAgIChXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI6OnBvcERlYnVnR3JvdXAp
OgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyOjpwdXNoRGVidWdHcm91cCk6
CisgICAgICAgICogV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLm1tOgorICAgICAgICAoV2ViR1BV
OjpSZW5kZXJQYXNzRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAoV2ViR1BV
OjpSZW5kZXJQYXNzRW5jb2Rlcjo6dmFsaWRhdGVQb3BEZWJ1Z0dyb3VwIGNvbnN0KToKKyAgICAg
ICAgKFdlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI6OnBvcERlYnVnR3JvdXApOgorICAgICAgICAo
V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcjo6cHVzaERlYnVnR3JvdXApOgorICAgICAgICAqIFdl
YkdQVS9TYW1wbGVyLmg6CisgICAgICAgIChXZWJHUFU6OlNhbXBsZXI6OmRlc2NyaXB0b3IgY29u
c3QpOgorICAgICAgICAoV2ViR1BVOjpTYW1wbGVyOjppc0NvbXBhcmlzb24gY29uc3QpOgorICAg
ICAgICAqIFdlYkdQVS9TYW1wbGVyLm1tOgorICAgICAgICAoV2ViR1BVOjp2YWxpZGF0ZUNyZWF0
ZVNhbXBsZXIpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVNhbXBsZXIpOgorICAg
ICAgICAqIFdlYkdQVS9UZXh0dXJlLmg6CisgICAgICAgICogV2ViR1BVL1RleHR1cmUubW06Cisg
ICAgICAgIChXZWJHUFU6OmlzQ29tcHJlc3NlZEZvcm1hdCk6CisgICAgICAgIChXZWJHUFU6OlRl
eHR1cmU6OmlzRGVwdGhPclN0ZW5jaWxGb3JtYXQpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJl
Ojp0ZXhlbEJsb2NrV2lkdGgpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjp0ZXhlbEJsb2Nr
SGVpZ2h0KToKKyAgICAgICAgKFdlYkdQVTo6aXNSZW5kZXJhYmxlRm9ybWF0KToKKyAgICAgICAg
KFdlYkdQVTo6c3VwcG9ydHNNdWx0aXNhbXBsaW5nKToKKyAgICAgICAgKFdlYkdQVTo6bWF4aW11
bU1pcGxldmVsQ291bnQpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OnZhbGlkYXRlQ3JlYXRl
VGV4dHVyZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlVGV4dHVyZSk6CisgICAg
ICAgIChXZWJHUFU6OlRleHR1cmU6OnJlc29sdmVUZXh0dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0
cyBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OmFycmF5TGF5ZXJDb3VudCBjb25z
dCk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OnZhbGlkYXRlQ3JlYXRlVmlldyBjb25zdCk6
CisgICAgICAgIChXZWJHUFU6OmNvbXB1dGVSZW5kZXJFeHRlbnQpOgorICAgICAgICAoV2ViR1BV
OjpUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZTo6bG9naWNh
bE1pcGxldmVsU3BlY2lmaWNUZXh0dXJlRXh0ZW50KToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVy
ZTo6cGh5c2ljYWxNaXBsZXZlbFNwZWNpZmljVGV4dHVyZUV4dGVudCk6CisgICAgICAgIChXZWJH
UFU6OmltYWdlQ29weVRleHR1cmVTdWJyZXNvdXJjZVNpemUpOgorICAgICAgICAoV2ViR1BVOjpU
ZXh0dXJlOjp2YWxpZGF0ZUltYWdlQ29weVRleHR1cmUpOgorICAgICAgICAoV2ViR1BVOjpUZXh0
dXJlOjp2YWxpZGF0ZVRleHR1cmVDb3B5UmFuZ2UpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJl
Ojp2YWxpZGF0ZUxpbmVhclRleHR1cmVEYXRhKToKKwogMjAyMi0wNC0wMyAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEltcGxlbWVu
dCBUZXh0dXJlIHZpZXcgZm9ybWF0IGNvbXBhdGliaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0J1ZmZlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLmgKaW5k
ZXggNzc5YjgzMWE5YThkLi4zMWUxMjAyN2Q3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5oCkBAIC02
NiwxMSArNjYsMTEgQEAgcHVibGljOgogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIvI2J1ZmZlci1zdGF0ZQogICAgIC8vIEVhY2ggR1BVQnVmZmVyIGhhcyBhIGN1cnJlbnQg
YnVmZmVyIHN0YXRlIG9uIHRoZSBDb250ZW50IHRpbWVsaW5lIHdoaWNoIGlzIG9uZSBvZiB0aGUg
Zm9sbG93aW5nOgogICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsKLSAgICAgICAgTWFw
cGVkLCAvLyAid2hlcmUgdGhlIEdQVUJ1ZmZlciBpcyBhdmFpbGFibGUgZm9yIENQVSBvcGVyYXRp
b25zIG9uIGl0cyBjb250ZW50LiIKLSAgICAgICAgTWFwcGVkQXRDcmVhdGlvbiwgLy8gIndoZXJl
IHRoZSBHUFVCdWZmZXIgd2FzIGp1c3QgY3JlYXRlZCBhbmQgaXMgYXZhaWxhYmxlIGZvciBDUFUg
b3BlcmF0aW9ucyBvbiBpdHMgY29udGVudC4iCi0gICAgICAgIE1hcHBpbmdQZW5kaW5nLCAvLyAi
d2hlcmUgdGhlIEdQVUJ1ZmZlciBpcyBiZWluZyBtYWRlIGF2YWlsYWJsZSBmb3IgQ1BVIG9wZXJh
dGlvbnMgb24gaXRzIGNvbnRlbnQuIgotICAgICAgICBVbm1hcHBlZCwgLy8gIndoZXJlIHRoZSBH
UFVCdWZmZXIgaXMgYXZhaWxhYmxlIGZvciBHUFUgb3BlcmF0aW9ucy4iCi0gICAgICAgIERlc3Ry
b3llZCwgLy8gIndoZXJlIHRoZSBHUFVCdWZmZXIgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZSBmb3Ig
YW55IG9wZXJhdGlvbnMgZXhjZXB0IGRlc3Ryb3kuIgorICAgICAgICBNYXBwZWQsCisgICAgICAg
IE1hcHBlZEF0Q3JlYXRpb24sCisgICAgICAgIE1hcHBpbmdQZW5kaW5nLAorICAgICAgICBVbm1h
cHBlZCwKKyAgICAgICAgRGVzdHJveWVkLAogICAgIH07CiAKICAgICBpZDxNVExCdWZmZXI+IGJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CkBAIC04OCwxNSArODgsMTUgQEAgcHJp
dmF0ZToKICAgICBpZDxNVExCdWZmZXI+IG1fYnVmZmVyIHsgbmlsIH07CiAKICAgICAvLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNidWZmZXItaW50ZXJmYWNlCi0gICAgLy8gIkdQ
VUJ1ZmZlciBoYXMgdGhlIGZvbGxvd2luZyBpbnRlcm5hbCBzbG90czoiCi0gICAgY29uc3QgdWlu
dDY0X3QgbV9zaXplIHsgMCB9OyAvLyAiVGhlIGxlbmd0aCBvZiB0aGUgR1BVQnVmZmVyIGFsbG9j
YXRpb24gaW4gYnl0ZXMuIgotICAgIGNvbnN0IFdHUFVCdWZmZXJVc2FnZUZsYWdzIG1fdXNhZ2Ug
eyAwIH07IC8vICJUaGUgYWxsb3dlZCB1c2FnZXMgZm9yIHRoaXMgR1BVQnVmZmVyLiIKLSAgICBT
dGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlVubWFwcGVkIH07IC8vICJUaGUgY3VycmVudCBzdGF0ZSBv
ZiB0aGUgR1BVQnVmZmVyLiIKLSAgICAvLyAiW1ttYXBwaW5nXV0gb2YgdHlwZSBBcnJheUJ1ZmZl
ciBvciBQcm9taXNlIG9yIG51bGwuIiBUaGlzIGlzIHVubmVjZXNzYXJ5OyB3ZSBjYW4ganVzdCB1
c2UgbV9kZXZpY2UuY29udGVudHMuCi0gICAgTWFwcGluZ1JhbmdlIG1fbWFwcGluZ1JhbmdlIHsg
MCwgMCB9OyAvLyAiW1ttYXBwaW5nX3JhbmdlXV0gb2YgdHlwZSBsaXN0PHVuc2lnbmVkIGxvbmcg
bG9uZz4gb3IgbnVsbC4iCisKKyAgICBjb25zdCB1aW50NjRfdCBtX3NpemUgeyAwIH07CisgICAg
Y29uc3QgV0dQVUJ1ZmZlclVzYWdlRmxhZ3MgbV91c2FnZSB7IDAgfTsKKyAgICBTdGF0ZSBtX3N0
YXRlIHsgU3RhdGU6OlVubWFwcGVkIH07CisgICAgLy8gW1ttYXBwaW5nXV0gaXMgdW5uZWNlc3Nh
cnk7IHdlIGNhbiBqdXN0IHVzZSBtX2RldmljZS5jb250ZW50cy4KKyAgICBNYXBwaW5nUmFuZ2Ug
bV9tYXBwaW5nUmFuZ2UgeyAwLCAwIH07CiAgICAgdXNpbmcgTWFwcGVkUmFuZ2VzID0gUmFuZ2VT
ZXQ8UmFuZ2U8c2l6ZV90Pj47Ci0gICAgTWFwcGVkUmFuZ2VzIG1fbWFwcGVkUmFuZ2VzOyAvLyAi
W1ttYXBwZWRfcmFuZ2VzXV0gb2YgdHlwZSBsaXN0PEFycmF5QnVmZmVyPiBvciBudWxsLiIKLSAg
ICBXR1BVTWFwTW9kZUZsYWdzIG1fbWFwTW9kZSB7IFdHUFVNYXBNb2RlX05vbmUgfTsgLy8gIlRo
ZSBHUFVNYXBNb2RlRmxhZ3Mgb2YgdGhlIGxhc3QgY2FsbCB0byBtYXBBc3luYygpIChpZiBhbnkp
LiIKKyAgICBNYXBwZWRSYW5nZXMgbV9tYXBwZWRSYW5nZXM7CisgICAgV0dQVU1hcE1vZGVGbGFn
cyBtX21hcE1vZGUgeyBXR1BVTWFwTW9kZV9Ob25lIH07CiAKICAgICBjb25zdCBSZWY8RGV2aWNl
PiBtX2RldmljZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIu
bW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KaW5kZXggMDlmNzI4ZDk1YWE0Li5k
MDAwMTQxMDQ4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KQEAgLTQyLDcgKzQyLDYgQEAgc3Rh
dGljIGJvb2wgdmFsaWRhdGVEZXNjcmlwdG9yKGNvbnN0IERldmljZSYgZGV2aWNlLCBjb25zdCBX
R1BVQnVmZmVyRGVzY3JpcHRvciYKIAogICAgIC8vIEZJWE1FOiAiSWYgYW55IG9mIHRoZSBiaXRz
IG9mIGRlc2NyaXB0b3LigJlzIHVzYWdlIGFyZW7igJl0IHByZXNlbnQgaW4gdGhpcyBkZXZpY2Xi
gJlzIFtbYWxsb3dlZCBidWZmZXIgdXNhZ2VzXV0gcmV0dXJuIGZhbHNlLiIKIAotICAgIC8vICJJ
ZiBib3RoIHRoZSBNQVBfUkVBRCBhbmQgTUFQX1dSSVRFIGJpdHMgb2YgZGVzY3JpcHRvcuKAmXMg
dXNhZ2UgYXR0cmlidXRlIGFyZSBzZXQsIHJldHVybiBmYWxzZS4iCiAgICAgaWYgKChkZXNjcmlw
dG9yLnVzYWdlICYgV0dQVUJ1ZmZlclVzYWdlX01hcFJlYWQpICYmIChkZXNjcmlwdG9yLnVzYWdl
ICYgV0dQVUJ1ZmZlclVzYWdlX01hcFdyaXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC01MywyNyArNTIsMjIgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVDcmVhdGVCdWZmZXIoY29uc3Qg
RGV2aWNlJiBkZXZpY2UsIGNvbnN0IFdHUFVCdWZmZXJEZXNjcmlwdG8KIHsKICAgICAvLyBGSVhN
RTogInRoaXMgaXMgYSB2YWxpZCBHUFVEZXZpY2UuIgogCi0gICAgLy8gInZhbGlkYXRpbmcgR1BV
QnVmZmVyRGVzY3JpcHRvcih0aGlzLCBkZXNjcmlwdG9yKSByZXR1cm5zIHRydWUuIgogICAgIGlm
ICghdmFsaWRhdGVEZXNjcmlwdG9yKGRldmljZSwgZGVzY3JpcHRvcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIC8vICJkZXNjcmlwdG9yLnVzYWdlIG11c3Qgbm90IGJlIDAuIgogICAg
IGlmICghZGVzY3JpcHRvci51c2FnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
RklYTUU6ICJkZXNjcmlwdG9yLnVzYWdlIGlzIGEgc3Vic2V0IG9mIHRoaXMuW1thbGxvd2VkIGJ1
ZmZlciB1c2FnZXNdXS4iCiAKLSAgICAvLyAiSWYgZGVzY3JpcHRvci51c2FnZSBjb250YWlucyBN
QVBfUkVBRDogZGVzY3JpcHRvci51c2FnZSBjb250YWlucyBubyBvdGhlciBmbGFncyBleGNlcHQg
Q09QWV9EU1QuIgogICAgIGlmICgoZGVzY3JpcHRvci51c2FnZSAmIFdHUFVCdWZmZXJVc2FnZV9N
YXBSZWFkKQogICAgICAgICAmJiAoZGVzY3JpcHRvci51c2FnZSAmIH5XR1BVQnVmZmVyVXNhZ2Vf
Q29weURzdCAmIH5XR1BVQnVmZmVyVXNhZ2VfTWFwUmVhZCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIC8vICJJZiBkZXNjcmlwdG9yLnVzYWdlIGNvbnRhaW5zIE1BUF9XUklURTogZGVz
Y3JpcHRvci51c2FnZSBjb250YWlucyBubyBvdGhlciBmbGFncyBleGNlcHQgQ09QWV9TUkMuIgog
ICAgIGlmICgoZGVzY3JpcHRvci51c2FnZSAmIFdHUFVCdWZmZXJVc2FnZV9NYXBXcml0ZSkKICAg
ICAgICAgJiYgKGRlc2NyaXB0b3IudXNhZ2UgJiB+V0dQVUJ1ZmZlclVzYWdlX0NvcHlTcmMgJiB+
V0dQVUJ1ZmZlclVzYWdlX01hcFdyaXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ly8gIklmIGRlc2NyaXB0b3IubWFwcGVkQXRDcmVhdGlvbiBpcyB0cnVlOiBkZXNjcmlwdG9yLnNp
emUgaXMgYSBtdWx0aXBsZSBvZiA0LiIKICAgICBpZiAoZGVzY3JpcHRvci5tYXBwZWRBdENyZWF0
aW9uICYmIChkZXNjcmlwdG9yLnNpemUgJSA0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC0xMTIsNyArMTA2LDYgQEAgUmVmUHRyPEJ1ZmZlcj4gRGV2aWNlOjpjcmVhdGVCdWZmZXIoY29u
c3QgV0dQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiAKICAgICAvLyBodHRwczovL2dw
dXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGV2aWNlLWNyZWF0ZWJ1ZmZlcgogCi0gICAg
Ly8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkLCBy
ZXR1cm4gYW4gZXJyb3IgYnVmZmVyIGFuZCBzdG9wLiIKICAgICBpZiAoIXZhbGlkYXRlQ3JlYXRl
QnVmZmVyKCp0aGlzLCBkZXNjcmlwdG9yKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAg
LTEyNSwyOSArMTE4LDkgQEAgUmVmUHRyPEJ1ZmZlcj4gRGV2aWNlOjpjcmVhdGVCdWZmZXIoY29u
c3QgV0dQVUJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiAKICAgICBidWZmZXIubGFiZWwg
PSBmcm9tQVBJKGRlc2NyaXB0b3IubGFiZWwpOwogCi0gICAgLy8gRklYTUU6IEhhbmRsZSBkZXNj
cmlwdG9yLm1hcHBlZEF0Q3JlYXRpb24uCi0gICAgLy8gQmVjYXVzZSBub24tbWFwcGFibGUgYnVm
ZmVycyBjYW4gYmUgbWFwcGVkIGF0IGNyZWF0aW9uLAotICAgIC8vIHRoaXMgbWVhbnMgd2UgaGF2
ZSB0byBoYXZlIGEgdGVtcG9yYXJ5IGJ1ZmZlciBtYXBwZWQsCi0gICAgLy8gYW5kIHdlIGNhbiB0
byBzY2hlZHVsZSBhIGNvcHkgY29tbWFuZCB3aGVuIGl0IGdldHMgdW5tYXBwZWQsCi0gICAgLy8g
cHJlc3VtYWJseSBhdCBmaXJzdCB1c2UuCi0KLSAgICAvLyAiTGV0IGIgYmUgYSBuZXcgR1BVQnVm
ZmVyIG9iamVjdC4iCi0gICAgLy8gIlNldCBiLltbc2l6ZV1dIHRvIGRlc2NyaXB0b3Iuc2l6ZS4i
Ci0gICAgLy8gIlNldCBiLltbdXNhZ2VdXSB0byBkZXNjcmlwdG9yLnVzYWdlLiIKLQotICAgIC8v
ICJJZiBkZXNjcmlwdG9yLm1hcHBlZEF0Q3JlYXRpb24gaXMgdHJ1ZToiCi0gICAgaWYgKGRlc2Ny
aXB0b3IubWFwcGVkQXRDcmVhdGlvbikgewotICAgICAgICAvLyAiU2V0IGIuW1ttYXBwaW5nXV0g
dG8gYSBuZXcgQXJyYXlCdWZmZXIgb2Ygc2l6ZSBiLltbc2l6ZV1dLiIgVGhpcyBpcyB1bm5lY2Vz
c2FyeS4KLSAgICAgICAgLy8gIlNldCBiLltbbWFwcGluZ19yYW5nZV1dIHRvIFswLCBkZXNjcmlw
dG9yLnNpemVdLiIKLSAgICAgICAgLy8gIlNldCBiLltbbWFwcGVkX3Jhbmdlc11dIHRvIFtdLiIK
LSAgICAgICAgLy8gIlNldCBiLltbc3RhdGVdXSB0byBtYXBwZWQgYXQgY3JlYXRpb24uIgorICAg
IGlmIChkZXNjcmlwdG9yLm1hcHBlZEF0Q3JlYXRpb24pCiAgICAgICAgIHJldHVybiBCdWZmZXI6
OmNyZWF0ZShidWZmZXIsIGRlc2NyaXB0b3Iuc2l6ZSwgZGVzY3JpcHRvci51c2FnZSwgQnVmZmVy
OjpTdGF0ZTo6TWFwcGVkQXRDcmVhdGlvbiwgeyBzdGF0aWNfY2FzdDxzaXplX3Q+KDApLCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGRlc2NyaXB0b3Iuc2l6ZSkgfSwgKnRoaXMpOwotICAgIH0KIAotICAg
IC8vICJTZXQgYi5bW21hcHBpbmddXSB0byBudWxsLiIgVGhpcyBpcyB1bm5lY2Vzc2FyeS4KLSAg
ICAvLyAiU2V0IGIuW1ttYXBwaW5nX3JhbmdlXV0gdG8gbnVsbC4iCi0gICAgLy8gIlNldCBiLltb
bWFwcGVkX3Jhbmdlc11dIHRvIG51bGwuIgotICAgIC8vICJTZXQgYi5bW3N0YXRlXV0gdG8gdW5t
YXBwZWQuIgogICAgIHJldHVybiBCdWZmZXI6OmNyZWF0ZShidWZmZXIsIGRlc2NyaXB0b3Iuc2l6
ZSwgZGVzY3JpcHRvci51c2FnZSwgQnVmZmVyOjpTdGF0ZTo6VW5tYXBwZWQsIHsgc3RhdGljX2Nh
c3Q8c2l6ZV90PigwKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PigwKSB9LCAqdGhpcyk7CiB9CiAKQEAg
LTE2NywxMyArMTQwLDExIEBAIHZvaWQgQnVmZmVyOjpkZXN0cm95KCkKIHsKICAgICAvLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1YnVmZmVyLWRlc3Ryb3kKIAotICAg
IC8vICJJZiB0aGUgdGhpcy5bW3N0YXRlXV0gaXMgbm90IGVpdGhlciBvZiB1bm1hcHBlZCBvciBk
ZXN0cm95ZWQ6IFJ1biB0aGUgc3RlcHMgdG8gdW5tYXAgdGhpcy4iCiAgICAgaWYgKG1fc3RhdGUg
IT0gU3RhdGU6OlVubWFwcGVkICYmIG1fc3RhdGUgIT0gU3RhdGU6OkRlc3Ryb3llZCkgewogICAg
ICAgICAvLyBGSVhNRTogQVNTRVJUKCkgdGhhdCB0aGlzIGNhbGwgZG9lc24ndCBmYWlsLgogICAg
ICAgICB1bm1hcCgpOwogICAgIH0KIAotICAgIC8vICJTZXQgdGhpcy5bW3N0YXRlXV0gdG8gZGVz
dHJveWVkLiIKICAgICBtX3N0YXRlID0gU3RhdGU6OkRlc3Ryb3llZDsKIAogICAgIG1fYnVmZmVy
ID0gbmlsOwpAQCAtMTg2LDI5ICsxNTcsMjMgQEAgY29uc3Qgdm9pZCogQnVmZmVyOjpnZXRDb25z
dE1hcHBlZFJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKQogCiBib29sIEJ1ZmZlcjo6
dmFsaWRhdGVHZXRNYXBwZWRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgcmFuZ2VTaXplKSBj
b25zdAogewotICAgIC8vICJ0aGlzLltbc3RhdGVdXSBpcyBtYXBwZWQgb3IgbWFwcGVkIGF0IGNy
ZWF0aW9uLiIKICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6TWFwcGVkICYmIG1fc3RhdGUgIT0g
U3RhdGU6Ok1hcHBlZEF0Q3JlYXRpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8v
ICJvZmZzZXQgaXMgYSBtdWx0aXBsZSBvZiA4LiIKICAgICBpZiAob2Zmc2V0ICUgOCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gInJhbmdlU2l6ZSBpcyBhIG11bHRpcGxlIG9mIDQu
IgogICAgIGlmIChyYW5nZVNpemUgJSA0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAv
LyAib2Zmc2V0IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGlzLltbbWFwcGluZ19yYW5n
ZV1dWzBdLiIKICAgICBpZiAob2Zmc2V0IDwgbV9tYXBwaW5nUmFuZ2UuYmVnaW5PZmZzZXQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJvZmZzZXQgKyByYW5nZVNpemUgaXMgbGVz
cyB0aGFuIG9yIGVxdWFsIHRvIHRoaXMuW1ttYXBwaW5nX3JhbmdlXV1bMV0uIgogICAgIC8vIEZJ
WE1FOiBVc2VkIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICBhdXRvIGVuZE9mZnNldCA9IG9mZnNl
dCArIHJhbmdlU2l6ZTsKICAgICBpZiAoZW5kT2Zmc2V0ID4gbV9tYXBwaW5nUmFuZ2UuZW5kT2Zm
c2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAiW29mZnNldCwgb2Zmc2V0ICsg
cmFuZ2VTaXplKSBkb2VzIG5vdCBvdmVybGFwIGFub3RoZXIgcmFuZ2UgaW4gdGhpcy5bW21hcHBl
ZF9yYW5nZXNdXS4iCiAgICAgaWYgKG1fbWFwcGVkUmFuZ2VzLm92ZXJsYXBzKHsgb2Zmc2V0LCBl
bmRPZmZzZXQgfSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjE5LDI1ICsxODQsMTkg
QEAgdm9pZCogQnVmZmVyOjpnZXRNYXBwZWRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6
ZSkKIHsKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1YnVm
ZmVyLWdldG1hcHBlZHJhbmdlCiAKLSAgICAvLyAiSWYgc2l6ZSBpcyBtaXNzaW5nOiBMZXQgcmFu
Z2VTaXplIGJlIG1heCgwLCB0aGlzLltbc2l6ZV1dIC0gb2Zmc2V0KS4iCiAgICAgLy8gRklYTUU6
IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCiAgICAgYXV0byByYW5nZVNpemUgPSBzaXplOwogICAg
IGlmIChzaXplID09IFdHUFVfV0hPTEVfTUFQX1NJWkUpCiAgICAgICAgIHJhbmdlU2l6ZSA9IHN0
YXRpY19jYXN0PHNpemVfdD4oc3RkOjptYXgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDApLCBtX3Np
emUgLSBzdGF0aWNfY2FzdDx1aW50NjRfdD4ob2Zmc2V0KSkpOwogCi0gICAgLy8gIklmIGFueSBv
ZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFs
aWRhdGVHZXRNYXBwZWRSYW5nZShvZmZzZXQsIHJhbmdlU2l6ZSkpIHsKICAgICAgICAgLy8gRklY
TUU6ICJ0aHJvdyBhbiBPcGVyYXRpb25FcnJvciBhbmQgc3RvcC4iCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIC8vICJMZXQgbSBiZSBhIG5ldyBBcnJheUJ1ZmZlciBvZiBz
aXplIHJhbmdlU2l6ZSBwb2ludGluZyBhdCB0aGUgY29udGVudCBvZiB0aGlzLltbbWFwcGluZ11d
IGF0IG9mZnNldCBvZmZzZXQgLSB0aGlzLltbbWFwcGluZ19yYW5nZV1dWzBdLiIKLQotICAgIC8v
ICJBcHBlbmQgbSB0byB0aGlzLltbbWFwcGVkX3Jhbmdlc11dLiIKICAgICBtX21hcHBlZFJhbmdl
cy5hZGQoeyBvZmZzZXQsIG9mZnNldCArIHJhbmdlU2l6ZSB9KTsKICAgICBtX21hcHBlZFJhbmdl
cy5jb21wYWN0KCk7CiAKLSAgICAvLyAiUmV0dXJuIG0uIgogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjaGFyKj4obV9idWZmZXIuY29udGVudHMpICsgb2Zmc2V0OwogfQogCkBAIC0yNDUsMzMgKzIw
NCwyNiBAQCBib29sIEJ1ZmZlcjo6dmFsaWRhdGVNYXBBc3luYyhXR1BVTWFwTW9kZUZsYWdzIG1v
ZGUsIHNpemVfdCBvZmZzZXQsIHNpemVfdCByYW5nZQogewogICAgIC8vIEZJWE1FOiAidGhpcyBp
cyBhIHZhbGlkIEdQVUJ1ZmZlci4gVE9ETzogY2hlY2sgZGVzdHJveWVkIHN0YXRlPyIKIAotICAg
IC8vICJvZmZzZXQgaXMgYSBtdWx0aXBsZSBvZiA4LiIKICAgICBpZiAob2Zmc2V0ICUgOCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gInJhbmdlU2l6ZSBpcyBhIG11bHRpcGxlIG9m
IDQuIgogICAgIGlmIChyYW5nZVNpemUgJSA0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAvLyAib2Zmc2V0ICsgcmFuZ2VTaXplIGlzIGxlc3Mgb3IgZXF1YWwgdG8gdGhpcy5bW3NpemVd
XSIKICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICBpZiAoc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG9mZnNldCArIHJhbmdlU2l6ZSkgPiBtX3NpemUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIC8vICJ0aGlzLltbc3RhdGVdXSBpcyB1bm1hcHBlZCIKICAgICBp
ZiAobV9zdGF0ZSAhPSBTdGF0ZTo6VW5tYXBwZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIC8vICJtb2RlIGNvbnRhaW5zIGV4YWN0bHkgb25lIG9mIFJFQUQgb3IgV1JJVEUuIgogICAg
IGF1dG8gcmVhZFdyaXRlTW9kZUZsYWdzID0gbW9kZSAmIChXR1BVTWFwTW9kZV9SZWFkIHwgV0dQ
VU1hcE1vZGVfV3JpdGUpOwogICAgIGlmIChyZWFkV3JpdGVNb2RlRmxhZ3MgIT0gV0dQVU1hcE1v
ZGVfUmVhZCAmJiByZWFkV3JpdGVNb2RlRmxhZ3MgIT0gV0dQVU1hcE1vZGVfV3JpdGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJJZiBtb2RlIGNvbnRhaW5zIFJFQUQgdGhlbiB0
aGlzLltbdXNhZ2VdXSBtdXN0IGNvbnRhaW4gTUFQX1JFQUQuIgogICAgIGlmICgobW9kZSAmIFdH
UFVNYXBNb2RlX1JlYWQpICYmICEobV91c2FnZSAmIFdHUFVCdWZmZXJVc2FnZV9NYXBSZWFkKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gIklmIG1vZGUgY29udGFpbnMgV1JJVEUg
dGhlbiB0aGlzLltbdXNhZ2VdXSBtdXN0IGNvbnRhaW4gTUFQX1dSSVRFLiIKICAgICBpZiAoKG1v
ZGUgJiBXR1BVTWFwTW9kZV9Xcml0ZSkgJiYgIShtX3VzYWdlICYgV0dQVUJ1ZmZlclVzYWdlX01h
cFdyaXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yODIsNTEgKzIzNCwzMSBAQCB2
b2lkIEJ1ZmZlcjo6bWFwQXN5bmMoV0dQVU1hcE1vZGVGbGFncyBtb2RlLCBzaXplX3Qgb2Zmc2V0
LCBzaXplX3Qgc2l6ZSwgQ29tcGxldAogewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5p
by9ncHV3ZWIvI2RvbS1ncHVidWZmZXItbWFwYXN5bmMKIAotICAgIC8vICJJZiBzaXplIGlzIG1p
c3Npbmc6IExldCByYW5nZVNpemUgYmUgbWF4KDAsIHRoaXMuW1tzaXplXV0gLSBvZmZzZXQpLiIK
ICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICBhdXRvIHJhbmdlU2l6
ZSA9IHNpemU7CiAgICAgaWYgKHNpemUgPT0gV0dQVV9XSE9MRV9NQVBfU0laRSkKICAgICAgICAg
cmFuZ2VTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGQ6Om1heChzdGF0aWNfY2FzdDx1aW50
NjRfdD4oMCksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3NpemUgLSBvZmZzZXQpKSk7CiAKLSAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQ6
IgogICAgIGlmICghdmFsaWRhdGVNYXBBc3luYyhtb2RlLCBvZmZzZXQsIHJhbmdlU2l6ZSkpIHsK
LSAgICAgICAgLy8gIlJlY29yZCBhIHZhbGlkYXRpb24gZXJyb3Igb24gdGhlIGN1cnJlbnQgc2Nv
cGUuIgogICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIl9zKTsKIAotICAgICAgICAvLyAiUmV0dXJuIGEgcHJvbWlzZSByZWplY3Rl
ZCB3aXRoIGFuIE9wZXJhdGlvbkVycm9yIG9uIHRoZSBEZXZpY2UgdGltZWxpbmUuIgogICAgICAg
ICBjYWxsYmFjayhXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXNfRXJyb3IpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgLy8gIlNldCB0aGlzLltbbWFwcGluZ11dIHRvIHAuIgotCi0gICAg
Ly8gIlNldCB0aGlzLltbc3RhdGVdXSB0byBtYXBwaW5nIHBlbmRpbmcuIgogICAgIG1fc3RhdGUg
PSBTdGF0ZTo6TWFwcGluZ1BlbmRpbmc7CiAKLSAgICAvLyAiU2V0IHRoaXMuW1ttYXBfbW9kZV1d
IHRvIG1vZGUuIgogICAgIG1fbWFwTW9kZSA9IG1vZGU7CiAKLSAgICAvLyAiRW5xdWV1ZSBhbiBv
cGVyYXRpb24gb24gdGhlIGRlZmF1bHQgcXVldWXigJlzIFF1ZXVlIHRpbWVsaW5lIHRoYXQgd2ls
bCBleGVjdXRlIHRoZSBmb2xsb3dpbmc6IgogICAgIG1fZGV2aWNlLT5nZXRRdWV1ZSgpLm9uU3Vi
bWl0dGVkV29ya0RvbmUoMCwgW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvZmZzZXQs
IHJhbmdlU2l6ZSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQVVF1ZXVlV29ya0Rv
bmVTdGF0dXMgc3RhdHVzKSBtdXRhYmxlIHsKLSAgICAgICAgLy8gIklmIHRoaXMuW1tzdGF0ZV1d
IGlzIG1hcHBpbmcgcGVuZGluZzoiCiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3N0YXRl
ID09IFN0YXRlOjpNYXBwaW5nUGVuZGluZykgewotICAgICAgICAgICAgLy8gIkxldCBtIGJlIGEg
bmV3IEFycmF5QnVmZmVyIG9mIHNpemUgcmFuZ2VTaXplLiIKLQotICAgICAgICAgICAgLy8gIlNl
dCB0aGUgY29udGVudCBvZiBtIHRvIHRoZSBjb250ZW50IG9mIHRoaXPigJlzIGFsbG9jYXRpb24g
c3RhcnRpbmcgYXQgb2Zmc2V0IG9mZnNldCBhbmQgZm9yIHJhbmdlU2l6ZSBieXRlcy4iCi0KLSAg
ICAgICAgICAgIC8vICJTZXQgdGhpcy5bW21hcHBpbmddXSB0byBtLiIKLQotICAgICAgICAgICAg
Ly8gIlNldCB0aGlzLltbc3RhdGVdXSB0byBtYXBwZWQuIgogICAgICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+bV9zdGF0ZSA9IFN0YXRlOjpNYXBwZWQ7CiAKLSAgICAgICAgICAgIC8vICJTZXQgdGhp
cy5bW21hcHBpbmdfcmFuZ2VdXSB0byBbb2Zmc2V0LCBvZmZzZXQgKyByYW5nZVNpemVdLiIKICAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fbWFwcGluZ1JhbmdlID0geyBvZmZzZXQsIG9mZnNl
dCArIHJhbmdlU2l6ZSB9OwogCi0gICAgICAgICAgICAvLyAiU2V0IHRoaXMuW1ttYXBwZWRfcmFu
Z2VzXV0gdG8gW10uIgogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9tYXBwZWRSYW5nZXMg
PSBNYXBwZWRSYW5nZXMoKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vICJSZXNvbHZlIHAuIgog
ICAgICAgICBzd2l0Y2ggKHN0YXR1cykgewogICAgICAgICBjYXNlIFdHUFVRdWV1ZVdvcmtEb25l
U3RhdHVzX1N1Y2Nlc3M6CiAgICAgICAgICAgICBjYWxsYmFjayhXR1BVQnVmZmVyTWFwQXN5bmNT
dGF0dXNfU3VjY2Vzcyk7CkBAIC0zNTAsNyArMjgyLDYgQEAgdm9pZCBCdWZmZXI6Om1hcEFzeW5j
KFdHUFVNYXBNb2RlRmxhZ3MgbW9kZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIENvbXBs
ZXQKIAogYm9vbCBCdWZmZXI6OnZhbGlkYXRlVW5tYXAoKSBjb25zdAogewotICAgIC8vICJ0aGlz
Lltbc3RhdGVdXSBtdXN0IGJlIG1hcHBlZCBhdCBjcmVhdGlvbiwgbWFwcGluZyBwZW5kaW5nLCBv
ciBtYXBwZWQuIgogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpNYXBwZWRBdENyZWF0aW9uCiAg
ICAgICAgICYmIG1fc3RhdGUgIT0gU3RhdGU6Ok1hcHBpbmdQZW5kaW5nCiAgICAgICAgICYmIG1f
c3RhdGUgIT0gU3RhdGU6Ok1hcHBlZCkKQEAgLTM2MywzNSArMjk0LDE0IEBAIHZvaWQgQnVmZmVy
Ojp1bm1hcCgpCiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9t
LWdwdWJ1ZmZlci11bm1hcAogCi0gICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIHJlcXVp
cmVtZW50cyBhcmUgdW5tZXQiCiAgICAgaWYgKCF2YWxpZGF0ZVVubWFwKCkpIHsKLSAgICAgICAg
Ly8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCiAgICAgICAgIG1fZGV2
aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gIklmIHRoaXMuW1tzdGF0ZV1dIGlzIG1h
cHBpbmcgcGVuZGluZzoiCi0gICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6Ok1hcHBpbmdQZW5kaW5n
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiAiUmVqZWN0IFtbbWFwcGluZ11dIHdpdGggYW4gQWJvcnRF
cnJvci4iCisgICAgLy8gRklYTUU6ICJJZiB0aGlzLltbc3RhdGVdXSBpcyBtYXBwaW5nIHBlbmRp
bmc6IFJlamVjdCBbW21hcHBpbmddXSB3aXRoIGFuIEFib3J0RXJyb3IuIgogCi0gICAgICAgIC8v
ICJTZXQgdGhpcy5bW21hcHBpbmddXSB0byBudWxsLiIKLSAgICB9Ci0KLSAgICAvLyAiSWYgdGhp
cy5bW3N0YXRlXV0gaXMgbWFwcGVkIG9yIG1hcHBlZCBhdCBjcmVhdGlvbjoiCi0gICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6Ok1hcHBlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpNYXBwZWRBdENyZWF0
aW9uKSB7Ci0gICAgICAgIC8vICJJZiBvbmUgb2YgdGhlIHR3byBmb2xsb3dpbmcgY29uZGl0aW9u
cyBob2xkczoiCi0gICAgICAgIC8vICJ0aGlzLltbc3RhdGVdXSBpcyBtYXBwZWQgYXQgY3JlYXRp
b24iCi0gICAgICAgIC8vICJ0aGlzLltbc3RhdGVdXSBpcyBtYXBwZWQgYW5kIHRoaXMuW1ttYXBf
bW9kZV1dIGNvbnRhaW5zIFdSSVRFIgotICAgICAgICAvLyAiRW5xdWV1ZSBhbiBvcGVyYXRpb24g
b24gdGhlIGRlZmF1bHQgcXVldWXigJlzIFF1ZXVlIHRpbWVsaW5lIHRoYXQgdXBkYXRlcyB0aGUg
dGhpcy5bW21hcHBpbmdfcmFuZ2VdXSBvZiB0aGlz4oCZcyBhbGxvY2F0aW9uIHRvIHRoZSBjb250
ZW50IG9mIHRoaXMuW1ttYXBwaW5nXV0uIgotCi0gICAgICAgIC8vICJEZXRhY2ggZWFjaCBBcnJh
eUJ1ZmZlciBpbiB0aGlzLltbbWFwcGVkX3Jhbmdlc11dIGZyb20gaXRzIGNvbnRlbnQuIgotCi0g
ICAgICAgIC8vICJTZXQgdGhpcy5bW21hcHBpbmddXSB0byBudWxsLiIKLQotICAgICAgICAvLyAi
U2V0IHRoaXMuW1ttYXBwaW5nX3JhbmdlXV0gdG8gbnVsbC4iCi0KLSAgICAgICAgLy8gIlNldCB0
aGlzLltbbWFwcGVkX3Jhbmdlc11dIHRvIG51bGwuIgotICAgIH0KKyAgICAvLyBGSVhNRTogSGFu
ZGxlIGFycmF5IGJ1ZmZlciBkZXRhY2hpbmcuCiAKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpNYXBwZWRBdENyZWF0
aW9uICYmIG1fYnVmZmVyLnN0b3JhZ2VNb2RlID09IE1UTFN0b3JhZ2VNb2RlTWFuYWdlZCkgewpA
QCAtNDAwLDcgKzMxMCw2IEBAIHZvaWQgQnVmZmVyOjp1bm1hcCgpCiAgICAgfQogI2VuZGlmCiAK
LSAgICAvLyAiU2V0IHRoaXMuW1tzdGF0ZV1dIHRvIHVubWFwcGVkLiIKICAgICBtX3N0YXRlID0g
U3RhdGU6OlVubWFwcGVkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1t
CmluZGV4IGZlZDkyNTcyZDhkYy4uYjZiNzUwM2M4YmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kRW5jb2Rlci5tbQpAQCAtOTgsMjMgKzk4LDE4IEBAIHN0YXRpYyBib29sIHZhbGlkYXRl
Q29weUJ1ZmZlclRvQnVmZmVyKGNvbnN0IEJ1ZmZlciYgc291cmNlLCB1aW50NjRfdCBzb3VyY2VP
ZmZzCiAKICAgICAvLyBGSVhNRTogImRlc3RpbmF0aW9uIGlzIHZhbGlkIHRvIHVzZSB3aXRoIHRo
aXMuIgogCi0gICAgLy8gInNvdXJjZS5bW3VzYWdlXV0gY29udGFpbnMgQ09QWV9TUkMuIgogICAg
IGlmICghKHNvdXJjZS51c2FnZSgpICYgV0dQVUJ1ZmZlclVzYWdlX0NvcHlTcmMpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAiZGVzdGluYXRpb24uW1t1c2FnZV1dIGNvbnRhaW5z
IENPUFlfRFNULiIKICAgICBpZiAoIShkZXN0aW5hdGlvbi51c2FnZSgpICYgV0dQVUJ1ZmZlclVz
YWdlX0NvcHlEc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAic2l6ZSBpcyBh
IG11bHRpcGxlIG9mIDQuIgogICAgIGlmIChzaXplICUgNCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgLy8gInNvdXJjZU9mZnNldCBpcyBhIG11bHRpcGxlIG9mIDQuIgogICAgIGlmIChz
b3VyY2VPZmZzZXQgJSA0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAiZGVzdGlu
YXRpb25PZmZzZXQgaXMgYSBtdWx0aXBsZSBvZiA0LiIKICAgICBpZiAoZGVzdGluYXRpb25PZmZz
ZXQgJSA0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE0MywxMyArMTM4LDEwIEBAIHZv
aWQgQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb0J1ZmZlcihjb25zdCBCdWZmZXImIHNvdXJj
ZSwgdWludDY0X3Qgc291cmNlT2ZmCiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlv
L2dwdXdlYi8jZG9tLWdwdWNvbW1hbmRlbmNvZGVyLWNvcHlidWZmZXJ0b2J1ZmZlcgogCi0gICAg
Ly8gIlByZXBhcmUgdGhlIGVuY29kZXIgc3RhdGUgb2YgdGhpcy4gSWYgaXQgcmV0dXJucyBmYWxz
ZSwgc3RvcC4iCiAgICAgaWYgKCFwcmVwYXJlVGhlRW5jb2RlclN0YXRlKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1
bnNhdGlzZmllZAogICAgIGlmICghdmFsaWRhdGVDb3B5QnVmZmVyVG9CdWZmZXIoc291cmNlLCBz
b3VyY2VPZmZzZXQsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbk9mZnNldCwgc2l6ZSkpIHsKLSAg
ICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCiAgICAgICAg
IG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4i
X3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTY1LDcgKzE1Nyw2IEBAIHN0YXRpYyBi
b29sIHZhbGlkYXRlSW1hZ2VDb3B5QnVmZmVyKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXImIGlt
YWdlQ29weUJ1ZmZlcikKIAogICAgIC8vIEZJWE1FOiAiaW1hZ2VDb3B5QnVmZmVyLmJ1ZmZlciBt
dXN0IGJlIGEgdmFsaWQgR1BVQnVmZmVyLiIKIAotICAgIC8vICJpbWFnZUNvcHlCdWZmZXIuYnl0
ZXNQZXJSb3cgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDI1Ni4iCiAgICAgaWYgKGltYWdlQ29weUJ1
ZmZlci5sYXlvdXQuYnl0ZXNQZXJSb3cgJSAyNTYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtMTg5LDY2ICsxODAsNDkgQEAgc3RhdGljIGJvb2wgcmVmZXJzVG9BbGxBc3BlY3RzKFdHUFVU
ZXh0dXJlRm9ybWF0IGZvcm1hdCwgV0dQVVRleHR1cmVBc3BlY3QgYXNwZWMKIAogc3RhdGljIGJv
b2wgdmFsaWRhdGVDb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXIm
IHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIGRlc3RpbmF0aW9uLCBjb25zdCBX
R1BVRXh0ZW50M0QmIGNvcHlTaXplKQogewotICAgIC8vICJMZXQgZHN0VGV4dHVyZURlc2MgYmUg
ZGVzdGluYXRpb24udGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS4iCiAgICAgY29uc3QgYXV0byYgZHN0
VGV4dHVyZURlc2MgPSBmcm9tQVBJKGRlc3RpbmF0aW9uLnRleHR1cmUpLmRlc2NyaXB0b3IoKTsK
IAotICAgIC8vICJ2YWxpZGF0aW5nIEdQVUltYWdlQ29weUJ1ZmZlcihzb3VyY2UpIHJldHVybnMg
dHJ1ZS4iCiAgICAgaWYgKCF2YWxpZGF0ZUltYWdlQ29weUJ1ZmZlcihzb3VyY2UpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAic291cmNlLmJ1ZmZlci5bW3VzYWdlXV0gY29udGFp
bnMgQ09QWV9TUkMuIgogICAgIGlmICghKGZyb21BUEkoc291cmNlLmJ1ZmZlcikudXNhZ2UoKSAm
IFdHUFVCdWZmZXJVc2FnZV9Db3B5U3JjKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ly8gInZhbGlkYXRpbmcgR1BVSW1hZ2VDb3B5VGV4dHVyZShkZXN0aW5hdGlvbiwgY29weVNpemUp
IHJldHVybnMgdHJ1ZS4iCiAgICAgaWYgKCFUZXh0dXJlOjp2YWxpZGF0ZUltYWdlQ29weVRleHR1
cmUoZGVzdGluYXRpb24sIGNvcHlTaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ly8gImRzdFRleHR1cmVEZXNjLnVzYWdlIGNvbnRhaW5zIENPUFlfRFNULiIKICAgICBpZiAoIShk
c3RUZXh0dXJlRGVzYy51c2FnZSAmIFdHUFVUZXh0dXJlVXNhZ2VfQ29weURzdCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIC8vICJkc3RUZXh0dXJlRGVzYy5zYW1wbGVDb3VudCBpcyAx
LiIKICAgICBpZiAoZHN0VGV4dHVyZURlc2Muc2FtcGxlQ291bnQgIT0gMSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgLy8gIkxldCBhc3BlY3RTcGVjaWZpY0Zvcm1hdCA9IGRzdFRleHR1
cmVEZXNjLmZvcm1hdC4iCiAgICAgV0dQVVRleHR1cmVGb3JtYXQgYXNwZWN0U3BlY2lmaWNGb3Jt
YXQgPSBkc3RUZXh0dXJlRGVzYy5mb3JtYXQ7CiAKLSAgICAvLyAiSWYgZHN0VGV4dHVyZURlc2Mu
Zm9ybWF0IGlzIGEgZGVwdGgtb3Itc3RlbmNpbCBmb3JtYXQ6IgogICAgIGlmIChUZXh0dXJlOjpp
c0RlcHRoT3JTdGVuY2lsRm9ybWF0KGRzdFRleHR1cmVEZXNjLmZvcm1hdCkpIHsKLSAgICAgICAg
Ly8gImRlc3RpbmF0aW9uLmFzcGVjdCBtdXN0IHJlZmVyIHRvIGEgc2luZ2xlIGFzcGVjdCBvZiBk
c3RUZXh0dXJlRGVzYy5mb3JtYXQiCiAgICAgICAgIGlmICghVGV4dHVyZTo6cmVmZXJzVG9TaW5n
bGVBc3BlY3QoZHN0VGV4dHVyZURlc2MuZm9ybWF0LCBkZXN0aW5hdGlvbi5hc3BlY3QpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIC8vICJUaGF0IGFzcGVjdCBtdXN0IGJl
IGEgdmFsaWQgaW1hZ2UgY29weSBkZXN0aW5hdGlvbiBhY2NvcmRpbmcgdG8gwqcgMjUuMS4yIERl
cHRoLXN0ZW5jaWwgZm9ybWF0cy4iCiAgICAgICAgIGlmICghVGV4dHVyZTo6aXNWYWxpZEltYWdl
Q29weURlc3RpbmF0aW9uKGRzdFRleHR1cmVEZXNjLmZvcm1hdCwgZGVzdGluYXRpb24uYXNwZWN0
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyAiU2V0IGFzcGVjdFNw
ZWNpZmljRm9ybWF0IHRvIHRoZSBhc3BlY3Qtc3BlY2lmaWMgZm9ybWF0IGFjY29yZGluZyB0byDC
p+KArzI1LjEuMiBEZXB0aC1zdGVuY2lsIGZvcm1hdHMuIgogICAgICAgICBhc3BlY3RTcGVjaWZp
Y0Zvcm1hdCA9IFRleHR1cmU6OmFzcGVjdFNwZWNpZmljRm9ybWF0KGRzdFRleHR1cmVEZXNjLmZv
cm1hdCwgZGVzdGluYXRpb24uYXNwZWN0KTsKICAgICB9CiAKLSAgICAvLyAidmFsaWRhdGluZyB0
ZXh0dXJlIGNvcHkgcmFuZ2UoZGVzdGluYXRpb24sIGNvcHlTaXplKSByZXR1cm4gdHJ1ZS4iCiAg
ICAgaWYgKCFUZXh0dXJlOjp2YWxpZGF0ZVRleHR1cmVDb3B5UmFuZ2UoZGVzdGluYXRpb24sIGNv
cHlTaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gIklmIGRzdFRleHR1cmVE
ZXNjLmZvcm1hdCBpcyBub3QgYSBkZXB0aC1vci1zdGVuY2lsIGZvcm1hdDoiCiAgICAgaWYgKCFU
ZXh0dXJlOjppc0RlcHRoT3JTdGVuY2lsRm9ybWF0KGRzdFRleHR1cmVEZXNjLmZvcm1hdCkpIHsK
LSAgICAgICAgLy8gInNvdXJjZS5vZmZzZXQgaXMgYSBtdWx0aXBsZSBvZiB0aGUgdGV4ZWwgYmxv
Y2sgc2l6ZSBvZiBkc3RUZXh0dXJlRGVzYy5mb3JtYXQuIgogICAgICAgICBhdXRvIHRleGVsQmxv
Y2tTaXplID0gVGV4dHVyZTo6dGV4ZWxCbG9ja1NpemUoZHN0VGV4dHVyZURlc2MuZm9ybWF0KTsK
ICAgICAgICAgaWYgKHNvdXJjZS5sYXlvdXQub2Zmc2V0ICUgdGV4ZWxCbG9ja1NpemUpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gIklmIGRzdFRleHR1cmVEZXNj
LmZvcm1hdCBpcyBhIGRlcHRoLW9yLXN0ZW5jaWwgZm9ybWF0OiIKICAgICBpZiAoVGV4dHVyZTo6
aXNEZXB0aE9yU3RlbmNpbEZvcm1hdChkc3RUZXh0dXJlRGVzYy5mb3JtYXQpKSB7Ci0gICAgICAg
IC8vICJzb3VyY2Uub2Zmc2V0IGlzIGEgbXVsdGlwbGUgb2YgNC4iCiAgICAgICAgIGlmIChzb3Vy
Y2UubGF5b3V0Lm9mZnNldCAlIDQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgLy8gInZhbGlkYXRpbmcgbGluZWFyIHRleHR1cmUgZGF0YShzb3VyY2UsIHNvdXJjZS5i
dWZmZXIuW1tzaXplXV0sIGFzcGVjdFNwZWNpZmljRm9ybWF0LCBjb3B5U2l6ZSkgc3VjY2VlZHMu
IgogICAgIGlmICghVGV4dHVyZTo6dmFsaWRhdGVMaW5lYXJUZXh0dXJlRGF0YShzb3VyY2UubGF5
b3V0LCBmcm9tQVBJKHNvdXJjZS5idWZmZXIpLnNpemUoKSwgYXNwZWN0U3BlY2lmaWNGb3JtYXQs
IGNvcHlTaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yNjIsMTMgKzIzNiwxMCBA
QCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFn
ZUNvcHlCdWZmZXImIHNvdXJjZSwgY29ucwogCiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYi8jZG9tLWdwdWNvbW1hbmRlbmNvZGVyLWNvcHlidWZmZXJ0b3RleHR1cmUKIAot
ICAgIC8vICJQcmVwYXJlIHRoZSBlbmNvZGVyIHN0YXRlIG9mIHRoaXMuIElmIGl0IHJldHVybnMg
ZmFsc2UsIHN0b3AuIgogICAgIGlmICghcHJlcGFyZVRoZUVuY29kZXJTdGF0ZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291
cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7Ci0gICAgICAgIC8vICJnZW5lcmF0ZSBhIHZh
bGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgogICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFs
aWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0zNzQsNjYgKzM0NSw0OSBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVy
VG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXImIHNvdXJjZSwgY29ucwogCiBzdGF0
aWMgYm9vbCB2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29weVRl
eHR1cmUmIHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciYgZGVzdGluYXRpb24sIGNv
bnN0IFdHUFVFeHRlbnQzRCYgY29weVNpemUpCiB7Ci0gICAgLy8gIkxldCBzcmNUZXh0dXJlRGVz
YyBiZSBzb3VyY2UudGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS4iCiAgICAgY29uc3QgYXV0byYgc3Jj
VGV4dHVyZURlc2MgPSBmcm9tQVBJKHNvdXJjZS50ZXh0dXJlKS5kZXNjcmlwdG9yKCk7CiAKLSAg
ICAvLyAidmFsaWRhdGluZyBHUFVJbWFnZUNvcHlUZXh0dXJlKHNvdXJjZSwgY29weVNpemUpIHJl
dHVybnMgdHJ1ZS4iCiAgICAgaWYgKCFUZXh0dXJlOjp2YWxpZGF0ZUltYWdlQ29weVRleHR1cmUo
c291cmNlLCBjb3B5U2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJzcmNU
ZXh0dXJlRGVzYy51c2FnZSBjb250YWlucyBDT1BZX1NSQy4iCiAgICAgaWYgKCEoc3JjVGV4dHVy
ZURlc2MudXNhZ2UgJiBXR1BVQnVmZmVyVXNhZ2VfQ29weVNyYykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIC8vICJzcmNUZXh0dXJlRGVzYy5zYW1wbGVDb3VudCBpcyAxLiIKICAgICBp
ZiAoc3JjVGV4dHVyZURlc2Muc2FtcGxlQ291bnQgIT0gMSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgLy8gIkxldCBhc3BlY3RTcGVjaWZpY0Zvcm1hdCA9IGRzdFRleHR1cmVEZXNjLmZv
cm1hdC4iCiAgICAgV0dQVVRleHR1cmVGb3JtYXQgYXNwZWN0U3BlY2lmaWNGb3JtYXQgPSBzcmNU
ZXh0dXJlRGVzYy5mb3JtYXQ7CiAKLSAgICAvLyAiSWYgc3JjVGV4dHVyZURlc2MuZm9ybWF0IGlz
IGEgZGVwdGgtc3RlbmNpbCBmb3JtYXQ6IgogICAgIGlmIChUZXh0dXJlOjppc0RlcHRoT3JTdGVu
Y2lsRm9ybWF0KHNyY1RleHR1cmVEZXNjLmZvcm1hdCkpIHsKLSAgICAgICAgLy8gInNvdXJjZS5h
c3BlY3QgbXVzdCByZWZlciB0byBhIHNpbmdsZSBhc3BlY3Qgb2Ygc3JjVGV4dHVyZURlc2MuZm9y
bWF0IgogICAgICAgICBpZiAoIVRleHR1cmU6OnJlZmVyc1RvU2luZ2xlQXNwZWN0KHNyY1RleHR1
cmVEZXNjLmZvcm1hdCwgc291cmNlLmFzcGVjdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgLy8gImFuZCB0aGF0IGFzcGVjdCBtdXN0IGJlIGEgdmFsaWQgaW1hZ2UgY29w
eSBzb3VyY2UgYWNjb3JkaW5nIHRvIMKnIDI1LjEuMiBEZXB0aC1zdGVuY2lsIGZvcm1hdHMuIgog
ICAgICAgICBpZiAoIVRleHR1cmU6OmlzVmFsaWRJbWFnZUNvcHlTb3VyY2Uoc3JjVGV4dHVyZURl
c2MuZm9ybWF0LCBzb3VyY2UuYXNwZWN0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICAvLyAiU2V0IGFzcGVjdFNwZWNpZmljRm9ybWF0IHRvIHRoZSBhc3BlY3Qtc3BlY2lm
aWMgZm9ybWF0IGFjY29yZGluZyB0byDCp+KArzI1LjEuMiBEZXB0aC1zdGVuY2lsIGZvcm1hdHMu
IgogICAgICAgICBhc3BlY3RTcGVjaWZpY0Zvcm1hdCA9IFRleHR1cmU6OmFzcGVjdFNwZWNpZmlj
Rm9ybWF0KHNyY1RleHR1cmVEZXNjLmZvcm1hdCwgc291cmNlLmFzcGVjdCk7CiAgICAgfQogCi0g
ICAgLy8gInZhbGlkYXRpbmcgR1BVSW1hZ2VDb3B5QnVmZmVyKGRlc3RpbmF0aW9uKSByZXR1cm5z
IHRydWUuIgogICAgIGlmICghdmFsaWRhdGVJbWFnZUNvcHlCdWZmZXIoZGVzdGluYXRpb24pKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAiZGVzdGluYXRpb24uYnVmZmVyLltbdXNh
Z2VdXSBjb250YWlucyBDT1BZX0RTVC4iCiAgICAgaWYgKCEoZnJvbUFQSShkZXN0aW5hdGlvbi5i
dWZmZXIpLnVzYWdlKCkgJiBXR1BVQnVmZmVyVXNhZ2VfQ29weURzdCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIC8vICJ2YWxpZGF0aW5nIHRleHR1cmUgY29weSByYW5nZShzb3VyY2Us
IGNvcHlTaXplKSByZXR1cm5zIHRydWUuIgogICAgIGlmICghVGV4dHVyZTo6dmFsaWRhdGVUZXh0
dXJlQ29weVJhbmdlKHNvdXJjZSwgY29weVNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAvLyAiSWYgc3JjVGV4dHVyZURlc2MuZm9ybWF0IGlzIG5vdCBhIGRlcHRoLW9yLXN0ZW5j
aWwgZm9ybWF0OiIKICAgICBpZiAoIVRleHR1cmU6OmlzRGVwdGhPclN0ZW5jaWxGb3JtYXQoc3Jj
VGV4dHVyZURlc2MuZm9ybWF0KSkgewotICAgICAgICAvLyAiZGVzdGluYXRpb24ub2Zmc2V0IGlz
IGEgbXVsdGlwbGUgb2YgdGhlIHRleGVsIGJsb2NrIHNpemUgb2Ygc3JjVGV4dHVyZURlc2MuZm9y
bWF0LiIKICAgICAgICAgYXV0byB0ZXhlbEJsb2NrU2l6ZSA9IFRleHR1cmU6OnRleGVsQmxvY2tT
aXplKHNyY1RleHR1cmVEZXNjLmZvcm1hdCk7CiAgICAgICAgIGlmIChkZXN0aW5hdGlvbi5sYXlv
dXQub2Zmc2V0ICUgdGV4ZWxCbG9ja1NpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgLy8gIklmIHNyY1RleHR1cmVEZXNjLmZvcm1hdCBpcyBhIGRlcHRoLW9yLXN0
ZW5jaWwgZm9ybWF0OiIKICAgICBpZiAoVGV4dHVyZTo6aXNEZXB0aE9yU3RlbmNpbEZvcm1hdChz
cmNUZXh0dXJlRGVzYy5mb3JtYXQpKSB7Ci0gICAgICAgIC8vICJkZXN0aW5hdGlvbi5vZmZzZXQg
aXMgYSBtdWx0aXBsZSBvZiA0LiIKICAgICAgICAgaWYgKGRlc3RpbmF0aW9uLmxheW91dC5vZmZz
ZXQgJSA0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vICJ2YWxp
ZGF0aW5nIGxpbmVhciB0ZXh0dXJlIGRhdGEoZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uLmJ1ZmZl
ci5bW3NpemVdXSwgYXNwZWN0U3BlY2lmaWNGb3JtYXQsIGNvcHlTaXplKSBzdWNjZWVkcy4iCiAg
ICAgaWYgKCFUZXh0dXJlOjp2YWxpZGF0ZUxpbmVhclRleHR1cmVEYXRhKGRlc3RpbmF0aW9uLmxh
eW91dCwgZnJvbUFQSShkZXN0aW5hdGlvbi5idWZmZXIpLnNpemUoKSwgYXNwZWN0U3BlY2lmaWNG
b3JtYXQsIGNvcHlTaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00NDcsMTMgKzQw
MSwxMCBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKGNvbnN0IFdH
UFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvbgogCiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIu
Z2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWNvbW1hbmRlbmNvZGVyLWNvcHl0ZXh0dXJldG9idWZm
ZXIKIAotICAgIC8vICJQcmVwYXJlIHRoZSBlbmNvZGVyIHN0YXRlIG9mIHRoaXMuIElmIGl0IHJl
dHVybnMgZmFsc2UsIHN0b3AuIgogICAgIGlmICghcHJlcGFyZVRoZUVuY29kZXJTdGF0ZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZm
ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7Ci0gICAgICAgIC8vICJnZW5lcmF0
ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgogICAgICAgICBtX2RldmljZS0+Z2VuZXJh
dGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC01NjEsNzQgKzUxMiw1NiBAQCBzdGF0aWMgYm9vbCBhcmVDb3B5Q29tcGF0
aWJsZShXR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQxLCBXR1BVVGV4dHVyZUZvcm1hdCBmb3JtYQog
ewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2NvcHktY29tcGF0aWJs
ZQogCi0gICAgLy8gImZvcm1hdDEgZXF1YWxzIGZvcm1hdDIiCiAgICAgaWYgKGZvcm1hdDEgPT0g
Zm9ybWF0MikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAvLyAiZm9ybWF0MSBhbmQgZm9y
bWF0MiBkaWZmZXIgb25seSBpbiB3aGV0aGVyIHRoZXkgYXJlIHNyZ2IgZm9ybWF0cyAoaGF2ZSB0
aGUgLXNyZ2Igc3VmZml4KS4iCiAgICAgcmV0dXJuIFRleHR1cmU6OnJlbW92ZVNSR0JTdWZmaXgo
Zm9ybWF0MSkgPT0gVGV4dHVyZTo6cmVtb3ZlU1JHQlN1ZmZpeChmb3JtYXQyKTsKIH0KIAogc3Rh
dGljIGJvb2wgdmFsaWRhdGVDb3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5
VGV4dHVyZSYgc291cmNlLCBjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24s
IGNvbnN0IFdHUFVFeHRlbnQzRCYgY29weVNpemUpCiB7Ci0gICAgLy8gIkxldCBzcmNUZXh0dXJl
RGVzYyBiZSBzb3VyY2UudGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS4iCiAgICAgY29uc3QgYXV0byYg
c3JjVGV4dHVyZURlc2MgPSBmcm9tQVBJKHNvdXJjZS50ZXh0dXJlKS5kZXNjcmlwdG9yKCk7CiAK
LSAgICAvLyAiTGV0IGRzdFRleHR1cmVEZXNjIGJlIGRlc3RpbmF0aW9uLnRleHR1cmUuW1tkZXNj
cmlwdG9yXV0uIgogICAgIGNvbnN0IGF1dG8mIGRzdFRleHR1cmVEZXNjID0gZnJvbUFQSShkZXN0
aW5hdGlvbi50ZXh0dXJlKS5kZXNjcmlwdG9yKCk7CiAKLSAgICAvLyAidmFsaWRhdGluZyBHUFVJ
bWFnZUNvcHlUZXh0dXJlKHNvdXJjZSwgY29weVNpemUpIHJldHVybnMgdHJ1ZS4iCiAgICAgaWYg
KCFUZXh0dXJlOjp2YWxpZGF0ZUltYWdlQ29weVRleHR1cmUoc291cmNlLCBjb3B5U2l6ZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJzcmNUZXh0dXJlRGVzYy51c2FnZSBjb250
YWlucyBDT1BZX1NSQy4iCiAgICAgaWYgKCEoc3JjVGV4dHVyZURlc2MudXNhZ2UgJiBXR1BVVGV4
dHVyZVVzYWdlX0NvcHlTcmMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAidmFs
aWRhdGluZyBHUFVJbWFnZUNvcHlUZXh0dXJlKGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkgcmV0dXJu
cyB0cnVlLiIKICAgICBpZiAoIVRleHR1cmU6OnZhbGlkYXRlSW1hZ2VDb3B5VGV4dHVyZShkZXN0
aW5hdGlvbiwgY29weVNpemUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAiZHN0
VGV4dHVyZURlc2MudXNhZ2UgY29udGFpbnMgQ09QWV9EU1QuIgogICAgIGlmICghKGRzdFRleHR1
cmVEZXNjLnVzYWdlICYgV0dQVVRleHR1cmVVc2FnZV9Db3B5RHN0KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgLy8gInNyY1RleHR1cmVEZXNjLnNhbXBsZUNvdW50IGlzIGVxdWFsIHRv
IGRzdFRleHR1cmVEZXNjLnNhbXBsZUNvdW50LiIKICAgICBpZiAoc3JjVGV4dHVyZURlc2Muc2Ft
cGxlQ291bnQgIT0gZHN0VGV4dHVyZURlc2Muc2FtcGxlQ291bnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIC8vICJzcmNUZXh0dXJlRGVzYy5mb3JtYXQgYW5kIGRzdFRleHR1cmVEZXNj
LmZvcm1hdCBtdXN0IGJlIGNvcHktY29tcGF0aWJsZS4iCiAgICAgaWYgKCFhcmVDb3B5Q29tcGF0
aWJsZShzcmNUZXh0dXJlRGVzYy5mb3JtYXQsIGRzdFRleHR1cmVEZXNjLmZvcm1hdCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJJZiBzcmNUZXh0dXJlRGVzYy5mb3JtYXQgaXMg
YSBkZXB0aC1zdGVuY2lsIGZvcm1hdDoiCiAgICAgaWYgKFRleHR1cmU6OmlzRGVwdGhPclN0ZW5j
aWxGb3JtYXQoc3JjVGV4dHVyZURlc2MuZm9ybWF0KSkgewotICAgICAgICAvLyAic291cmNlLmFz
cGVjdCBhbmQgZGVzdGluYXRpb24uYXNwZWN0IG11c3QgYm90aCByZWZlciB0byBhbGwgYXNwZWN0
cyBvZiBzcmNUZXh0dXJlRGVzYy5mb3JtYXQgYW5kIGRzdFRleHR1cmVEZXNjLmZvcm1hdCwgcmVz
cGVjdGl2ZWx5LiIKICAgICAgICAgaWYgKCFyZWZlcnNUb0FsbEFzcGVjdHMoc3JjVGV4dHVyZURl
c2MuZm9ybWF0LCBzb3VyY2UuYXNwZWN0KQogICAgICAgICAgICAgfHwgIXJlZmVyc1RvQWxsQXNw
ZWN0cyhkc3RUZXh0dXJlRGVzYy5mb3JtYXQsIGRlc3RpbmF0aW9uLmFzcGVjdCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gInZhbGlkYXRpbmcgdGV4dHVyZSBj
b3B5IHJhbmdlKHNvdXJjZSwgY29weVNpemUpIHJldHVybnMgdHJ1ZS4iCiAgICAgaWYgKCFUZXh0
dXJlOjp2YWxpZGF0ZVRleHR1cmVDb3B5UmFuZ2Uoc291cmNlLCBjb3B5U2l6ZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIC8vICJ2YWxpZGF0aW5nIHRleHR1cmUgY29weSByYW5nZShk
ZXN0aW5hdGlvbiwgY29weVNpemUpIHJldHVybnMgdHJ1ZS4iCiAgICAgaWYgKCFUZXh0dXJlOjp2
YWxpZGF0ZVRleHR1cmVDb3B5UmFuZ2UoZGVzdGluYXRpb24sIGNvcHlTaXplKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgLy8gIlRoZSBzZXQgb2Ygc3VicmVzb3VyY2VzIGZvciB0ZXh0
dXJlIGNvcHkoc291cmNlLCBjb3B5U2l6ZSkgYW5kIHRoZSBzZXQgb2Ygc3VicmVzb3VyY2VzIGZv
ciB0ZXh0dXJlIGNvcHkoZGVzdGluYXRpb24sIGNvcHlTaXplKSBpcyBkaXNqb2ludC4iCiAgICAg
Ly8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jYWJzdHJhY3Qtb3BkZWYtc2V0LW9m
LXN1YnJlc291cmNlcy1mb3ItdGV4dHVyZS1jb3B5CiAgICAgaWYgKHNvdXJjZS50ZXh0dXJlID09
IGRlc3RpbmF0aW9uLnRleHR1cmUpIHsKICAgICAgICAgLy8gTWlwIGxldmVscyBhcmUgbmV2ZXIg
cmFuZ2VzLgogICAgICAgICBpZiAoc291cmNlLm1pcExldmVsID09IGRlc3RpbmF0aW9uLm1pcExl
dmVsKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGZyb21BUEkoc291cmNlLnRleHR1cmUpLmRlc2Ny
aXB0b3IoKS5kaW1lbnNpb24pIHsKICAgICAgICAgICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNp
b25fMUQ6Ci0gICAgICAgICAgICAgICAgLy8gIlRoZSBzdWJyZXNvdXJjZSBvZiBpbWFnZUNvcHlU
ZXh0dXJlLnRleHR1cmUgYXQgbWlwbWFwIGxldmVsIGltYWdlQ29weVRleHR1cmUubWlwTGV2ZWwu
IgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGNhc2UgV0dQVVRl
eHR1cmVEaW1lbnNpb25fMkQ6IHsKLSAgICAgICAgICAgICAgICAvLyAiRm9yIGVhY2ggYXJyYXlM
YXllciBvZiB0aGUgY29weVNpemUuZGVwdGhPckFycmF5TGF5ZXJzIGFycmF5IGxheWVycyBzdGFy
dGluZyBhdCBpbWFnZUNvcHlUZXh0dXJlLm9yaWdpbi56OiIKLSAgICAgICAgICAgICAgICAvLyAi
VGhlIHN1YnJlc291cmNlIG9mIGltYWdlQ29weVRleHR1cmUudGV4dHVyZSBhdCBtaXBtYXAgbGV2
ZWwgaW1hZ2VDb3B5VGV4dHVyZS5taXBMZXZlbCBhbmQgYXJyYXkgbGF5ZXIgYXJyYXlMYXllci4i
CiAgICAgICAgICAgICAgICAgUmFuZ2U8dWludDMyX3Q+IHNvdXJjZVJhbmdlKHNvdXJjZS5vcmln
aW4ueiwgc291cmNlLm9yaWdpbi56ICsgY29weVNpemUuZGVwdGhPckFycmF5TGF5ZXJzKTsKICAg
ICAgICAgICAgICAgICBSYW5nZTx1aW50MzJfdD4gZGVzdGluYXRpb25SYW5nZShkZXN0aW5hdGlv
bi5vcmlnaW4ueiwgc291cmNlLm9yaWdpbi56ICsgY29weVNpemUuZGVwdGhPckFycmF5TGF5ZXJz
KTsKICAgICAgICAgICAgICAgICBpZiAoc291cmNlUmFuZ2Uub3ZlcmxhcHMoZGVzdGluYXRpb25S
YW5nZSkpCkBAIC02MzYsNyArNTY5LDYgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVDb3B5VGV4dHVy
ZVRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgV0dQVVRl
eHR1cmVEaW1lbnNpb25fM0Q6Ci0gICAgICAgICAgICAgICAgLy8gIlRoZSBzdWJyZXNvdXJjZSBv
ZiBpbWFnZUNvcHlUZXh0dXJlLnRleHR1cmUgYXQgbWlwbWFwIGxldmVsIGltYWdlQ29weVRleHR1
cmUubWlwTGV2ZWwuIgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fRm9yY2UzMjoKICAgICAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY1NSwxMyArNTg3LDEwIEBAIHZvaWQgQ29tbWFuZEVuY29k
ZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3Vy
Y2UsIGNvCiAKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1
Y29tbWFuZGVuY29kZXItY29weXRleHR1cmV0b3RleHR1cmUKIAotICAgIC8vICJQcmVwYXJlIHRo
ZSBlbmNvZGVyIHN0YXRlIG9mIHRoaXMuIElmIGl0IHJldHVybnMgZmFsc2UsIHN0b3AuIgogICAg
IGlmICghcHJlcGFyZVRoZUVuY29kZXJTdGF0ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAv
LyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAg
ICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24s
IGNvcHlTaXplKSkgewotICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFu
ZCBzdG9wLiIKICAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFs
aWRhdGlvbiBmYWlsdXJlLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzQ0LDE5ICs2
NzMsMTUgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVDbGVhckJ1ZmZlcihjb25zdCBCdWZmZXImIGJ1
ZmZlciwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdAogewogICAgIC8vIEZJWE1FOiAiYnVmZmVy
IGlzIHZhbGlkIHRvIHVzZSB3aXRoIHRoaXMuIgogCi0gICAgLy8gImJ1ZmZlci5bW3VzYWdlXV0g
Y29udGFpbnMgQ09QWV9EU1QuIgogICAgIGlmICghKGJ1ZmZlci51c2FnZSgpICYgV0dQVUJ1ZmZl
clVzYWdlX0NvcHlEc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAic2l6ZSBp
cyBhIG11bHRpcGxlIG9mIDQuIgogICAgIGlmIChzaXplICUgNCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgLy8gIm9mZnNldCBpcyBhIG11bHRpcGxlIG9mIDQuIgogICAgIGlmIChvZmZz
ZXQgJSA0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAiYnVmZmVyLltbc2l6ZV1d
IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAob2Zmc2V0ICsgc2l6ZSkuIgogICAgIC8vIEZJ
WE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgogICAgIGlmIChidWZmZXIuc2l6ZSgpIDwgb2Zm
c2V0ICsgc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzY4LDE5ICs2OTMsMTUgQEAg
dm9pZCBDb21tYW5kRW5jb2Rlcjo6Y2xlYXJCdWZmZXIoY29uc3QgQnVmZmVyJiBidWZmZXIsIHVp
bnQ2NF90IG9mZnNldCwgdWludDY0X3QKIHsKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIu
aW8vZ3B1d2ViLyNkb20tZ3B1Y29tbWFuZGVuY29kZXItY2xlYXJidWZmZXIKIAotICAgIC8vICJQ
cmVwYXJlIHRoZSBlbmNvZGVyIHN0YXRlIG9mIHRoaXMuIElmIGl0IHJldHVybnMgZmFsc2UsIHN0
b3AuIgogICAgIGlmICghcHJlcGFyZVRoZUVuY29kZXJTdGF0ZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICAvLyAiSWYgc2l6ZSBpcyBtaXNzaW5nLCBzZXQgc2l6ZSB0byBtYXgoMCwgfGJ1ZmZl
cnwue3tHUFVCdWZmZXIvW1tzaXplXV19fSAtIHxvZmZzZXR8KS4iCiAgICAgaWYgKHNpemUgPT0g
V0dQVV9XSE9MRV9TSVpFKSB7CiAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1l
dGljLgogICAgICAgICBzaXplID0gYnVmZmVyLnNpemUoKSAtIG9mZnNldDsKICAgICB9CiAKLSAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNsZWFyQnVmZmVyKGJ1ZmZlciwgb2Zmc2V0LCBzaXplKSkgewot
ICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKICAgICAg
ICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJl
LiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03OTIsMTEgKzcxMyw4IEBAIHZvaWQg
Q29tbWFuZEVuY29kZXI6OmNsZWFyQnVmZmVyKGNvbnN0IEJ1ZmZlciYgYnVmZmVyLCB1aW50NjRf
dCBvZmZzZXQsIHVpbnQ2NF90CiAKIGJvb2wgQ29tbWFuZEVuY29kZXI6OnZhbGlkYXRlRmluaXNo
KCkgY29uc3QKIHsKLSAgICAvLyAiTGV0IHZhbGlkYXRpb25TdWNjZWVkZWQgYmUgdHJ1ZSBpZiBh
bGwgb2YgdGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHMgYXJlIG1ldCwgYW5kIGZhbHNlIG90aGVy
d2lzZS4iCi0KICAgICAvLyBGSVhNRTogInRoaXMgbXVzdCBiZSB2YWxpZC4iCiAKLSAgICAvLyAi
dGhpcy5bW3N0YXRlXV0gbXVzdCBiZSAib3BlbiIuIgogICAgIGlmIChtX3N0YXRlICE9IEVuY29k
ZXJTdGF0ZTo6T3BlbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04MTQsMTUgKzczMiwx
MSBAQCBSZWZQdHI8Q29tbWFuZEJ1ZmZlcj4gQ29tbWFuZEVuY29kZXI6OmZpbmlzaChjb25zdCBX
R1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3ImCiAKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRo
dWIuaW8vZ3B1d2ViLyNkb20tZ3B1Y29tbWFuZGVuY29kZXItZmluaXNoCiAKLSAgICAvLyAiTGV0
IHZhbGlkYXRpb25TdWNjZWVkZWQgYmUgdHJ1ZSBpZiBhbGwgb2YgdGhlIGZvbGxvd2luZyByZXF1
aXJlbWVudHMgYXJlIG1ldCwgYW5kIGZhbHNlIG90aGVyd2lzZS4iCiAgICAgYXV0byB2YWxpZGF0
aW9uRmFpbGVkID0gIXZhbGlkYXRlRmluaXNoKCk7CiAKLSAgICAvLyAiU2V0IHRoaXMuW1tzdGF0
ZV1dIHRvICJlbmRlZCIuIgogICAgIG1fc3RhdGUgPSBFbmNvZGVyU3RhdGU6OkVuZGVkOwogCi0g
ICAgLy8gIklmIHZhbGlkYXRpb25TdWNjZWVkZWQgaXMgZmFsc2UsIHRoZW46IgogICAgIGlmICh2
YWxpZGF0aW9uRmFpbGVkKSB7Ci0gICAgICAgIC8vICJHZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJy
b3IuIgogICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIl9zKTsKIAogICAgICAgICAvLyBGSVhNRTogIlJldHVybiBhIG5ldyBpbnZh
bGlkIEdQVUNvbW1hbmRCdWZmZXIuIgpAQCAtODMxLDcgKzc0NSw2IEBAIFJlZlB0cjxDb21tYW5k
QnVmZmVyPiBDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKGNvbnN0IFdHUFVDb21tYW5kQnVmZmVyRGVz
Y3JpcHRvciYKIAogICAgIGZpbmFsaXplQmxpdENvbW1hbmRFbmNvZGVyKCk7CiAKLSAgICAvLyAi
U2V0IGNvbW1hbmRCdWZmZXIuW1tjb21tYW5kX2xpc3RdXSB0byB0aGlzLltbY29tbWFuZHNdXS4i
CiAgICAgYXV0byAqY29tbWFuZEJ1ZmZlciA9IG1fY29tbWFuZEJ1ZmZlcjsKICAgICBtX2NvbW1h
bmRCdWZmZXIgPSBuaWw7CiAKQEAgLTg0NCw3ICs3NTcsNiBAQCB2b2lkIENvbW1hbmRFbmNvZGVy
OjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJMYWJlbCkKIHsKICAgICAvLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGVidWdjb21tYW5kc21peGluLWlu
c2VydGRlYnVnbWFya2VyCiAKLSAgICAvLyAiUHJlcGFyZSB0aGUgZW5jb2RlciBzdGF0ZSBvZiB0
aGlzLiBJZiBpdCByZXR1cm5zIGZhbHNlLCBzdG9wLiIKICAgICBpZiAoIXByZXBhcmVUaGVFbmNv
ZGVyU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC04NTcsNyArNzY5LDYgQEAgdm9pZCBD
b21tYW5kRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIoU3RyaW5nJiYgbWFya2VyTGFiZWwpCiAK
IGJvb2wgQ29tbWFuZEVuY29kZXI6OnZhbGlkYXRlUG9wRGVidWdHcm91cCgpIGNvbnN0CiB7Ci0g
ICAgLy8gInRoaXMuW1tkZWJ1Z19ncm91cF9zdGFja11dIG11c3Qgbm90IGJlIGVtcHR5LiIKICAg
ICBpZiAoIW1fZGVidWdHcm91cFN0YWNrU2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC04NjgsMTEgKzc3OSw5IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OnBvcERlYnVnR3JvdXAoKQog
ewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVkZWJ1Z2Nv
bW1hbmRzbWl4aW4tcG9wZGVidWdncm91cAogCi0gICAgLy8gIlByZXBhcmUgdGhlIGVuY29kZXIg
c3RhdGUgb2YgdGhpcy4gSWYgaXQgcmV0dXJucyBmYWxzZSwgc3RvcC4iCiAgICAgaWYgKCFwcmVw
YXJlVGhlRW5jb2RlclN0YXRlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vICJJZiBhbnkg
b2YgdGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHMgYXJlIHVubWV0IgogICAgIGlmICghdmFsaWRh
dGVQb3BEZWJ1Z0dyb3VwKCkpIHsKICAgICAgICAgLy8gRklYTUU6ICJtYWtlIHRoaXMgaW52YWxp
ZCwgYW5kIHN0b3AuIgogICAgICAgICByZXR1cm47CkBAIC04ODAsNyArNzg5LDYgQEAgdm9pZCBD
b21tYW5kRW5jb2Rlcjo6cG9wRGVidWdHcm91cCgpCiAKICAgICBmaW5hbGl6ZUJsaXRDb21tYW5k
RW5jb2RlcigpOwogCi0gICAgLy8gIlBvcCBhbiBlbnRyeSBvZmYgb2YgdGhpcy5bW2RlYnVnX2dy
b3VwX3N0YWNrXV0uIgogICAgIC0tbV9kZWJ1Z0dyb3VwU3RhY2tTaXplOwogICAgIFttX2NvbW1h
bmRCdWZmZXIgcG9wRGVidWdHcm91cF07CiB9CkBAIC04ODksMTMgKzc5NywxMSBAQCB2b2lkIENv
bW1hbmRFbmNvZGVyOjpwdXNoRGVidWdHcm91cChTdHJpbmcmJiBncm91cExhYmVsKQogewogICAg
IC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVkZWJ1Z2NvbW1hbmRz
bWl4aW4tcHVzaGRlYnVnZ3JvdXAKIAotICAgIC8vICJQcmVwYXJlIHRoZSBlbmNvZGVyIHN0YXRl
IG9mIHRoaXMuIElmIGl0IHJldHVybnMgZmFsc2UsIHN0b3AuIgogICAgIGlmICghcHJlcGFyZVRo
ZUVuY29kZXJTdGF0ZSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZmluYWxpemVCbGl0
Q29tbWFuZEVuY29kZXIoKTsKIAotICAgIC8vICJQdXNoIGdyb3VwTGFiZWwgb250byB0aGlzLltb
ZGVidWdfZ3JvdXBfc3RhY2tdXS4iCiAgICAgKyttX2RlYnVnR3JvdXBTdGFja1NpemU7CiAgICAg
W21fY29tbWFuZEJ1ZmZlciBwdXNoRGVidWdHcm91cDpncm91cExhYmVsXTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5tbSBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5tbQppbmRleCAwOWRjOWMzYjMyOGMuLjc5
NzNmMGRkMTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NF
bmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5t
bQpAQCAtNzIsNyArNzIsNiBAQCB2b2lkIENvbXB1dGVQYXNzRW5jb2Rlcjo6aW5zZXJ0RGVidWdN
YXJrZXIoU3RyaW5nJiYgbWFya2VyTGFiZWwpCiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0
aHViLmlvL2dwdXdlYi8jZG9tLWdwdWRlYnVnY29tbWFuZHNtaXhpbi1pbnNlcnRkZWJ1Z21hcmtl
cgogCi0gICAgLy8gIlByZXBhcmUgdGhlIGVuY29kZXIgc3RhdGUgb2YgdGhpcy4gSWYgaXQgcmV0
dXJucyBmYWxzZSwgc3RvcC4iCiAgICAgaWYgKCFwcmVwYXJlVGhlRW5jb2RlclN0YXRlKCkpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtODEsNyArODAsNiBAQCB2b2lkIENvbXB1dGVQYXNzRW5jb2Rl
cjo6aW5zZXJ0RGVidWdNYXJrZXIoU3RyaW5nJiYgbWFya2VyTGFiZWwpCiAKIGJvb2wgQ29tcHV0
ZVBhc3NFbmNvZGVyOjp2YWxpZGF0ZVBvcERlYnVnR3JvdXAoKSBjb25zdAogewotICAgIC8vICJ0
aGlzLltbZGVidWdfZ3JvdXBfc3RhY2tdXSBtdXN0IG5vdCBiZSBlbXB0eS4iCiAgICAgaWYgKCFt
X2RlYnVnR3JvdXBTdGFja1NpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtOTIsMTcg
KzkwLDE0IEBAIHZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKCkKIHsKICAg
ICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGVidWdjb21tYW5k
c21peGluLXBvcGRlYnVnZ3JvdXAKIAotICAgIC8vICJQcmVwYXJlIHRoZSBlbmNvZGVyIHN0YXRl
IG9mIHRoaXMuIElmIGl0IHJldHVybnMgZmFsc2UsIHN0b3AuIgogICAgIGlmICghcHJlcGFyZVRo
ZUVuY29kZXJTdGF0ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyAiSWYgYW55IG9mIHRo
ZSBmb2xsb3dpbmcgcmVxdWlyZW1lbnRzIGFyZSB1bm1ldCIKICAgICBpZiAoIXZhbGlkYXRlUG9w
RGVidWdHcm91cCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiAibWFrZSB0aGlzIGludmFsaWQsIGFu
ZCBzdG9wLiIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vICJQb3AgYW4gZW50cnkg
b2ZmIG9mIHRoaXMuW1tkZWJ1Z19ncm91cF9zdGFja11dLiIKICAgICAtLW1fZGVidWdHcm91cFN0
YWNrU2l6ZTsKICAgICBbbV9jb21wdXRlQ29tbWFuZEVuY29kZXIgcG9wRGVidWdHcm91cF07CiB9
CkBAIC0xMTEsMTEgKzEwNiw5IEBAIHZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVyOjpwdXNoRGVidWdH
cm91cChTdHJpbmcmJiBncm91cExhYmVsKQogewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1
Yi5pby9ncHV3ZWIvI2RvbS1ncHVkZWJ1Z2NvbW1hbmRzbWl4aW4tcHVzaGRlYnVnZ3JvdXAKIAot
ICAgIC8vICJQcmVwYXJlIHRoZSBlbmNvZGVyIHN0YXRlIG9mIHRoaXMuIElmIGl0IHJldHVybnMg
ZmFsc2UsIHN0b3AuIgogICAgIGlmICghcHJlcGFyZVRoZUVuY29kZXJTdGF0ZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICAvLyAiUHVzaCBncm91cExhYmVsIG9udG8gdGhpcy5bW2RlYnVnX2dy
b3VwX3N0YWNrXV0uIgogICAgICsrbV9kZWJ1Z0dyb3VwU3RhY2tTaXplOwogICAgIFttX2NvbXB1
dGVDb21tYW5kRW5jb2RlciBwdXNoRGVidWdHcm91cDpncm91cExhYmVsXTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
RGV2aWNlLmgKaW5kZXggZDhlNTljOGVkNDc2Li42MjZjNTY1YzQ1M2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Rl
dmljZS5oCkBAIC0xMTAsOCArMTEwLDggQEAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2U7CiAgICAgfTsKICAgICBzdHJ1Y3QgRXJyb3JTY29wZSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9u
YWw8RXJyb3I+IGVycm9yOyAvLyAiVGhlIGZpcnN0IEdQVUVycm9yLCBpZiBhbnksIG9ic2VydmVk
IHdoaWxlIHRoZSBHUFUgZXJyb3Igc2NvcGUgd2FzIGN1cnJlbnQuIgotICAgICAgICBjb25zdCBX
R1BVRXJyb3JGaWx0ZXIgZmlsdGVyOyAvLyBEZXRlcm1pbmVzIHdoYXQgdHlwZSBvZiBHUFVFcnJv
ciB0aGlzIEdQVSBlcnJvciBzY29wZSBvYnNlcnZlcy4KKyAgICAgICAgc3RkOjpvcHRpb25hbDxF
cnJvcj4gZXJyb3I7CisgICAgICAgIGNvbnN0IFdHUFVFcnJvckZpbHRlciBmaWx0ZXI7CiAgICAg
fTsKIAogICAgIGNvbnN0IGlkPE1UTERldmljZT4gbV9kZXZpY2UgeyBuaWwgfTsKQEAgLTExOSw3
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFJlZjxJbnN0YW5jZT4gbV9pbnN0YW5jZTsK
IAogICAgIEZ1bmN0aW9uPHZvaWQoV0dQVUVycm9yVHlwZSwgU3RyaW5nJiYpPiBtX3VuY2FwdHVy
ZWRFcnJvckNhbGxiYWNrOwotICAgIFZlY3RvcjxFcnJvclNjb3BlPiBtX2Vycm9yU2NvcGVTdGFj
azsgLy8gIkEgc3RhY2sgb2YgR1BVIGVycm9yIHNjb3BlcyB0aGF0IGhhdmUgYmVlbiBwdXNoZWQg
dG8gdGhlIEdQVURldmljZS4iCisgICAgVmVjdG9yPEVycm9yU2NvcGU+IG1fZXJyb3JTY29wZVN0
YWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9EZXZpY2UubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0KaW5k
ZXggZTkxZWQwNTYyZDYwLi42NDgzNjg4ZTBjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0RldmljZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0KQEAg
LTEwNiwxNSArMTA2LDEwIEBAIGF1dG8gRGV2aWNlOjpjdXJyZW50RXJyb3JTY29wZShXR1BVRXJy
b3JGaWx0ZXIgdHlwZSkgLT4gRXJyb3JTY29wZSoKIHsKICAgICAvLyBodHRwczovL2dwdXdlYi5n
aXRodWIuaW8vZ3B1d2ViLyNhYnN0cmFjdC1vcGRlZi1jdXJyZW50LWVycm9yLXNjb3BlCiAKLSAg
ICAvLyAiTGV0IHNjb3BlIGJlIHRoZSBsYXN0IGl0ZW0gb2YgZGV2aWNlLltbZXJyb3JTY29wZVN0
YWNrXV0uIgotICAgIC8vICJXaGlsZSBzY29wZSBpcyBub3QgdW5kZWZpbmVkOiIKICAgICBmb3Ig
KGF1dG8gaXRlcmF0b3IgPSBtX2Vycm9yU2NvcGVTdGFjay5yYmVnaW4oKTsgaXRlcmF0b3IgIT0g
bV9lcnJvclNjb3BlU3RhY2sucmVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgIC8vICJJZiBz
Y29wZS5bW2ZpbHRlcl1dIGlzIHR5cGUsIHJldHVybiBzY29wZS4iCiAgICAgICAgIGlmIChpdGVy
YXRvci0+ZmlsdGVyID09IHR5cGUpCiAgICAgICAgICAgICByZXR1cm4gJippdGVyYXRvcjsKLSAg
ICAgICAgLy8gIlNldCBzY29wZSB0byB0aGUgcHJldmlvdXMgaXRlbSBvZiBkZXZpY2UuW1tlcnJv
clNjb3BlU3RhY2tdXS4iCiAgICAgfQotICAgIC8vICJSZXR1cm4gdW5kZWZpbmVkLiIKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTIyLDIwICsxMTcsMTQgQEAgdm9pZCBEZXZpY2U6Omdl
bmVyYXRlQVZhbGlkYXRpb25FcnJvcihTdHJpbmcmJiBtZXNzYWdlKQogewogICAgIC8vIGh0dHBz
Oi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2Fic3RyYWN0LW9wZGVmLWdlbmVyYXRlLWEtdmFs
aWRhdGlvbi1lcnJvcgogCi0gICAgLy8gIkxldCBzY29wZSBiZSB0aGUgY3VycmVudCBlcnJvciBz
Y29wZSBmb3IgZXJyb3IgYW5kIGRldmljZS4iCiAgICAgYXV0byogc2NvcGUgPSBjdXJyZW50RXJy
b3JTY29wZShXR1BVRXJyb3JGaWx0ZXJfVmFsaWRhdGlvbik7CiAKLSAgICAvLyAiSWYgc2NvcGUg
aXMgbm90IHVuZGVmaW5lZDoiCiAgICAgaWYgKHNjb3BlKSB7Ci0gICAgICAgIC8vICJJZiBzY29w
ZS5bW2Vycm9yXV0gaXMgbnVsbCwgc2V0IHNjb3BlLltbZXJyb3JdXSB0byBlcnJvci4iCiAgICAg
ICAgIGlmICghc2NvcGUtPmVycm9yKQogICAgICAgICAgICAgc2NvcGUtPmVycm9yID0gRXJyb3Ig
eyBXR1BVRXJyb3JUeXBlX1ZhbGlkYXRpb24sIFdURk1vdmUobWVzc2FnZSkgfTsKLSAgICAgICAg
Ly8gIlN0b3AuIgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gIk90aGVyd2lzZSBp
c3N1ZSB0aGUgZm9sbG93aW5nIHN0ZXBzIHRvIHRoZSBDb250ZW50IHRpbWVsaW5lOiIKLSAgICAv
LyAiSWYgdGhlIHVzZXIgYWdlbnQgY2hvb3NlcywgcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBHUFVV
bmNhcHR1cmVkRXJyb3JFdmVudCBuYW1lZCAidW5jYXB0dXJlZGVycm9yIiBvbiBkZXZpY2Ugd2l0
aCBhbiBlcnJvciBvZiBlcnJvci4iCiAgICAgaWYgKG1fdW5jYXB0dXJlZEVycm9yQ2FsbGJhY2sp
IHsKICAgICAgICAgbV9pbnN0YW5jZS0+c2NoZWR1bGVXb3JrKFtwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSldKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3VuY2FwdHVyZWRFcnJvckNhbGxiYWNrKFdHUFVFcnJv
clR5cGVfVmFsaWRhdGlvbiwgV1RGTW92ZShtZXNzYWdlKSk7CkBAIC0xNDcsNyArMTM2LDYgQEAg
Ym9vbCBEZXZpY2U6OnZhbGlkYXRlUG9wRXJyb3JTY29wZSgpIGNvbnN0CiB7CiAgICAgLy8gRklY
TUU6ICJ0aGlzIG11c3Qgbm90IGJlIGxvc3QuIgogCi0gICAgLy8gInRoaXMuW1tlcnJvclNjb3Bl
U3RhY2tdXS5zaXplID4gMC4iCiAgICAgaWYgKG1fZXJyb3JTY29wZVN0YWNrLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNTgsMTcgKzE0NiwxMyBAQCBib29sIERldmlj
ZTo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdHUFVFcnJvclR5cGUsIFN0
cmluZyYmKT4mJiBjYQogewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIv
I2RvbS1ncHVkZXZpY2UtcG9wZXJyb3JzY29wZQogCi0gICAgLy8gIklmIGFueSBvZiB0aGUgZm9s
bG93aW5nIHJlcXVpcmVtZW50cyBhcmUgdW5tZXQiCiAgICAgaWYgKCF2YWxpZGF0ZVBvcEVycm9y
U2NvcGUoKSkgewotICAgICAgICAvLyAicmVqZWN0IHByb21pc2Ugd2l0aCBhbiBPcGVyYXRpb25F
cnJvciBhbmQgc3RvcC4iCiAgICAgICAgIGNhbGxiYWNrKFdHUFVFcnJvclR5cGVfVW5rbm93biwg
InBvcEVycm9yU2NvcGUoKSBmYWlsZWQgdmFsaWRhdGlvbi4iX3MpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgLy8gIkxldCBzY29wZSBiZSB0aGUgcmVzdWx0IG9mIHBvcHBp
bmcgYW4gaXRlbSBvZmYgb2YgdGhpcy5bW2Vycm9yU2NvcGVTdGFja11dLiIKICAgICBhdXRvIHNj
b3BlID0gbV9lcnJvclNjb3BlU3RhY2sudGFrZUxhc3QoKTsKIAotICAgIC8vICJSZXNvbHZlIHBy
b21pc2Ugd2l0aCBzY29wZS5bW2Vycm9yXV0uIgogICAgIG1faW5zdGFuY2UtPnNjaGVkdWxlV29y
ayhbc2NvcGUgPSBXVEZNb3ZlKHNjb3BlKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHNjb3BlLmVycm9yKQogICAgICAgICAgICAgY2FsbGJh
Y2soc2NvcGUuZXJyb3ItPnR5cGUsIFdURk1vdmUoc2NvcGUuZXJyb3ItPm1lc3NhZ2UpKTsKQEAg
LTE4NCwxMSArMTY4LDggQEAgdm9pZCBEZXZpY2U6OnB1c2hFcnJvclNjb3BlKFdHUFVFcnJvckZp
bHRlciBmaWx0ZXIpCiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8j
ZG9tLWdwdWRldmljZS1wdXNoZXJyb3JzY29wZQogCi0gICAgLy8gIkxldCBzY29wZSBiZSBhIG5l
dyBHUFUgZXJyb3Igc2NvcGUuIgotICAgIC8vICJTZXQgc2NvcGUuW1tmaWx0ZXJdXSB0byBmaWx0
ZXIuIgogICAgIEVycm9yU2NvcGUgc2NvcGUgeyBzdGQ6Om51bGxvcHQsIGZpbHRlciB9OwogCi0g
ICAgLy8gIlB1c2ggc2NvcGUgb250byB0aGlzLltbZXJyb3JTY29wZVN0YWNrXV0uIgogICAgIG1f
ZXJyb3JTY29wZVN0YWNrLmFwcGVuZChXVEZNb3ZlKHNjb3BlKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVl
dWUubW0KaW5kZXggMzQzMWVkYzNmNzNlLi45YTcwMDZiOTFhOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVl
Lm1tCkBAIC0xMjksMjkgKzEyOSwxOSBAQCB2b2lkIFF1ZXVlOjpzdWJtaXQoVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgQ29tbWFuZEJ1ZmZlcj4+JiYgY29tbWFuZAogewogICAg
IC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVxdWV1ZS1zdWJtaXQK
IAotICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlz
ZmllZCIKICAgICBpZiAoIXZhbGlkYXRlU3VibWl0KCkpIHsKLSAgICAgICAgLy8gImdlbmVyYXRl
IGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCiAgICAgICAgIG1fZGV2aWNlLmdlbmVyYXRl
QVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBmaW5hbGl6ZUJsaXRDb21tYW5kRW5jb2RlcigpOwogCi0gICAgLy8g
IkZvciBlYWNoIGNvbW1hbmRCdWZmZXIgaW4gY29tbWFuZEJ1ZmZlcnM6IgotICAgIGZvciAoYXV0
byBjb21tYW5kQnVmZmVyIDogY29tbWFuZHMpIHsKLSAgICAgICAgLy8gIkV4ZWN1dGUgZWFjaCBj
b21tYW5kIGluIGNvbW1hbmRCdWZmZXIuW1tjb21tYW5kX2xpc3RdXS4iCisgICAgZm9yIChhdXRv
IGNvbW1hbmRCdWZmZXIgOiBjb21tYW5kcykKICAgICAgICAgY29tbWl0TVRMQ29tbWFuZEJ1ZmZl
cihjb21tYW5kQnVmZmVyLmdldCgpLmNvbW1hbmRCdWZmZXIoKSk7Ci0gICAgfQogfQogCiBzdGF0
aWMgYm9vbCB2YWxpZGF0ZVdyaXRlQnVmZmVySW5pdGlhbChzaXplX3Qgc2l6ZSkKIHsKLSAgICAv
LyAiY29udGVudHNTaXplIOKJpSAwLiIKLQotICAgIC8vICJkYXRhT2Zmc2V0ICsgY29udGVudHNT
aXplIOKJpCBkYXRhU2l6ZS4iCi0KLSAgICAvLyAiY29udGVudHNTaXplLCBjb252ZXJ0ZWQgdG8g
Ynl0ZXMsIGlzIGEgbXVsdGlwbGUgb2YgNCBieXRlcy4iCiAgICAgaWYgKHNpemUgJSA0KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE2MiwxOSArMTUyLDE1IEBAIGJvb2wgUXVldWU6OnZh
bGlkYXRlV3JpdGVCdWZmZXIoY29uc3QgQnVmZmVyJiBidWZmZXIsIHVpbnQ2NF90IGJ1ZmZlck9m
ZnNldCwgc2l6CiB7CiAgICAgLy8gRklYTUU6ICJidWZmZXIgaXMgdmFsaWQgdG8gdXNlIHdpdGgg
dGhpcy4iCiAKLSAgICAvLyAiYnVmZmVyLltbc3RhdGVdXSBpcyB1bm1hcHBlZC4iCiAgICAgaWYg
KGJ1ZmZlci5zdGF0ZSgpICE9IEJ1ZmZlcjo6U3RhdGU6OlVubWFwcGVkKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAvLyAiYnVmZmVyLltbdXNhZ2VdXSBpbmNsdWRlcyBDT1BZX0RTVC4i
CiAgICAgaWYgKCEoYnVmZmVyLnVzYWdlKCkgJiBXR1BVQnVmZmVyVXNhZ2VfQ29weURzdCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJidWZmZXJPZmZzZXQsIGNvbnZlcnRlZCB0
byBieXRlcywgaXMgYSBtdWx0aXBsZSBvZiA0IGJ5dGVzLiIKICAgICBpZiAoYnVmZmVyT2Zmc2V0
ICUgNCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gImJ1ZmZlck9mZnNldCArIGNv
bnRlbnRzU2l6ZSwgY29udmVydGVkIHRvIGJ5dGVzLCDiiaQgYnVmZmVyLltbc2l6ZV1dIGJ5dGVz
LiIKICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYwogICAgIGlmIChidWZmZXJP
ZmZzZXQgKyBzaXplID4gYnVmZmVyLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTg2LDMwICsxNzIsMTYgQEAgdm9pZCBRdWV1ZTo6d3JpdGVCdWZmZXIoY29uc3QgQnVmZmVyJiBi
dWZmZXIsIHVpbnQ2NF90IGJ1ZmZlck9mZnNldCwgY29uc3Qgdm9pZCoKIHsKICAgICAvLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1cXVldWUtd3JpdGVidWZmZXIKIAot
ICAgIC8vICJJZiBkYXRhIGlzIGFuIEFycmF5QnVmZmVyIG9yIERhdGFWaWV3LCBsZXQgdGhlIGVs
ZW1lbnQgdHlwZSBiZSAiYnl0ZSIuIE90aGVyd2lzZSwgZGF0YSBpcyBhIFR5cGVkQXJyYXk7IGxl
dCB0aGUgZWxlbWVudCB0eXBlIGJlIHRoZSB0eXBlIG9mIHRoZSBUeXBlZEFycmF5LiIKLQotICAg
IC8vICJMZXQgZGF0YVNpemUgYmUgdGhlIHNpemUgb2YgZGF0YSwgaW4gZWxlbWVudHMuIgotCi0g
ICAgLy8gIklmIHNpemUgaXMgbWlzc2luZywgbGV0IGNvbnRlbnRzU2l6ZSBiZSBkYXRhU2l6ZSDi
iJIgZGF0YU9mZnNldC4gT3RoZXJ3aXNlLCBsZXQgY29udGVudHNTaXplIGJlIHNpemUuIgotCi0g
ICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVk
IgogICAgIGlmICghdmFsaWRhdGVXcml0ZUJ1ZmZlckluaXRpYWwoc2l6ZSkpIHsKICAgICAgICAg
Ly8gRklYTUU6ICJ0aHJvdyBPcGVyYXRpb25FcnJvciBhbmQgc3RvcC4iCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICAvLyAiTGV0IGRhdGFDb250ZW50cyBiZSBhIGNvcHkgb2YgdGhlIGJ5
dGVzIGhlbGQgYnkgdGhlIGJ1ZmZlciBzb3VyY2UuIgotCi0gICAgLy8gIkxldCBjb250ZW50cyBi
ZSB0aGUgY29udGVudHNTaXplIGVsZW1lbnRzIG9mIGRhdGFDb250ZW50cyBzdGFydGluZyBhdCBh
biBvZmZzZXQgb2YgZGF0YU9mZnNldCBlbGVtZW50cy4iCi0KLSAgICAvLyAiSWYgYW55IG9mIHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0
ZVdyaXRlQnVmZmVyKGJ1ZmZlciwgYnVmZmVyT2Zmc2V0LCBzaXplKSkgewotICAgICAgICAvLyAi
Z2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKICAgICAgICAgbV9kZXZpY2Uu
Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vICJXcml0ZSBjb250ZW50cyBpbnRvIGJ1ZmZlciBz
dGFydGluZyBhdCBidWZmZXJPZmZzZXQuIgogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0yNTEsNDAgKzIyMywyOSBAQCB2b2lkIFF1ZXVlOjp3cml0ZUJ1ZmZlcihjb25zdCBC
dWZmZXImIGJ1ZmZlciwgdWludDY0X3QgYnVmZmVyT2Zmc2V0LCBjb25zdCB2b2lkKgogCiBzdGF0
aWMgYm9vbCB2YWxpZGF0ZVdyaXRlVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYg
ZGVzdGluYXRpb24sIGNvbnN0IFdHUFVUZXh0dXJlRGF0YUxheW91dCYgZGF0YUxheW91dCwgY29u
c3QgV0dQVUV4dGVudDNEJiBzaXplLCBzaXplX3QgZGF0YUJ5dGVTaXplLCBjb25zdCBXR1BVVGV4
dHVyZURlc2NyaXB0b3ImIHRleHR1cmVEZXNjKQogewotICAgIC8vICJ2YWxpZGF0aW5nIEdQVUlt
YWdlQ29weVRleHR1cmUoZGVzdGluYXRpb24sIHNpemUpIHJldHVybnMgdHJ1ZS4iCiAgICAgaWYg
KCFUZXh0dXJlOjp2YWxpZGF0ZUltYWdlQ29weVRleHR1cmUoZGVzdGluYXRpb24sIHNpemUpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAidGV4dHVyZURlc2MudXNhZ2UgaW5jbHVk
ZXMgQ09QWV9EU1QuIgogICAgIGlmICghKHRleHR1cmVEZXNjLnVzYWdlICYgV0dQVVRleHR1cmVV
c2FnZV9Db3B5RHN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gInRleHR1cmVE
ZXNjLnNhbXBsZUNvdW50IGlzIDEuIgogICAgIGlmICh0ZXh0dXJlRGVzYy5zYW1wbGVDb3VudCAh
PSAxKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAidmFsaWRhdGluZyB0ZXh0dXJl
IGNvcHkgcmFuZ2UoZGVzdGluYXRpb24sIHNpemUpIHJldHVybiB0cnVlLiIKICAgICBpZiAoIVRl
eHR1cmU6OnZhbGlkYXRlVGV4dHVyZUNvcHlSYW5nZShkZXN0aW5hdGlvbiwgc2l6ZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJkZXN0aW5hdGlvbi5hc3BlY3QgbXVzdCByZWZl
ciB0byBhIHNpbmdsZSBhc3BlY3Qgb2YgdGV4dHVyZURlc2MuZm9ybWF0LiIKICAgICBpZiAoIVRl
eHR1cmU6OnJlZmVyc1RvU2luZ2xlQXNwZWN0KHRleHR1cmVEZXNjLmZvcm1hdCwgZGVzdGluYXRp
b24uYXNwZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gIlRoYXQgYXNwZWN0
IG11c3QgYmUgYSB2YWxpZCBpbWFnZSBjb3B5IGRlc3RpbmF0aW9uIGFjY29yZGluZyB0byDCp+KA
rzI1LjEuMiBEZXB0aC1zdGVuY2lsIGZvcm1hdHMuIgogICAgIGlmICghVGV4dHVyZTo6aXNWYWxp
ZEltYWdlQ29weURlc3RpbmF0aW9uKHRleHR1cmVEZXNjLmZvcm1hdCwgZGVzdGluYXRpb24uYXNw
ZWN0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gIkxldCBhc3BlY3RTcGVjaWZp
Y0Zvcm1hdCA9IHRleHR1cmVEZXNjLmZvcm1hdC4iCiAgICAgYXV0byBhc3BlY3RTcGVjaWZpY0Zv
cm1hdCA9IHRleHR1cmVEZXNjLmZvcm1hdDsKIAotICAgIC8vICJJZiB0ZXh0dXJlRGVzYy5mb3Jt
YXQgaXMgYSBkZXB0aC1vci1zdGVuY2lsIGZvcm1hdDoiCi0gICAgaWYgKFRleHR1cmU6OmlzRGVw
dGhPclN0ZW5jaWxGb3JtYXQodGV4dHVyZURlc2MuZm9ybWF0KSkgewotICAgICAgICAvLyAiU2V0
IGFzcGVjdFNwZWNpZmljRm9ybWF0IHRvIHRoZSBhc3BlY3Qtc3BlY2lmaWMgZm9ybWF0IG9mIHRl
eHR1cmVEZXNjLmZvcm1hdCBhY2NvcmRpbmcgdG8gwqfigK8yNS4xLjIgRGVwdGgtc3RlbmNpbCBm
b3JtYXRzLiIKKyAgICBpZiAoVGV4dHVyZTo6aXNEZXB0aE9yU3RlbmNpbEZvcm1hdCh0ZXh0dXJl
RGVzYy5mb3JtYXQpKQogICAgICAgICBhc3BlY3RTcGVjaWZpY0Zvcm1hdCA9IFRleHR1cmU6OmFz
cGVjdFNwZWNpZmljRm9ybWF0KHRleHR1cmVEZXNjLmZvcm1hdCwgZGVzdGluYXRpb24uYXNwZWN0
KTsKLSAgICB9CiAKLSAgICAvLyAidmFsaWRhdGluZyBsaW5lYXIgdGV4dHVyZSBkYXRhKGRhdGFM
YXlvdXQsIGRhdGFCeXRlU2l6ZSwgYXNwZWN0U3BlY2lmaWNGb3JtYXQsIHNpemUpIHN1Y2NlZWRz
LiIKICAgICBpZiAoIVRleHR1cmU6OnZhbGlkYXRlTGluZWFyVGV4dHVyZURhdGEoZGF0YUxheW91
dCwgZGF0YUJ5dGVTaXplLCBhc3BlY3RTcGVjaWZpY0Zvcm1hdCwgc2l6ZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtMjk4LDIzICsyNTksMTUgQEAgdm9pZCBRdWV1ZTo6d3JpdGVUZXh0
dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBkZXN0aW5hdGlvbiwgY29uc3Qgdm9pZCog
ZGEKIAogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVxdWV1
ZS13cml0ZXRleHR1cmUKIAotICAgIC8vICJMZXQgZGF0YUJ5dGVzIGJlIGEgY29weSBvZiB0aGUg
Ynl0ZXMgaGVsZCBieSB0aGUgYnVmZmVyIHNvdXJjZSBkYXRhLiIKLSAgICAvLyAiTGV0IGRhdGFC
eXRlU2l6ZSBiZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIGRhdGFCeXRlcy4iCiAgICAgYXV0byBk
YXRhQnl0ZVNpemUgPSBkYXRhU2l6ZTsKIAotICAgIC8vICJMZXQgdGV4dHVyZURlc2MgYmUgZGVz
dGluYXRpb24udGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS4iCiAgICAgY29uc3QgYXV0byYgdGV4dHVy
ZURlc2MgPSBmcm9tQVBJKGRlc3RpbmF0aW9uLnRleHR1cmUpLmRlc2NyaXB0b3IoKTsKIAotICAg
IC8vICJMZXQgY29udGVudHMgYmUgdGhlIGNvbnRlbnRzIG9mIHRoZSBpbWFnZXMgc2VlbiBieSB2
aWV3aW5nIGRhdGFCeXRlcyB3aXRoIGRhdGFMYXlvdXQgYW5kIHNpemUuIgotCi0gICAgLy8gIklm
IGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlm
ICghdmFsaWRhdGVXcml0ZVRleHR1cmUoZGVzdGluYXRpb24sIGRhdGFMYXlvdXQsIHNpemUsIGRh
dGFCeXRlU2l6ZSwgdGV4dHVyZURlc2MpKSB7Ci0gICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlk
YXRpb24gZXJyb3IgYW5kIHN0b3AuIgogICAgICAgICBtX2RldmljZS5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgLy8gIldyaXRlIGNvbnRlbnRzIGludG8gZGVzdGluYXRpb24uIgogICAgIGlmICgh
ZGF0YVNpemUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRl
ckJ1bmRsZUVuY29kZXIubW0KaW5kZXggMmYzZTExMDFmYTZlLi5kODZmYTk5ZjFmNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW0KKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5tbQpAQCAtODcsNyArODcs
NiBAQCB2b2lkIFJlbmRlckJ1bmRsZUVuY29kZXI6Omluc2VydERlYnVnTWFya2VyKFN0cmluZyYm
KQogewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHVkZWJ1
Z2NvbW1hbmRzbWl4aW4taW5zZXJ0ZGVidWdtYXJrZXIKIAotICAgIC8vICJQcmVwYXJlIHRoZSBl
bmNvZGVyIHN0YXRlIG9mIHRoaXMuIElmIGl0IHJldHVybnMgZmFsc2UsIHN0b3AuIgogICAgIGlm
ICghcHJlcGFyZVRoZUVuY29kZXJTdGF0ZSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTk2LDcg
Kzk1LDYgQEAgdm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihTdHJp
bmcmJikKIAogYm9vbCBSZW5kZXJCdW5kbGVFbmNvZGVyOjp2YWxpZGF0ZVBvcERlYnVnR3JvdXAo
KSBjb25zdAogewotICAgIC8vICJ0aGlzLltbZGVidWdfZ3JvdXBfc3RhY2tdXSBtdXN0IG5vdCBi
ZSBlbXB0eS4iCiAgICAgaWYgKCFtX2RlYnVnR3JvdXBTdGFja1NpemUpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApAQCAtMTA3LDE3ICsxMDUsMTQgQEAgdm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVy
Ojpwb3BEZWJ1Z0dyb3VwKCkKIHsKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1
d2ViLyNkb20tZ3B1ZGVidWdjb21tYW5kc21peGluLXBvcGRlYnVnZ3JvdXAKIAotICAgIC8vICJQ
cmVwYXJlIHRoZSBlbmNvZGVyIHN0YXRlIG9mIHRoaXMuIElmIGl0IHJldHVybnMgZmFsc2UsIHN0
b3AuIgogICAgIGlmICghcHJlcGFyZVRoZUVuY29kZXJTdGF0ZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgcmVxdWlyZW1lbnRzIGFyZSB1bm1l
dCIKICAgICBpZiAoIXZhbGlkYXRlUG9wRGVidWdHcm91cCgpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiAibWFrZSB0aGlzIGludmFsaWQsIGFuZCBzdG9wLiIKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIC8vICJQb3AgYW4gZW50cnkgb2ZmIG9mIHRoaXMuW1tkZWJ1Z19ncm91cF9zdGFja11d
LiIKICAgICAtLW1fZGVidWdHcm91cFN0YWNrU2l6ZTsKICAgICAvLyBNVExJbmRpcmVjdENvbW1h
bmRCdWZmZXJzIGRvbid0IHN1cHBvcnQgZGVidWcgY29tbWFuZHMuCiB9CkBAIC0xMjYsMTEgKzEy
MSw5IEBAIHZvaWQgUmVuZGVyQnVuZGxlRW5jb2Rlcjo6cHVzaERlYnVnR3JvdXAoU3RyaW5nJiYp
CiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWRlYnVn
Y29tbWFuZHNtaXhpbi1wdXNoZGVidWdncm91cAogCi0gICAgLy8gIlByZXBhcmUgdGhlIGVuY29k
ZXIgc3RhdGUgb2YgdGhpcy4gSWYgaXQgcmV0dXJucyBmYWxzZSwgc3RvcC4iCiAgICAgaWYgKCFw
cmVwYXJlVGhlRW5jb2RlclN0YXRlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vICJQdXNo
IGdyb3VwTGFiZWwgb250byB0aGlzLltbZGVidWdfZ3JvdXBfc3RhY2tdXS4iCiAgICAgKyttX2Rl
YnVnR3JvdXBTdGFja1NpemU7CiAgICAgLy8gTVRMSW5kaXJlY3RDb21tYW5kQnVmZmVycyBkb24n
dCBzdXBwb3J0IGRlYnVnIGNvbW1hbmRzLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQ
YXNzRW5jb2Rlci5tbQppbmRleCA3NGY2ODUzMDAxMjUuLmZkOTQwMmE5YzYyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW0KKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIubW0KQEAgLTEwNiw3ICsxMDYsNiBAQCB2
b2lkIFJlbmRlclBhc3NFbmNvZGVyOjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJM
YWJlbCkKIHsKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1
ZGVidWdjb21tYW5kc21peGluLWluc2VydGRlYnVnbWFya2VyCiAKLSAgICAvLyAiUHJlcGFyZSB0
aGUgZW5jb2RlciBzdGF0ZSBvZiB0aGlzLiBJZiBpdCByZXR1cm5zIGZhbHNlLCBzdG9wLiIKICAg
ICBpZiAoIXByZXBhcmVUaGVFbmNvZGVyU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0x
MTUsNyArMTE0LDYgQEAgdm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6aW5zZXJ0RGVidWdNYXJrZXIo
U3RyaW5nJiYgbWFya2VyTGFiZWwpCiAKIGJvb2wgUmVuZGVyUGFzc0VuY29kZXI6OnZhbGlkYXRl
UG9wRGVidWdHcm91cCgpIGNvbnN0CiB7Ci0gICAgLy8gInRoaXMuW1tkZWJ1Z19ncm91cF9zdGFj
a11dIG11c3Qgbm90IGJlIGVtcHR5LiIKICAgICBpZiAoIW1fZGVidWdHcm91cFN0YWNrU2l6ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMjYsMTcgKzEyNCwxNCBAQCB2b2lkIFJlbmRl
clBhc3NFbmNvZGVyOjpwb3BEZWJ1Z0dyb3VwKCkKIHsKICAgICAvLyBodHRwczovL2dwdXdlYi5n
aXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGVidWdjb21tYW5kc21peGluLXBvcGRlYnVnZ3JvdXAK
IAotICAgIC8vICJQcmVwYXJlIHRoZSBlbmNvZGVyIHN0YXRlIG9mIHRoaXMuIElmIGl0IHJldHVy
bnMgZmFsc2UsIHN0b3AuIgogICAgIGlmICghcHJlcGFyZVRoZUVuY29kZXJTdGF0ZSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgcmVxdWlyZW1l
bnRzIGFyZSB1bm1ldCIKICAgICBpZiAoIXZhbGlkYXRlUG9wRGVidWdHcm91cCgpKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiAibWFrZSB0aGlzIGludmFsaWQsIGFuZCBzdG9wLiIKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIC8vICJQb3AgYW4gZW50cnkgb2ZmIG9mIHRoaXMuW1tkZWJ1Z19n
cm91cF9zdGFja11dLiIKICAgICAtLW1fZGVidWdHcm91cFN0YWNrU2l6ZTsKICAgICBbbV9yZW5k
ZXJDb21tYW5kRW5jb2RlciBwb3BEZWJ1Z0dyb3VwXTsKIH0KQEAgLTE0NSwxMSArMTQwLDkgQEAg
dm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6cHVzaERlYnVnR3JvdXAoU3RyaW5nJiYgZ3JvdXBMYWJl
bCkKIHsKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGVi
dWdjb21tYW5kc21peGluLXB1c2hkZWJ1Z2dyb3VwCiAKLSAgICAvLyAiUHJlcGFyZSB0aGUgZW5j
b2RlciBzdGF0ZSBvZiB0aGlzLiBJZiBpdCByZXR1cm5zIGZhbHNlLCBzdG9wLiIKICAgICBpZiAo
IXByZXBhcmVUaGVFbmNvZGVyU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gIlB1
c2ggZ3JvdXBMYWJlbCBvbnRvIHRoaXMuW1tkZWJ1Z19ncm91cF9zdGFja11dLiIKICAgICArK21f
ZGVidWdHcm91cFN0YWNrU2l6ZTsKICAgICBbbV9yZW5kZXJDb21tYW5kRW5jb2RlciBwdXNoRGVi
dWdHcm91cDpncm91cExhYmVsXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1NhbXBsZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIuaAppbmRleCBiZWE2MDhk
OTlmYjQuLjM2YTI4NjRkYjdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2Ft
cGxlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIuaApAQCAtNTAsOSArNTAs
NyBAQCBwdWJsaWM6CiAKICAgICBpZDxNVExTYW1wbGVyU3RhdGU+IHNhbXBsZXJTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2FtcGxlclN0YXRlOyB9CiAgICAgY29uc3QgV0dQVVNhbXBsZXJEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjcmlwdG9yOyB9Ci0gICAg
Ly8gIlNldCBzLltbaXNDb21wYXJpc29uXV0gdG8gZmFsc2UgaWYgdGhlIGNvbXBhcmUgYXR0cmli
dXRlIG9mIHMuW1tkZXNjcmlwdG9yXV0gaXMgbnVsbCBvciB1bmRlZmluZWQuIE90aGVyd2lzZSwg
c2V0IGl0IHRvIHRydWUuIgogICAgIGJvb2wgaXNDb21wYXJpc29uKCkgY29uc3QgeyByZXR1cm4g
ZGVzY3JpcHRvcigpLmNvbXBhcmUgIT0gV0dQVUNvbXBhcmVGdW5jdGlvbl9VbmRlZmluZWQ7IH0K
LSAgICAvLyAiU2V0IHMuW1tpc0ZpbHRlcmluZ11dIHRvIGZhbHNlIGlmIG5vbmUgb2YgbWluRmls
dGVyLCBtYWdGaWx0ZXIsIG9yIG1pcG1hcEZpbHRlciBoYXMgdGhlIHZhbHVlIG9mICJsaW5lYXIi
LiBPdGhlcndpc2UsIHNldCBpdCB0byB0cnVlLiIKICAgICBib29sIGlzRmlsdGVyaW5nKCkgY29u
c3QgeyByZXR1cm4gZGVzY3JpcHRvcigpLm1pbkZpbHRlciA9PSBXR1BVRmlsdGVyTW9kZV9MaW5l
YXIgfHwgZGVzY3JpcHRvcigpLm1hZ0ZpbHRlciA9PSBXR1BVRmlsdGVyTW9kZV9MaW5lYXIgfHwg
ZGVzY3JpcHRvcigpLm1pcG1hcEZpbHRlciA9PSBXR1BVRmlsdGVyTW9kZV9MaW5lYXI7IH0KIAog
cHJpdmF0ZToKQEAgLTYwLDkgKzU4LDcgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IGlkPE1UTFNh
bXBsZXJTdGF0ZT4gbV9zYW1wbGVyU3RhdGUgeyBuaWwgfTsKIAotICAgIGNvbnN0IFdHUFVTYW1w
bGVyRGVzY3JpcHRvciBtX2Rlc2NyaXB0b3IgeyB9OyAvLyAiVGhlIEdQVVNhbXBsZXJEZXNjcmlw
dG9yIHdpdGggd2hpY2ggdGhlIEdQVVNhbXBsZXIgd2FzIGNyZWF0ZWQuIgotICAgIC8vICJbW2lz
Q29tcGFyaXNvbl1dIG9mIHR5cGUgYm9vbGVhbi4iIFRoaXMgaXMgdW5uZWNlc3Nhcnk7IGl0J3Mg
aW1wbGVtZW50ZWQgaW4gaXNDb21wYXJpc29uKCkuCi0gICAgLy8gIltbaXNGaWx0ZXJpbmddXSBv
ZiB0eXBlIGJvb2xlYW4uIiBUaGlzIGlzIHVubmVjZXNzYXJ5OyBpdCdzIGltcGxlbWVudGVkIGlu
IGlzRmlsdGVyaW5nKCkuCisgICAgY29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9yIG1fZGVzY3Jp
cHRvciB7IH07CiAKICAgICBjb25zdCBSZWY8RGV2aWNlPiBtX2RldmljZTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvU2FtcGxlci5tbQppbmRleCBlNTdmYTI2NWRkNWQuLmNlYWM2Y2UzOTdlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9TYW1wbGVyLm1tCkBAIC0zOCwyMSArMzgsMTYgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVD
cmVhdGVTYW1wbGVyKERldmljZSYsIGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3Jp
cHQKIAogICAgIC8vIEZJWE1FOiAiZGV2aWNlIGlzIHZhbGlkLiIKIAotICAgIC8vICJkZXNjcmlw
dG9yLmxvZE1pbkNsYW1wIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLiIKICAgICBpZiAo
c3RkOjppc25hbihkZXNjcmlwdG9yLmxvZE1pbkNsYW1wKSB8fCBkZXNjcmlwdG9yLmxvZE1pbkNs
YW1wIDwgMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gImRlc2NyaXB0b3IubG9k
TWF4Q2xhbXAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGRlc2NyaXB0b3IubG9kTWluQ2xh
bXAuIgogICAgIGlmIChzdGQ6OmlzbmFuKGRlc2NyaXB0b3IubG9kTWF4Q2xhbXApIHx8IGRlc2Ny
aXB0b3IubG9kTWF4Q2xhbXAgPCBkZXNjcmlwdG9yLmxvZE1pbkNsYW1wKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAvLyAiZGVzY3JpcHRvci5tYXhBbmlzb3Ryb3B5IGlzIGdyZWF0ZXIg
dGhhbiBvciBlcXVhbCB0byAxLiIKICAgICBpZiAoZGVzY3JpcHRvci5tYXhBbmlzb3Ryb3B5IDwg
MSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gIldoZW4gZGVzY3JpcHRvci5tYXhB
bmlzb3Ryb3B5IGlzIGdyZWF0ZXIgdGhhbiAxIgogICAgIGlmIChkZXNjcmlwdG9yLm1heEFuaXNv
dHJvcHkgPiAxKSB7Ci0gICAgICAgIC8vICJkZXNjcmlwdG9yLm1hZ0ZpbHRlciwgZGVzY3JpcHRv
ci5taW5GaWx0ZXIsIGFuZCBkZXNjcmlwdG9yLm1pcG1hcEZpbHRlciBtdXN0IGJlIGVxdWFsIHRv
ICJsaW5lYXIiLiIKICAgICAgICAgaWYgKGRlc2NyaXB0b3IubWFnRmlsdGVyICE9IFdHUFVGaWx0
ZXJNb2RlX0xpbmVhcgogICAgICAgICAgICAgfHwgZGVzY3JpcHRvci5taW5GaWx0ZXIgIT0gV0dQ
VUZpbHRlck1vZGVfTGluZWFyCiAgICAgICAgICAgICB8fCBkZXNjcmlwdG9yLm1pcG1hcEZpbHRl
ciAhPSBXR1BVRmlsdGVyTW9kZV9MaW5lYXIpCkBAIC0xMzYsMTIgKzEzMSw5IEBAIFJlZlB0cjxT
YW1wbGVyPiBEZXZpY2U6OmNyZWF0ZVNhbXBsZXIoY29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yKQogCiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8j
ZG9tLWdwdWRldmljZS1jcmVhdGVzYW1wbGVyCiAKLSAgICAvLyAiSWYgdmFsaWRhdGluZyBHUFVT
YW1wbGVyRGVzY3JpcHRvcih0aGlzLCBkZXNjcmlwdG9yKSByZXR1cm5zIGZhbHNlOiIKICAgICBp
ZiAoIXZhbGlkYXRlQ3JlYXRlU2FtcGxlcigqdGhpcywgZGVzY3JpcHRvcikpIHsKLSAgICAgICAg
Ly8gIkdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvci4iCiAgICAgICAgIGdlbmVyYXRlQVZhbGlk
YXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAKLSAgICAgICAgLy8gIkNyZWF0
ZSBhIG5ldyBpbnZhbGlkIEdQVVNhbXBsZXIgYW5kIHJldHVybiB0aGUgcmVzdWx0LiIKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xNTcsNyArMTQ5LDYgQEAgUmVmUHRyPFNh
bXBsZXI+IERldmljZTo6Y3JlYXRlU2FtcGxlcihjb25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCiAgICAgc2FtcGxlckRlc2NyaXB0b3IubG9kTWF4Q2xhbXAgPSBkZXNjcmlw
dG9yLmxvZE1heENsYW1wOwogICAgIHNhbXBsZXJEZXNjcmlwdG9yLmNvbXBhcmVGdW5jdGlvbiA9
IGNvbXBhcmVGdW5jdGlvbihkZXNjcmlwdG9yLmNvbXBhcmUpOwogCi0gICAgLy8gIlRoZSB1c2Vk
IHZhbHVlIG9mIG1heEFuaXNvdHJvcHkgd2lsbCBiZSBjbGFtcGVkIHRvIHRoZSBtYXhpbXVtIHZh
bHVlIHRoYXQgdGhlIHBsYXRmb3JtIHN1cHBvcnRzLiIKICAgICAvLyBodHRwczovL2RldmVsb3Bl
ci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi9tZXRhbC9tdGxzYW1wbGVyZGVzY3JpcHRvci8xNTE2
MTY0LW1heGFuaXNvdHJvcHk/bGFuZ3VhZ2U9b2JqYwogICAgIC8vICJWYWx1ZXMgbXVzdCBiZSBi
ZXR3ZWVuIDEgYW5kIDE2LCBpbmNsdXNpdmUuIgogICAgIHNhbXBsZXJEZXNjcmlwdG9yLm1heEFu
aXNvdHJvcHkgPSBzdGQ6Om1pbjx1aW50MTZfdD4oZGVzY3JpcHRvci5tYXhBbmlzb3Ryb3B5LCAx
Nik7CkBAIC0xNjgsMTIgKzE1OSw2IEBAIFJlZlB0cjxTYW1wbGVyPiBEZXZpY2U6OmNyZWF0ZVNh
bXBsZXIoY29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogICAgIGlmICgh
c2FtcGxlclN0YXRlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIC8vICJMZXQgcyBi
ZSBhIG5ldyBHUFVTYW1wbGVyIG9iamVjdC4iCi0gICAgLy8gIlNldCBzLltbZGVzY3JpcHRvcl1d
IHRvIGRlc2NyaXB0b3IuIgotICAgIC8vICJTZXQgcy5bW2lzQ29tcGFyaXNvbl1dIHRvIGZhbHNl
IGlmIHRoZSBjb21wYXJlIGF0dHJpYnV0ZSBvZiBzLltbZGVzY3JpcHRvcl1dIGlzIG51bGwgb3Ig
dW5kZWZpbmVkLiBPdGhlcndpc2UsIHNldCBpdCB0byB0cnVlLiIKLSAgICAvLyAiU2V0IHMuW1tp
c0ZpbHRlcmluZ11dIHRvIGZhbHNlIGlmIG5vbmUgb2YgbWluRmlsdGVyLCBtYWdGaWx0ZXIsIG9y
IG1pcG1hcEZpbHRlciBoYXMgdGhlIHZhbHVlIG9mICJsaW5lYXIiLiBPdGhlcndpc2UsIHNldCBp
dCB0byB0cnVlLiIKLSAgICAvLyAiUmV0dXJuIHMuIgotCiAgICAgcmV0dXJuIFNhbXBsZXI6OmNy
ZWF0ZShzYW1wbGVyU3RhdGUsIGRlc2NyaXB0b3IsICp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4
dHVyZS5oCmluZGV4IGI5NDQ3OWIzMjAxYi4uYWJhOTM4Mzk3YmJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4
dHVyZS5oCkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBpZDxNVExUZXh0
dXJlPiBtX3RleHR1cmUgeyBuaWwgfTsKIAotICAgIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRv
ciBtX2Rlc2NyaXB0b3IgeyB9OyAvLyAiVGhlIEdQVVRleHR1cmVEZXNjcmlwdG9yIGRlc2NyaWJp
bmcgdGhpcyB0ZXh0dXJlLiIKKyAgICBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3IgbV9kZXNj
cmlwdG9yIHsgfTsKICAgICBjb25zdCBWZWN0b3I8V0dQVVRleHR1cmVGb3JtYXQ+IG1fdmlld0Zv
cm1hdHM7CiAKICAgICBjb25zdCBSZWY8RGV2aWNlPiBtX2RldmljZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0
dXJlLm1tCmluZGV4IGU3Y2I2ZjFiMjc0Ni4uMTk5NDcxNjAwYjNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1Rl
eHR1cmUubW0KQEAgLTE0Nyw3ICsxNDcsNiBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxXR1BVRmVh
dHVyZU5hbWU+IGZlYXR1cmVSZXF1aXJlbWVudEZvckZvcm1hdChXR1BVVGV4dHVyZUZvcgogc3Rh
dGljIGJvb2wgaXNDb21wcmVzc2VkRm9ybWF0KFdHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdCkKIHsK
ICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNwYWNrZWQtZm9ybWF0cwot
ICAgIC8vICJBIGNvbXByZXNzZWQgZm9ybWF0IGlzIGFueSBmb3JtYXQgd2l0aCBhIGJsb2NrIHNp
emUgZ3JlYXRlciB0aGFuIDEgw5cgMS4iCiAgICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0JDMVJHQkFVbm9ybToKICAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0JDMVJHQkFVbm9ybVNyZ2I6CkBAIC00OTUsNyArNDk0LDYgQEAgYm9vbCBUZXh0dXJlOjpj
b250YWluc1N0ZW5jaWxBc3BlY3QoV0dQVVRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdCkKIGJv
b2wgVGV4dHVyZTo6aXNEZXB0aE9yU3RlbmNpbEZvcm1hdChXR1BVVGV4dHVyZUZvcm1hdCBmb3Jt
YXQpCiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZGVwdGgtZm9y
bWF0cwotICAgIC8vICJBIGRlcHRoLW9yLXN0ZW5jaWwgZm9ybWF0IGlzIGFueSBmb3JtYXQgd2l0
aCBkZXB0aCBhbmQvb3Igc3RlbmNpbCBhc3BlY3RzLiIKICAgICByZXR1cm4gY29udGFpbnNEZXB0
aEFzcGVjdChmb3JtYXQpIHx8IGNvbnRhaW5zU3RlbmNpbEFzcGVjdChmb3JtYXQpOwogfQogCkBA
IC01NjMsNyArNTYxLDYgQEAgdWludDMyX3QgVGV4dHVyZTo6dGV4ZWxCbG9ja1dpZHRoKFdHUFVU
ZXh0dXJlRm9ybWF0IGZvcm1hdCkKICAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngx
MlVub3JtOgogICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5vcm1TcmdiOgog
ICAgICAgICByZXR1cm4gMTI7Ci0gICAgLy8gIkZvciBwaXhlbC1iYXNlZCBHUFVUZXh0dXJlRm9y
bWF0cywgdGhlIHRleGVsIGJsb2NrIHdpZHRoIGFuZCB0ZXhlbCBibG9jayBoZWlnaHQgYXJlIGFs
d2F5cyAxLiIKICAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4VW5vcm06CiAgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9SOFNub3JtOgogICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhV
aW50OgpAQCAtNjg0LDcgKzY4MSw2IEBAIHVpbnQzMl90IFRleHR1cmU6OnRleGVsQmxvY2tIZWln
aHQoV0dQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQogICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QVNUQzEyeDEyVW5vcm06CiAgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9y
bVNyZ2I6CiAgICAgICAgIHJldHVybiAxMjsKLSAgICAvLyAiRm9yIHBpeGVsLWJhc2VkIEdQVVRl
eHR1cmVGb3JtYXRzLCB0aGUgdGV4ZWwgYmxvY2sgd2lkdGggYW5kIHRleGVsIGJsb2NrIGhlaWdo
dCBhcmUgYWx3YXlzIDEuIgogICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhVbm9ybToKICAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4U25vcm06CiAgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9SOFVpbnQ6CkBAIC03MzksOCArNzM1LDYgQEAgdWludDMyX3QgVGV4dHVyZTo6dGV4ZWxC
bG9ja0hlaWdodChXR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQpCiBzdGF0aWMgYm9vbCBpc1JlbmRl
cmFibGVGb3JtYXQoV0dQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQogewogICAgIC8vIGh0dHBzOi8v
Z3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI3JlbmRlcmFibGUtZm9ybWF0Ci0gICAgLy8gIklmIGEg
Zm9ybWF0IGlzIGxpc3RlZCBpbiDCp+KArzI1LjEuMSBQbGFpbiBjb2xvciBmb3JtYXRzIHdpdGgg
UkVOREVSX0FUVEFDSE1FTlQgY2FwYWJpbGl0eSwgaXQgaXMgYSBjb2xvciByZW5kZXJhYmxlIGZv
cm1hdC4gQW55IG90aGVyIGZvcm1hdCBpcyBub3QgYSBjb2xvciByZW5kZXJhYmxlIGZvcm1hdC4g
QWxsIGRlcHRoLW9yLXN0ZW5jaWwgZm9ybWF0cyBhcmUgcmVuZGVyYWJsZS4iCi0gICAgLy8gaHR0
cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jcGxhaW4tY29sb3ItZm9ybWF0cwogICAgIHN3
aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFVub3JtOgogICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhVaW50OgpAQCAtODc5LDcgKzg3Myw2IEBAIHN0YXRp
YyBib29sIHN1cHBvcnRzTXVsdGlzYW1wbGluZyhXR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQpCiAg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMTZTaW50OgogICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfUkdCQTE2RmxvYXQ6CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dw
dXdlYi8jZGVwdGgtZm9ybWF0cwotICAgIC8vICJBbGwgb2YgdGhlc2UgZm9ybWF0cyBzdXBwb3J0
IG11bHRpc2FtcGxpbmcuIgogICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfU3RlbmNpbDg6CiAg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDE2VW5vcm06CiAgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9EZXB0aDI0UGx1czoKQEAgLTk2MCwyMCArOTUzLDE1IEBAIHN0YXRpYyB1aW50
MzJfdCBtYXhpbXVtTWlwbGV2ZWxDb3VudChXR1BVVGV4dHVyZURpbWVuc2lvbiBkaW1lbnNpb24s
IFdHUFVFeHRlbnQzCiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8j
YWJzdHJhY3Qtb3BkZWYtbWF4aW11bS1taXBsZXZlbC1jb3VudAogCi0gICAgLy8gIkNhbGN1bGF0
ZSB0aGUgbWF4IGRpbWVuc2lvbiB2YWx1ZSBtOiIKICAgICB1aW50MzJfdCBtID0gMDsKIAotICAg
IC8vICJJZiBkaW1lbnNpb24gaXM6IgogICAgIHN3aXRjaCAoZGltZW5zaW9uKSB7CiAgICAgY2Fz
ZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8xRDoKLSAgICAgICAgLy8gIlJldHVybiAxLiIKICAgICAg
ICAgcmV0dXJuIDE7CiAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8yRDoKLSAgICAgICAg
Ly8gIkxldCBtID0gbWF4KHNpemUud2lkdGgsIHNpemUuaGVpZ2h0KS4iCiAgICAgICAgIG0gPSBz
dGQ6Om1heChzaXplLndpZHRoLCBzaXplLmhlaWdodCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgV0dQVVRleHR1cmVEaW1lbnNpb25fM0Q6Ci0gICAgICAgIC8vICJMZXQgbSA9IG1heChtYXgo
c2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpLCBzaXplLmRlcHRoT3JBcnJheUxheWVyKS4iCiAgICAg
ICAgIG0gPSBzdGQ6Om1heChzdGQ6Om1heChzaXplLndpZHRoLCBzaXplLmhlaWdodCksIHNpemUu
ZGVwdGhPckFycmF5TGF5ZXJzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXR1BVVGV4dHVy
ZURpbWVuc2lvbl9Gb3JjZTMyOgpAQCAtOTgxLDcgKzk2OSw2IEBAIHN0YXRpYyB1aW50MzJfdCBt
YXhpbXVtTWlwbGV2ZWxDb3VudChXR1BVVGV4dHVyZURpbWVuc2lvbiBkaW1lbnNpb24sIFdHUFVF
eHRlbnQzCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIC8vICJSZXR1cm4gZmxvb3Io
bG9nMihtKSkgKyAxLiIKICAgICBhdXRvIGlzUG93ZXJPZjIgPSAhKG0gJiAobSAtIDEpKTsKICAg
ICBpZiAoaXNQb3dlck9mMikKICAgICAgICAgcmV0dXJuIFdURjo6ZmFzdExvZzIobSkgKyAxOwpA
QCAtMTI0Myw0MCArMTIzMCwzMSBAQCBib29sIERldmljZTo6dmFsaWRhdGVDcmVhdGVUZXh0dXJl
KGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29ucwogewogICAgIC8v
IEZJWE1FOiAidGhpcyBtdXN0IGJlIGEgdmFsaWQgR1BVRGV2aWNlLiIKIAotICAgIC8vICJkZXNj
cmlwdG9yLnVzYWdlIG11c3Qgbm90IGJlIDAuIgogICAgIGlmICghZGVzY3JpcHRvci51c2FnZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gImRlc2NyaXB0b3Iuc2l6ZS53aWR0aCwg
ZGVzY3JpcHRvci5zaXplLmhlaWdodCwgYW5kIGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aE9yQXJyYXlM
YXllcnMgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iCiAgICAgaWYgKCFkZXNjcmlwdG9yLnNp
emUud2lkdGggfHwgIWRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgfHwgIWRlc2NyaXB0b3Iuc2l6ZS5k
ZXB0aE9yQXJyYXlMYXllcnMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJkZXNj
cmlwdG9yLm1pcExldmVsQ291bnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iCiAgICAgaWYg
KCFkZXNjcmlwdG9yLm1pcExldmVsQ291bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IC8vICJkZXNjcmlwdG9yLnNhbXBsZUNvdW50IG11c3QgYmUgZWl0aGVyIDEgb3IgNC4iCiAgICAg
aWYgKGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgIT0gMSAmJiBkZXNjcmlwdG9yLnNhbXBsZUNvdW50
ICE9IDQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJJZiBkZXNjcmlwdG9yLmRp
bWVuc2lvbiBpczoiCiAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmRpbWVuc2lvbikgewogICAgIGNh
c2UgV0dQVVRleHR1cmVEaW1lbnNpb25fMUQ6CiAgICAgICAgIC8vIEZJWE1FOiAiZGVzY3JpcHRv
ci5zaXplLndpZHRoIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoaXMubGltaXRzLm1h
eFRleHR1cmVEaW1lbnNpb24xRC4iCiAKLSAgICAgICAgLy8gImRlc2NyaXB0b3Iuc2l6ZS5oZWln
aHQgbXVzdCBiZSAxLiIKICAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgIT0gMSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyAiZGVzY3JpcHRvci5zaXpl
LmRlcHRoT3JBcnJheUxheWVycyBtdXN0IGJlIDEuIgogICAgICAgICBpZiAoZGVzY3JpcHRvci5z
aXplLmRlcHRoT3JBcnJheUxheWVycyAhPSAxKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgIC8vICJkZXNjcmlwdG9yLnNhbXBsZUNvdW50IG11c3QgYmUgMS4iCiAgICAgICAg
IGlmIChkZXNjcmlwdG9yLnNhbXBsZUNvdW50ICE9IDEpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgLy8gImRlc2NyaXB0b3IuZm9ybWF0IG11c3Qgbm90IGJlIGEgY29tcHJl
c3NlZCBmb3JtYXQgb3IgZGVwdGgtb3Itc3RlbmNpbCBmb3JtYXQuIgogICAgICAgICBpZiAoaXND
b21wcmVzc2VkRm9ybWF0KGRlc2NyaXB0b3IuZm9ybWF0KSB8fCBUZXh0dXJlOjppc0RlcHRoT3JT
dGVuY2lsRm9ybWF0KGRlc2NyaXB0b3IuZm9ybWF0KSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgYnJlYWs7CkBAIC0xMjk0LDExICsxMjcyLDkgQEAgYm9vbCBEZXZpY2U6OnZh
bGlkYXRlQ3JlYXRlVGV4dHVyZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIGNvbnMKIAogICAgICAgICAvLyBGSVhNRTogImRlc2NyaXB0b3Iuc2l6ZS5kZXB0aE9yQXJy
YXlMYXllcnMgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhpcy5saW1pdHMubWF4VGV4
dHVyZURpbWVuc2lvbjNELiIKIAotICAgICAgICAvLyAiZGVzY3JpcHRvci5zYW1wbGVDb3VudCBt
dXN0IGJlIDEuIgogICAgICAgICBpZiAoZGVzY3JpcHRvci5zYW1wbGVDb3VudCAhPSAxKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIC8vICJkZXNjcmlwdG9yLmZvcm1hdCBt
dXN0IG5vdCBiZSBhIGNvbXByZXNzZWQgZm9ybWF0IG9yIGRlcHRoLW9yLXN0ZW5jaWwgZm9ybWF0
LiIKICAgICAgICAgaWYgKGlzQ29tcHJlc3NlZEZvcm1hdChkZXNjcmlwdG9yLmZvcm1hdCkgfHwg
VGV4dHVyZTo6aXNEZXB0aE9yU3RlbmNpbEZvcm1hdChkZXNjcmlwdG9yLmZvcm1hdCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwpAQCAtMTMwNyw2NCArMTI4Myw0
NiBAQCBib29sIERldmljZTo6dmFsaWRhdGVDcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0dXJl
RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29ucwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgLy8gImRlc2NyaXB0b3Iuc2l6ZS53aWR0aCBtdXN0IGJlIG11bHRpcGxlIG9mIHRl
eGVsIGJsb2NrIHdpZHRoLiIKICAgICBpZiAoZGVzY3JpcHRvci5zaXplLndpZHRoICUgVGV4dHVy
ZTo6dGV4ZWxCbG9ja1dpZHRoKGRlc2NyaXB0b3IuZm9ybWF0KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgLy8gImRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgbXVzdCBiZSBtdWx0aXBsZSBv
ZiB0ZXhlbCBibG9jayBoZWlnaHQuIgogICAgIGlmIChkZXNjcmlwdG9yLnNpemUuaGVpZ2h0ICUg
VGV4dHVyZTo6dGV4ZWxCbG9ja0hlaWdodChkZXNjcmlwdG9yLmZvcm1hdCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIC8vICJJZiBkZXNjcmlwdG9yLnNhbXBsZUNvdW50ID4gMToiCiAg
ICAgaWYgKGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgPiAxKSB7Ci0gICAgICAgIC8vICJkZXNjcmlw
dG9yLm1pcExldmVsQ291bnQgbXVzdCBiZSAxLiIKICAgICAgICAgaWYgKGRlc2NyaXB0b3IubWlw
TGV2ZWxDb3VudCAhPSAxKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIC8v
ICJkZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzIG11c3QgYmUgMS4iCiAgICAgICAg
IGlmIChkZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzICE9IDEpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgLy8gImRlc2NyaXB0b3IudXNhZ2UgbXVzdCBub3Qg
aW5jbHVkZSB0aGUgU1RPUkFHRV9CSU5ESU5HIGJpdC4iCiAgICAgICAgIGlmIChkZXNjcmlwdG9y
LnVzYWdlICYgV0dQVVRleHR1cmVVc2FnZV9TdG9yYWdlQmluZGluZykKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgICAgICAvLyAiZGVzY3JpcHRvci5mb3JtYXQgbXVzdCBiZSBhIHJl
bmRlcmFibGUgZm9ybWF0IgogICAgICAgICBpZiAoIWlzUmVuZGVyYWJsZUZvcm1hdChkZXNjcmlw
dG9yLmZvcm1hdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgLy8gImFu
ZCBzdXBwb3J0IG11bHRpc2FtcGxpbmcgYWNjb3JkaW5nIHRvIMKn4oCvMjUuMSBUZXh0dXJlIEZv
cm1hdCBDYXBhYmlsaXRpZXMuIgogICAgICAgICBpZiAoIXN1cHBvcnRzTXVsdGlzYW1wbGluZyhk
ZXNjcmlwdG9yLmZvcm1hdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgLy8gImRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVh
bCB0byBtYXhpbXVtIG1pcExldmVsIGNvdW50KGRlc2NyaXB0b3IuZGltZW5zaW9uLCBkZXNjcmlw
dG9yLnNpemUpLiIKICAgICBpZiAoZGVzY3JpcHRvci5taXBMZXZlbENvdW50ID4gbWF4aW11bU1p
cGxldmVsQ291bnQoZGVzY3JpcHRvci5kaW1lbnNpb24sIGRlc2NyaXB0b3Iuc2l6ZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJkZXNjcmlwdG9yLnVzYWdlIG11c3QgYmUgYSBj
b21iaW5hdGlvbiBvZiBHUFVUZXh0dXJlVXNhZ2UgdmFsdWVzLiIKLQotICAgIC8vICJJZiBkZXNj
cmlwdG9yLnVzYWdlIGluY2x1ZGVzIHRoZSBSRU5ERVJfQVRUQUNITUVOVCBiaXQ6IgogICAgIGlm
IChkZXNjcmlwdG9yLnVzYWdlICYgV0dQVVRleHR1cmVVc2FnZV9SZW5kZXJBdHRhY2htZW50KSB7
Ci0gICAgICAgIC8vICJkZXNjcmlwdG9yLmZvcm1hdCBtdXN0IGJlIGEgcmVuZGVyYWJsZSBmb3Jt
YXQuIgogICAgICAgICBpZiAoIWlzUmVuZGVyYWJsZUZvcm1hdChkZXNjcmlwdG9yLmZvcm1hdCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgLy8gImRlc2NyaXB0b3IuZGlt
ZW5zaW9uIG11c3QgYmUgIjJkIi4iCiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmRpbWVuc2lvbiAh
PSBXR1BVVGV4dHVyZURpbWVuc2lvbl8yRCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICAvLyAiSWYgZGVzY3JpcHRvci51c2FnZSBpbmNsdWRlcyB0aGUgU1RPUkFHRV9C
SU5ESU5HIGJpdDoiCiAgICAgaWYgKGRlc2NyaXB0b3IudXNhZ2UgJiBXR1BVVGV4dHVyZVVzYWdl
X1N0b3JhZ2VCaW5kaW5nKSB7Ci0gICAgICAgIC8vICJkZXNjcmlwdG9yLmZvcm1hdCBtdXN0IGJl
IGxpc3RlZCBpbiDCp+KArzI1LjEuMSBQbGFpbiBjb2xvciBmb3JtYXRzIHRhYmxlIHdpdGggU1RP
UkFHRV9CSU5ESU5HIGNhcGFiaWxpdHkuIgogICAgICAgICBpZiAoIWhhc1N0b3JhZ2VCaW5kaW5n
Q2FwYWJpbGl0eShkZXNjcmlwdG9yLmZvcm1hdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgLy8gIkZvciBlYWNoIHZpZXdGb3JtYXQgaW4gZGVzY3JpcHRvci52aWV3
Rm9ybWF0cyIKICAgICBmb3IgKGF1dG8gdmlld0Zvcm1hdCA6IHZpZXdGb3JtYXRzKSB7Ci0gICAg
ICAgIC8vICJkZXNjcmlwdG9yLmZvcm1hdCBhbmQgdmlld0Zvcm1hdCBtdXN0IGJlIHRleHR1cmUg
dmlldyBmb3JtYXQgY29tcGF0aWJsZS4iCiAgICAgICAgIGlmICghdGV4dHVyZVZpZXdGb3JtYXRD
b21wYXRpYmxlKGRlc2NyaXB0b3IuZm9ybWF0LCB2aWV3Rm9ybWF0KSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC0yMDIyLDE1ICsxOTgwLDEyIEBAIFJlZlB0cjxUZXh0dXJl
PiBEZXZpY2U6OmNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQogCiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdw
dWRldmljZS1jcmVhdGV0ZXh0dXJlCiAKLSAgICAvLyAiSWYgZGVzY3JpcHRvci5mb3JtYXQgaXMg
YSBHUFVUZXh0dXJlRm9ybWF0IHRoYXQgcmVxdWlyZXMgYSBmZWF0dXJlIChzZWUgwqfigK8yNS4x
IFRleHR1cmUgRm9ybWF0IENhcGFiaWxpdGllcykKICAgICBpZiAoZmVhdHVyZVJlcXVpcmVtZW50
Rm9yRm9ybWF0KGRlc2NyaXB0b3IuZm9ybWF0KSkgewogICAgICAgICAvLyBGSVhNRTogImJ1dCB0
aGlzLltbZGV2aWNlXV0uW1tmZWF0dXJlc11dIGRvZXMgbm90IGNvbnRhaW4gdGhlIGZlYXR1cmUs
IHRocm93IGEgVHlwZUVycm9yLiIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0g
ICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50cyBhcmUgdW5tZXQ6Igog
ICAgIGlmICghdmFsaWRhdGVDcmVhdGVUZXh0dXJlKGRlc2NyaXB0b3IsIHZpZXdGb3JtYXRzKSkg
ewotICAgICAgICAvLyAiR2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yLiIKICAgICAgICAgZ2Vu
ZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAg
Ly8gRklYTUU6ICJSZXR1cm4gYSBuZXcgaW52YWxpZCBHUFVUZXh0dXJlLiIKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0yMDk3LDEwICsyMDUyLDYgQEAgUmVmUHRyPFRleHR1cmU+IERldmlj
ZTo6Y3JlYXRlVGV4dHVyZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
CiAKICAgICB0ZXh0dXJlLmxhYmVsID0gZnJvbUFQSShkZXNjcmlwdG9yLmxhYmVsKTsKIAotICAg
IC8vICJMZXQgdCBiZSBhIG5ldyBHUFVUZXh0dXJlIG9iamVjdC4iCi0gICAgLy8gIlNldCB0Lltb
ZGVzY3JpcHRvcl1dIHRvIGRlc2NyaXB0b3IuIgotICAgIC8vICJSZXR1cm4gdC4iCi0KICAgICBy
ZXR1cm4gVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmUsIGRlc2NyaXB0b3IsIFdURk1vdmUodmlld0Zv
cm1hdHMpLCAqdGhpcyk7CiB9CiAKQEAgLTIxMTgsMzYgKzIwNjksMjUgQEAgV0dQVVRleHR1cmVW
aWV3RGVzY3JpcHRvciBUZXh0dXJlOjpyZXNvbHZlVGV4dHVyZVZpZXdEZXNjcmlwdG9yRGVmYXVs
dHMoY29uc3QgV0cKIHsKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNh
YnN0cmFjdC1vcGRlZi1yZXNvbHZpbmctZ3B1dGV4dHVyZXZpZXdkZXNjcmlwdG9yLWRlZmF1bHRz
CiAKLSAgICAvLyAiTGV0IHJlc29sdmVkIGJlIGEgY29weSBvZiBkZXNjcmlwdG9yLiIKICAgICBX
R1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIHJlc29sdmVkID0gZGVzY3JpcHRvcjsKIAotICAgIC8v
ICJJZiByZXNvbHZlZC5mb3JtYXQgaXMgdW5kZWZpbmVkIgotICAgIGlmIChyZXNvbHZlZC5mb3Jt
YXQgPT0gV0dQVVRleHR1cmVGb3JtYXRfVW5kZWZpbmVkKSB7Ci0gICAgICAgIC8vICJzZXQgcmVz
b2x2ZWQuZm9ybWF0IHRvIHRleHR1cmUuW1tkZXNjcmlwdG9yXV0uZm9ybWF0LiIKKyAgICBpZiAo
cmVzb2x2ZWQuZm9ybWF0ID09IFdHUFVUZXh0dXJlRm9ybWF0X1VuZGVmaW5lZCkKICAgICAgICAg
cmVzb2x2ZWQuZm9ybWF0ID0gbV9kZXNjcmlwdG9yLmZvcm1hdDsKLSAgICB9CiAKLSAgICAvLyAi
SWYgcmVzb2x2ZWQubWlwTGV2ZWxDb3VudCBpcyB1bmRlZmluZWQiCiAgICAgaWYgKHJlc29sdmVk
Lm1pcExldmVsQ291bnQgPT0gV0dQVV9NSVBfTEVWRUxfQ09VTlRfVU5ERUZJTkVEKSB7Ci0gICAg
ICAgIC8vICJzZXQgcmVzb2x2ZWQubWlwTGV2ZWxDb3VudCB0byB0ZXh0dXJlLltbZGVzY3JpcHRv
cl1dLm1pcExldmVsQ291bnQg4oiSIHJlc29sdmVkLmJhc2VNaXBMZXZlbC4iCiAgICAgICAgIC8v
IEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgogICAgICAgICByZXNvbHZlZC5taXBMZXZl
bENvdW50ID0gbV9kZXNjcmlwdG9yLm1pcExldmVsQ291bnQgLSByZXNvbHZlZC5iYXNlTWlwTGV2
ZWw7CiAgICAgfQogCi0gICAgLy8gIklmIHJlc29sdmVkLmRpbWVuc2lvbiBpcyB1bmRlZmluZWQi
CiAgICAgaWYgKHJlc29sdmVkLmRpbWVuc2lvbiA9PSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25f
VW5kZWZpbmVkKSB7Ci0gICAgICAgIC8vICJhbmQgdGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS5kaW1l
bnNpb24gaXM6IgogICAgICAgICBzd2l0Y2ggKG1fZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKICAg
ICAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8xRDoKLSAgICAgICAgICAgIC8vICJTZXQg
cmVzb2x2ZWQuZGltZW5zaW9uIHRvICIxZCIuIgogICAgICAgICAgICAgcmVzb2x2ZWQuZGltZW5z
aW9uID0gV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzFEOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fMkQ6Ci0gICAgICAgICAgICAvLyAiU2V0
IHJlc29sdmVkLmRpbWVuc2lvbiB0byAiMmQiLiIKICAgICAgICAgICAgIHJlc29sdmVkLmRpbWVu
c2lvbiA9IFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8yRDsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uXzNEOgotICAgICAgICAgICAgLy8gIlNl
dCByZXNvbHZlZC5kaW1lbnNpb24gdG8gIjNkIi4iCiAgICAgICAgICAgICByZXNvbHZlZC5kaW1l
bnNpb24gPSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fM0Q7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl9Gb3JjZTMyOgpAQCAtMjE1NiwyNiAr
MjA5NiwyMCBAQCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIFRleHR1cmU6OnJlc29sdmVUZXh0
dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0cyhjb25zdCBXRwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgLy8gIklmIHJlc29sdmVkLmFycmF5TGF5ZXJDb3VudCBpcyB1bmRlZmluZWQiCiAgICAgaWYg
KHJlc29sdmVkLmFycmF5TGF5ZXJDb3VudCA9PSBXR1BVX0FSUkFZX0xBWUVSX0NPVU5UX1VOREVG
SU5FRCkgewotICAgICAgICAvLyAiYW5kIHJlc29sdmVkLmRpbWVuc2lvbiBpczoiCiAgICAgICAg
IHN3aXRjaCAocmVzb2x2ZWQuZGltZW5zaW9uKSB7CiAgICAgICAgIGNhc2UgV0dQVVRleHR1cmVW
aWV3RGltZW5zaW9uX1VuZGVmaW5lZDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkOwogICAgICAgICBjYXNlIFdHUFVUZXh0dXJl
Vmlld0RpbWVuc2lvbl8xRDoKICAgICAgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25f
MkQ6CiAgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzNEOgotICAgICAgICAg
ICAgLy8gIlNldCByZXNvbHZlZC5hcnJheUxheWVyQ291bnQgdG8gMS4iCiAgICAgICAgICAgICBy
ZXNvbHZlZC5hcnJheUxheWVyQ291bnQgPSAxOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0N1YmU6Ci0gICAgICAgICAgICAvLyAiU2V0
IHJlc29sdmVkLmFycmF5TGF5ZXJDb3VudCB0byA2LiIKICAgICAgICAgICAgIHJlc29sdmVkLmFy
cmF5TGF5ZXJDb3VudCA9IDY7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BV
VGV4dHVyZVZpZXdEaW1lbnNpb25fMkRBcnJheToKICAgICAgICAgY2FzZSBXR1BVVGV4dHVyZVZp
ZXdEaW1lbnNpb25fQ3ViZUFycmF5OgotICAgICAgICAgICAgLy8gIlNldCByZXNvbHZlZC5hcnJh
eUxheWVyQ291bnQgdG8gdGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS5zaXplLmRlcHRoT3JBcnJheUxh
eWVycyDiiJIgYmFzZUFycmF5TGF5ZXIuIgogICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBjaGVj
a2VkIGFyaXRobWV0aWMKICAgICAgICAgICAgIHJlc29sdmVkLmFycmF5TGF5ZXJDb3VudCA9IG1f
ZGVzY3JpcHRvci5zaXplLmRlcHRoT3JBcnJheUxheWVycyAtIHJlc29sdmVkLmJhc2VBcnJheUxh
eWVyOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTg1LDcgKzIxMTksNiBAQCBXR1BVVGV4dHVy
ZVZpZXdEZXNjcmlwdG9yIFRleHR1cmU6OnJlc29sdmVUZXh0dXJlVmlld0Rlc2NyaXB0b3JEZWZh
dWx0cyhjb25zdCBXRwogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gIlJldHVybiByZXNvbHZl
ZC4iCiAgICAgcmV0dXJuIHJlc29sdmVkOwogfQogCkBAIC0yMTkzLDE2ICsyMTI2LDEyIEBAIHVp
bnQzMl90IFRleHR1cmU6OmFycmF5TGF5ZXJDb3VudCgpIGNvbnN0CiB7CiAgICAgLy8gaHR0cHM6
Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jYWJzdHJhY3Qtb3BkZWYtYXJyYXktbGF5ZXItY291
bnQKIAotICAgIC8vICJJZiB0ZXh0dXJlLltbZGVzY3JpcHRvcl1dLmRpbWVuc2lvbiBpczoiCiAg
ICAgc3dpdGNoIChtX2Rlc2NyaXB0b3IuZGltZW5zaW9uKSB7CiAgICAgY2FzZSBXR1BVVGV4dHVy
ZURpbWVuc2lvbl8xRDoKLSAgICAgICAgLy8gIlJldHVybiAxLiIKICAgICAgICAgcmV0dXJuIDE7
CiAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8yRDoKLSAgICAgICAgLy8gIlJldHVybiB0
ZXh0dXJlLltbZGVzY3JpcHRvcl1dLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzLiIKICAgICAgICAg
cmV0dXJuIG1fZGVzY3JpcHRvci5zaXplLmRlcHRoT3JBcnJheUxheWVyczsKICAgICBjYXNlIFdH
UFVUZXh0dXJlRGltZW5zaW9uXzNEOgotICAgICAgICAvLyAiUmV0dXJuIDEuIgogICAgICAgICBy
ZXR1cm4gMTsKICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uX0ZvcmNlMzI6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjIxNCwxNyArMjE0MywxNCBAQCBib29sIFRleHR1
cmU6OnZhbGlkYXRlQ3JlYXRlVmlldyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKSBjbwogewogICAgIC8vIEZJWE1FOiAidGhpcyBpcyB2YWxpZCIKIAotICAgIC8v
ICJJZiB0aGUgZGVzY3JpcHRvci5hc3BlY3QgaXMiCiAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmFz
cGVjdCkgewogICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3RfQWxsOgogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFdHUFVUZXh0dXJlQXNwZWN0X1N0ZW5jaWxPbmx5OgotICAgICAgICAvLyAidGhp
cy5bW2Rlc2NyaXB0b3JdXS5mb3JtYXQgbXVzdCBiZSBhIGRlcHRoLW9yLXN0ZW5jaWwgZm9ybWF0
IHdoaWNoIGhhcyBhIHN0ZW5jaWwgYXNwZWN0LiIKICAgICAgICAgaWYgKCFjb250YWluc1N0ZW5j
aWxBc3BlY3QobV9kZXNjcmlwdG9yLmZvcm1hdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3RfRGVwdGhPbmx5Ogot
ICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5mb3JtYXQgbXVzdCBiZSBhIGRlcHRoLW9y
LXN0ZW5jaWwgZm9ybWF0IHdoaWNoIGhhcyBhIGRlcHRoIGFzcGVjdC4iCiAgICAgICAgIGlmICgh
Y29udGFpbnNEZXB0aEFzcGVjdChtX2Rlc2NyaXB0b3IuZm9ybWF0KSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CkBAIC0yMjMzLDIwICsyMTU5LDE2IEBAIGJvb2wg
VGV4dHVyZTo6dmFsaWRhdGVDcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0
b3ImIGRlc2NyaXB0b3IpIGNvCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAv
LyAiZGVzY3JpcHRvci5taXBMZXZlbENvdW50IG11c3QgYmUgPiAwLiIKICAgICBpZiAoIWRlc2Ny
aXB0b3IubWlwTGV2ZWxDb3VudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gImRl
c2NyaXB0b3IuYmFzZU1pcExldmVsICsgZGVzY3JpcHRvci5taXBMZXZlbENvdW50IG11c3QgYmUg
4omkIHRoaXMuW1tkZXNjcmlwdG9yXV0ubWlwTGV2ZWxDb3VudC4iCiAgICAgLy8gRklYTUU6IFVz
ZSBjaGVja2VkIGFyaXRobWV0aWMuCiAgICAgaWYgKGRlc2NyaXB0b3IuYmFzZU1pcExldmVsICsg
ZGVzY3JpcHRvci5taXBMZXZlbENvdW50ID4gbV9kZXNjcmlwdG9yLm1pcExldmVsQ291bnQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3Vu
dCBtdXN0IGJlID4gMC4iCiAgICAgaWYgKCFkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gImRlc2NyaXB0b3IuYmFzZUFycmF5TGF5ZXIg
KyBkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCBtdXN0IGJlIOKJpCB0aGUgYXJyYXkgbGF5ZXIg
Y291bnQgb2YgdGhpcy4iCiAgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCiAg
ICAgaWYgKGRlc2NyaXB0b3IuYmFzZUFycmF5TGF5ZXIgKyBkZXNjcmlwdG9yLmFycmF5TGF5ZXJD
b3VudCA+IGFycmF5TGF5ZXJDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjY0
LDY1ICsyMTg2LDUxIEBAIGJvb2wgVGV4dHVyZTo6dmFsaWRhdGVDcmVhdGVWaWV3KGNvbnN0IFdH
UFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvCiAgICAgaWYgKCFmb3VuZEZv
cm1hdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gIklmIGRlc2NyaXB0b3IuZGlt
ZW5zaW9uIGlzOiIKICAgICBzd2l0Y2ggKGRlc2NyaXB0b3IuZGltZW5zaW9uKSB7CiAgICAgY2Fz
ZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fVW5kZWZpbmVkOgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fMUQ6Ci0gICAgICAgIC8vICJ0
aGlzLltbZGVzY3JpcHRvcl1dLmRpbWVuc2lvbiBtdXN0IGJlICIxZCIuIgogICAgICAgICBpZiAo
bV9kZXNjcmlwdG9yLmRpbWVuc2lvbiAhPSBXR1BVVGV4dHVyZURpbWVuc2lvbl8xRCkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyAiZGVzY3JpcHRvci5hcnJheUxheWVy
Q291bnQgbXVzdCBiZSAxLiIKICAgICAgICAgaWYgKGRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50
ICE9IDEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzJEOgotICAgICAgICAvLyAidGhpcy5bW2Rlc2Ny
aXB0b3JdXS5kaW1lbnNpb24gbXVzdCBiZSAiMmQiLiIKICAgICAgICAgaWYgKG1fZGVzY3JpcHRv
ci5kaW1lbnNpb24gIT0gV0dQVVRleHR1cmVEaW1lbnNpb25fMkQpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgLy8gImRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50IG11c3Qg
YmUgMS4iCiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCAhPSAxKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdHUFVUZXh0
dXJlVmlld0RpbWVuc2lvbl8yREFycmF5OgotICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3Jd
XS5kaW1lbnNpb24gbXVzdCBiZSAiMmQiLiIKICAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5kaW1l
bnNpb24gIT0gV0dQVVRleHR1cmVEaW1lbnNpb25fMkQpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0N1
YmU6Ci0gICAgICAgIC8vICJ0aGlzLltbZGVzY3JpcHRvcl1dLmRpbWVuc2lvbiBtdXN0IGJlICIy
ZCIuIgogICAgICAgICBpZiAobV9kZXNjcmlwdG9yLmRpbWVuc2lvbiAhPSBXR1BVVGV4dHVyZURp
bWVuc2lvbl8yRCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyAiZGVz
Y3JpcHRvci5hcnJheUxheWVyQ291bnQgbXVzdCBiZSA2LiIKICAgICAgICAgaWYgKGRlc2NyaXB0
b3IuYXJyYXlMYXllckNvdW50ICE9IDYpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAgICAgLy8gInRoaXMuW1tkZXNjcmlwdG9yXV0uc2l6ZS53aWR0aCBtdXN0IGJlIHRoaXMuW1tk
ZXNjcmlwdG9yXV0uc2l6ZS5oZWlnaHQuIgogICAgICAgICBpZiAobV9kZXNjcmlwdG9yLnNpemUu
d2lkdGggIT0gbV9kZXNjcmlwdG9yLnNpemUuaGVpZ2h0KQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9D
dWJlQXJyYXk6Ci0gICAgICAgIC8vICJ0aGlzLltbZGVzY3JpcHRvcl1dLmRpbWVuc2lvbiBtdXN0
IGJlICIyZCIuIgogICAgICAgICBpZiAobV9kZXNjcmlwdG9yLmRpbWVuc2lvbiAhPSBXR1BVVGV4
dHVyZURpbWVuc2lvbl8yRCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAv
LyAiZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDYuIgog
ICAgICAgICBpZiAoZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgJSA2KQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgIC8vICJ0aGlzLltbZGVzY3JpcHRvcl1dLnNpemUud2lk
dGggbXVzdCBiZSB0aGlzLltbZGVzY3JpcHRvcl1dLnNpemUuaGVpZ2h0LiIKICAgICAgICAgaWYg
KG1fZGVzY3JpcHRvci5zaXplLndpZHRoICE9IG1fZGVzY3JpcHRvci5zaXplLmhlaWdodCkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXR1BVVGV4
dHVyZVZpZXdEaW1lbnNpb25fM0Q6Ci0gICAgICAgIC8vICJ0aGlzLltbZGVzY3JpcHRvcl1dLmRp
bWVuc2lvbiBtdXN0IGJlICIzZCIuIgogICAgICAgICBpZiAobV9kZXNjcmlwdG9yLmRpbWVuc2lv
biAhPSBXR1BVVGV4dHVyZURpbWVuc2lvbl8zRCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICAvLyAiZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgbXVzdCBiZSAxLiIKICAg
ICAgICAgaWYgKGRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50ICE9IDEpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwpAQCAtMjMzOCwxOSArMjI0NiwxNCBAQCBzdGF0
aWMgV0dQVUV4dGVudDNEIGNvbXB1dGVSZW5kZXJFeHRlbnQoY29uc3QgV0dQVUV4dGVudDNEJiBi
YXNlU2l6ZSwgdWludDMyX3QgbQogewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9n
cHV3ZWIvI2Fic3RyYWN0LW9wZGVmLWNvbXB1dGUtcmVuZGVyLWV4dGVudAogCi0gICAgLy8gIkxl
dCBleHRlbnQgYmUgYSBuZXcgR1BVRXh0ZW50M0REaWN0IG9iamVjdC4iCiAgICAgV0dQVUV4dGVu
dDNEIGV4dGVudCB7IH07CiAKLSAgICAvLyAiU2V0IGV4dGVudC53aWR0aCB0byBtYXgoMSwgYmFz
ZVNpemUud2lkdGgg4omrIG1pcExldmVsKS4iCiAgICAgZXh0ZW50LndpZHRoID0gc3RkOjptYXgo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEpLCBiYXNlU2l6ZS53aWR0aCA+PiBtaXBMZXZlbCk7CiAK
LSAgICAvLyAiU2V0IGV4dGVudC5oZWlnaHQgdG8gbWF4KDEsIGJhc2VTaXplLmhlaWdodCDiiasg
bWlwTGV2ZWwpLiIKICAgICBleHRlbnQuaGVpZ2h0ID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KDEpLCBiYXNlU2l6ZS5oZWlnaHQgPj4gbWlwTGV2ZWwpOwogCi0gICAgLy8gIlNldCBl
eHRlbnQuZGVwdGhPckFycmF5TGF5ZXJzIHRvIDEuIgogICAgIGV4dGVudC5kZXB0aE9yQXJyYXlM
YXllcnMgPSAxOwogCi0gICAgLy8gIlJldHVybiBleHRlbnQuIgogICAgIHJldHVybiBleHRlbnQ7
CiB9CiAKQEAgLTIzNjEsMTIgKzIyNjQsOSBAQCBSZWZQdHI8VGV4dHVyZVZpZXc+IFRleHR1cmU6
OmNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgaW5wdXREZQogCiAg
ICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdXRleHR1cmUtY3Jl
YXRldmlldwogCi0gICAgLy8gIlNldCBkZXNjcmlwdG9yIHRvIHRoZSByZXN1bHQgb2YgcmVzb2x2
aW5nIEdQVVRleHR1cmVWaWV3RGVzY3JpcHRvciBkZWZhdWx0cyB3aXRoIGRlc2NyaXB0b3IuIgog
ICAgIGF1dG8gZGVzY3JpcHRvciA9IHJlc29sdmVUZXh0dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0
cyhpbnB1dERlc2NyaXB0b3IpOwogCi0gICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIHJl
cXVpcmVtZW50cyBhcmUgdW5tZXQ6IgogICAgIGlmICghdmFsaWRhdGVDcmVhdGVWaWV3KGRlc2Ny
aXB0b3IpKSB7Ci0gICAgICAgIC8vICJHZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IuIgogICAg
ICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1
cmUuIl9zKTsKIAogICAgICAgICAvLyBGSVhNRTogIlJldHVybiBhIG5ldyBpbnZhbGlkIEdQVVRl
eHR1cmVWaWV3LiIKQEAgLTI0NDUsMTkgKzIzNDUsMTAgQEAgUmVmUHRyPFRleHR1cmVWaWV3PiBU
ZXh0dXJlOjpjcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGlucHV0
RGUKIAogICAgIHRleHR1cmUubGFiZWwgPSBmcm9tQVBJKGRlc2NyaXB0b3IubGFiZWwpOwogCi0g
ICAgLy8gIkxldCB2aWV3IGJlIGEgbmV3IEdQVVRleHR1cmVWaWV3IG9iamVjdC4iCi0gICAgLy8g
IlNldCB2aWV3LltbdGV4dHVyZV1dIHRvIHRoaXMuIgotICAgIC8vICJTZXQgdmlldy5bW2Rlc2Ny
aXB0b3JdXSB0byBkZXNjcmlwdG9yLiIKLQotICAgIC8vICJJZiB0aGlzLltbZGVzY3JpcHRvcl1d
LnVzYWdlIGNvbnRhaW5zIFJFTkRFUl9BVFRBQ0hNRU5UOiIKICAgICBzdGQ6Om9wdGlvbmFsPFdH
UFVFeHRlbnQzRD4gcmVuZGVyRXh0ZW50OwotICAgIGlmICAobV9kZXNjcmlwdG9yLnVzYWdlICYg
V0dQVVRleHR1cmVVc2FnZV9SZW5kZXJBdHRhY2htZW50KSB7Ci0gICAgICAgIC8vICJMZXQgcmVu
ZGVyRXh0ZW50IGJlIGNvbXB1dGUgcmVuZGVyIGV4dGVudCh0aGlzLltbZGVzY3JpcHRvcl1dLnNp
emUsIGRlc2NyaXB0b3IuYmFzZU1pcExldmVsKS4iCi0gICAgICAgIC8vICJTZXQgdmlldy5bW3Jl
bmRlckV4dGVudF1dIHRvIHJlbmRlckV4dGVudC4iCisgICAgaWYgIChtX2Rlc2NyaXB0b3IudXNh
Z2UgJiBXR1BVVGV4dHVyZVVzYWdlX1JlbmRlckF0dGFjaG1lbnQpCiAgICAgICAgIHJlbmRlckV4
dGVudCA9IGNvbXB1dGVSZW5kZXJFeHRlbnQobV9kZXNjcmlwdG9yLnNpemUsIGRlc2NyaXB0b3Iu
YmFzZU1pcExldmVsKTsKLSAgICB9CiAKLSAgICAvLyAiUmV0dXJuIHZpZXcuIgogICAgIHJldHVy
biBUZXh0dXJlVmlldzo6Y3JlYXRlKHRleHR1cmUsIGRlc2NyaXB0b3IsIHJlbmRlckV4dGVudCk7
CiB9CiAKQEAgLTI0NzcsMjcgKzIzNjgsMTggQEAgV0dQVUV4dGVudDNEIFRleHR1cmU6OmxvZ2lj
YWxNaXBsZXZlbFNwZWNpZmljVGV4dHVyZUV4dGVudCh1aW50MzJfdCBtaXBMZXZlbCkKICAgICBz
d2l0Y2ggKG1fZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKICAgICBjYXNlIFdHUFVUZXh0dXJlRGlt
ZW5zaW9uXzFEOgogICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgLy8gIlNldCBleHRlbnQu
d2lkdGggdG8gbWF4KDEsIGRlc2NyaXB0b3Iuc2l6ZS53aWR0aCDiiasgbWlwTGV2ZWwpLiIKICAg
ICAgICAgICAgIHN0ZDo6bWF4KHN0YXRpY19jYXN0PHVpbnQzMl90PigxKSwgbV9kZXNjcmlwdG9y
LnNpemUud2lkdGggPj4gbWlwTGV2ZWwpLAotICAgICAgICAgICAgLy8gIlNldCBleHRlbnQuaGVp
Z2h0IHRvIDEuIgogICAgICAgICAgICAgMSwKLSAgICAgICAgICAgIC8vICJTZXQgZXh0ZW50LmRl
cHRoT3JBcnJheUxheWVycyB0byBkZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzLiIK
ICAgICAgICAgICAgIG1fZGVzY3JpcHRvci5zaXplLmRlcHRoT3JBcnJheUxheWVycyB9OwogICAg
IGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fMkQ6CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAg
ICAgICAvLyAiU2V0IGV4dGVudC53aWR0aCB0byBtYXgoMSwgZGVzY3JpcHRvci5zaXplLndpZHRo
IOKJqyBtaXBMZXZlbCkuIgogICAgICAgICAgICAgc3RkOjptYXgoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KDEpLCBtX2Rlc2NyaXB0b3Iuc2l6ZS53aWR0aCA+PiBtaXBMZXZlbCksCi0gICAgICAgICAg
ICAvLyAiU2V0IGV4dGVudC5oZWlnaHQgdG8gbWF4KDEsIGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQg
4omrIG1pcExldmVsKS4iCiAgICAgICAgICAgICBzdGQ6Om1heChzdGF0aWNfY2FzdDx1aW50MzJf
dD4oMSksIG1fZGVzY3JpcHRvci5zaXplLmhlaWdodCA+PiBtaXBMZXZlbCksCi0gICAgICAgICAg
ICAvLyAiU2V0IGV4dGVudC5kZXB0aE9yQXJyYXlMYXllcnMgdG8gZGVzY3JpcHRvci5zaXplLmRl
cHRoT3JBcnJheUxheWVycy4iCiAgICAgICAgICAgICBtX2Rlc2NyaXB0b3Iuc2l6ZS5kZXB0aE9y
QXJyYXlMYXllcnMgfTsKICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uXzNEOgogICAgICAg
ICByZXR1cm4gewotICAgICAgICAgICAgLy8gIlNldCBleHRlbnQud2lkdGggdG8gbWF4KDEsIGRl
c2NyaXB0b3Iuc2l6ZS53aWR0aCDiiasgbWlwTGV2ZWwpLiIKICAgICAgICAgICAgIHN0ZDo6bWF4
KHN0YXRpY19jYXN0PHVpbnQzMl90PigxKSwgbV9kZXNjcmlwdG9yLnNpemUud2lkdGggPj4gbWlw
TGV2ZWwpLAotICAgICAgICAgICAgLy8gIlNldCBleHRlbnQuaGVpZ2h0IHRvIG1heCgxLCBkZXNj
cmlwdG9yLnNpemUuaGVpZ2h0IOKJqyBtaXBMZXZlbCkuIgogICAgICAgICAgICAgc3RkOjptYXgo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEpLCBtX2Rlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgPj4gbWlw
TGV2ZWwpLAotICAgICAgICAgICAgLy8gIlNldCBleHRlbnQuZGVwdGhPckFycmF5TGF5ZXJzIHRv
IG1heCgxLCBkZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzIOKJqyBtaXBMZXZlbCku
IgogICAgICAgICAgICAgc3RkOjptYXgoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEpLCBtX2Rlc2Ny
aXB0b3Iuc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMgPj4gbWlwTGV2ZWwpIH07CiAgICAgY2FzZSBX
R1BVVGV4dHVyZURpbWVuc2lvbl9Gb3JjZTMyOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTI1MDksMzMgKzIzOTEsMjMgQEAgV0dQVUV4dGVudDNEIFRleHR1cmU6OnBoeXNpY2Fs
TWlwbGV2ZWxTcGVjaWZpY1RleHR1cmVFeHRlbnQodWludDMyX3QgbWlwTGV2ZWwpCiB7CiAgICAg
Ly8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jYWJzdHJhY3Qtb3BkZWYtcGh5c2lj
YWwtbWlwbGV2ZWwtc3BlY2lmaWMtdGV4dHVyZS1leHRlbnQKIAotICAgIC8vICJMZXQgbG9naWNh
bEV4dGVudCBiZSBsb2dpY2FsIG1pcGxldmVsLXNwZWNpZmljIHRleHR1cmUgZXh0ZW50KGRlc2Ny
aXB0b3IsIG1pcExldmVsKS4iCiAgICAgYXV0byBsb2dpY2FsRXh0ZW50ID0gbG9naWNhbE1pcGxl
dmVsU3BlY2lmaWNUZXh0dXJlRXh0ZW50KG1pcExldmVsKTsKIAogICAgIHN3aXRjaCAobV9kZXNj
cmlwdG9yLmRpbWVuc2lvbikgewogICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fMUQ6CiAg
ICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAvLyAiU2V0IGV4dGVudC53aWR0aCB0byBsb2dp
Y2FsRXh0ZW50LndpZHRoIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3QgbXVsdGlwbGUgb2YgZGVz
Y3JpcHRvcuKAmXMgdGV4ZWwgYmxvY2sgd2lkdGguIgogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZih0ZXhlbEJsb2NrV2lkdGgobV9kZXNj
cmlwdG9yLmZvcm1hdCksIGxvZ2ljYWxFeHRlbnQud2lkdGgpKSwKLSAgICAgICAgICAgIC8vICJT
ZXQgZXh0ZW50LmhlaWdodCB0byAxLiIKICAgICAgICAgICAgIDEsCi0gICAgICAgICAgICAvLyAi
U2V0IGV4dGVudC5kZXB0aE9yQXJyYXlMYXllcnMgdG8gbG9naWNhbEV4dGVudC5kZXB0aE9yQXJy
YXlMYXllcnMuIgogICAgICAgICAgICAgbG9naWNhbEV4dGVudC5kZXB0aE9yQXJyYXlMYXllcnMg
fTsKICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uXzJEOgogICAgICAgICByZXR1cm4gewot
ICAgICAgICAgICAgLy8gIlNldCBleHRlbnQud2lkdGggdG8gbG9naWNhbEV4dGVudC53aWR0aCBy
b3VuZGVkIHVwIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIGRlc2NyaXB0b3LigJlzIHRleGVs
IGJsb2NrIHdpZHRoLiIKICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2YodGV4ZWxCbG9ja1dpZHRoKG1fZGVzY3JpcHRvci5mb3JtYXQpLCBs
b2dpY2FsRXh0ZW50LndpZHRoKSksCi0gICAgICAgICAgICAvLyAiU2V0IGV4dGVudC5oZWlnaHQg
dG8gbG9naWNhbEV4dGVudC5oZWlnaHQgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdCBtdWx0aXBs
ZSBvZiBkZXNjcmlwdG9y4oCZcyB0ZXhlbCBibG9jayBoZWlnaHQuIgogICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZih0ZXhlbEJsb2NrSGVp
Z2h0KG1fZGVzY3JpcHRvci5mb3JtYXQpLCBsb2dpY2FsRXh0ZW50LmhlaWdodCkpLAotICAgICAg
ICAgICAgLy8gIlNldCBleHRlbnQuZGVwdGhPckFycmF5TGF5ZXJzIHRvIGxvZ2ljYWxFeHRlbnQu
ZGVwdGhPckFycmF5TGF5ZXJzLiIKICAgICAgICAgICAgIGxvZ2ljYWxFeHRlbnQuZGVwdGhPckFy
cmF5TGF5ZXJzIH07CiAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8zRDoKICAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgICAgIC8vICJTZXQgZXh0ZW50LndpZHRoIHRvIGxvZ2ljYWxFeHRl
bnQud2lkdGggcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiBkZXNjcmlwdG9y
4oCZcyB0ZXhlbCBibG9jayB3aWR0aC4iCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHRleGVsQmxvY2tXaWR0aChtX2Rlc2NyaXB0b3Iu
Zm9ybWF0KSwgbG9naWNhbEV4dGVudC53aWR0aCkpLAotICAgICAgICAgICAgLy8gIlNldCBleHRl
bnQuaGVpZ2h0IHRvIGxvZ2ljYWxFeHRlbnQuaGVpZ2h0IHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJl
c3QgbXVsdGlwbGUgb2YgZGVzY3JpcHRvcuKAmXMgdGV4ZWwgYmxvY2sgaGVpZ2h0LiIKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YodGV4
ZWxCbG9ja0hlaWdodChtX2Rlc2NyaXB0b3IuZm9ybWF0KSwgbG9naWNhbEV4dGVudC5oZWlnaHQp
KSwKLSAgICAgICAgICAgIC8vICJTZXQgZXh0ZW50LmRlcHRoT3JBcnJheUxheWVycyB0byBsb2dp
Y2FsRXh0ZW50LmRlcHRoT3JBcnJheUxheWVycy4iCiAgICAgICAgICAgICBsb2dpY2FsRXh0ZW50
LmRlcHRoT3JBcnJheUxheWVycyB9OwogICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fRm9y
Y2UzMjoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNTQ3LDcgKzI0MTksNiBA
QCBzdGF0aWMgV0dQVUV4dGVudDNEIGltYWdlQ29weVRleHR1cmVTdWJyZXNvdXJjZVNpemUoY29u
c3QgV0dQVUltYWdlQ29weVRleHR1cmUmCiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHVi
LmlvL2dwdXdlYi8jaW1hZ2Vjb3B5dGV4dHVyZS1zdWJyZXNvdXJjZS1zaXplCiAKLSAgICAvLyAi
SXRzIHdpZHRoLCBoZWlnaHQgYW5kIGRlcHRoT3JBcnJheUxheWVycyBhcmUgdGhlIHdpZHRoLCBo
ZWlnaHQsIGFuZCBkZXB0aCwgcmVzcGVjdGl2ZWx5LCBvZiB0aGUgcGh5c2ljYWwgc2l6ZSBvZiBp
bWFnZUNvcHlUZXh0dXJlLnRleHR1cmUgc3VicmVzb3VyY2UgYXQgbWlwbWFwIGxldmVsIGltYWdl
Q29weVRleHR1cmUubWlwTGV2ZWwuIgogICAgIHJldHVybiBmcm9tQVBJKGltYWdlQ29weVRleHR1
cmUudGV4dHVyZSkucGh5c2ljYWxNaXBsZXZlbFNwZWNpZmljVGV4dHVyZUV4dGVudChpbWFnZUNv
cHlUZXh0dXJlLm1pcExldmVsKTsKIH0KIApAQCAtMjU1NSwzMSArMjQyNiwyMyBAQCBib29sIFRl
eHR1cmU6OnZhbGlkYXRlSW1hZ2VDb3B5VGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVy
ZSYgaW1hZ2VDb3B5VGV4dAogewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3
ZWIvI2Fic3RyYWN0LW9wZGVmLXZhbGlkYXRpbmctZ3B1aW1hZ2Vjb3B5dGV4dHVyZQogCi0gICAg
Ly8gImJsb2NrV2lkdGggYmUgdGhlIHRleGVsIGJsb2NrIHdpZHRoIG9mIGltYWdlQ29weVRleHR1
cmUudGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS5mb3JtYXQuIgogICAgIHVpbnQzMl90IGJsb2NrV2lk
dGggPSBUZXh0dXJlOjp0ZXhlbEJsb2NrV2lkdGgoZnJvbUFQSShpbWFnZUNvcHlUZXh0dXJlLnRl
eHR1cmUpLmRlc2NyaXB0b3IoKS5mb3JtYXQpOwogCi0gICAgLy8gImJsb2NrSGVpZ2h0IGJlIHRo
ZSB0ZXhlbCBibG9jayBoZWlnaHQgb2YgaW1hZ2VDb3B5VGV4dHVyZS50ZXh0dXJlLltbZGVzY3Jp
cHRvcl1dLmZvcm1hdC4iCiAgICAgdWludDMyX3QgYmxvY2tIZWlnaHQgPSBUZXh0dXJlOjp0ZXhl
bEJsb2NrSGVpZ2h0KGZyb21BUEkoaW1hZ2VDb3B5VGV4dHVyZS50ZXh0dXJlKS5kZXNjcmlwdG9y
KCkuZm9ybWF0KTsKIAogICAgIC8vIEZJWE1FOiAiaW1hZ2VDb3B5VGV4dHVyZS50ZXh0dXJlIG11
c3QgYmUgYSB2YWxpZCBHUFVUZXh0dXJlLiIKIAotICAgIC8vICJpbWFnZUNvcHlUZXh0dXJlLm1p
cExldmVsIG11c3QgYmUgbGVzcyB0aGFuIHRoZSBbW2Rlc2NyaXB0b3JdXS5taXBMZXZlbENvdW50
IG9mIGltYWdlQ29weVRleHR1cmUudGV4dHVyZS4iCiAgICAgaWYgKGltYWdlQ29weVRleHR1cmUu
bWlwTGV2ZWwgPj0gZnJvbUFQSShpbWFnZUNvcHlUZXh0dXJlLnRleHR1cmUpLmRlc2NyaXB0b3Io
KS5taXBMZXZlbENvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAiaW1hZ2VD
b3B5VGV4dHVyZS5vcmlnaW4ueCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgYmxvY2tXaWR0aC4iCiAg
ICAgaWYgKGltYWdlQ29weVRleHR1cmUub3JpZ2luLnggJSBibG9ja1dpZHRoKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAvLyAiaW1hZ2VDb3B5VGV4dHVyZS5vcmlnaW4ueSBtdXN0IGJl
IGEgbXVsdGlwbGUgb2YgYmxvY2tIZWlnaHQuIgogICAgIGlmIChpbWFnZUNvcHlUZXh0dXJlLm9y
aWdpbi55ICUgYmxvY2tIZWlnaHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vICJp
bWFnZUNvcHlUZXh0dXJlLnRleHR1cmUuW1tkZXNjcmlwdG9yXV0uZm9ybWF0IGlzIGEgZGVwdGgt
c3RlbmNpbCBmb3JtYXQuIgotICAgIC8vICJpbWFnZUNvcHlUZXh0dXJlLnRleHR1cmUuW1tkZXNj
cmlwdG9yXV0uc2FtcGxlQ291bnQgaXMgZ3JlYXRlciB0aGFuIDEuIgogICAgIGlmIChUZXh0dXJl
Ojppc0RlcHRoT3JTdGVuY2lsRm9ybWF0KGZyb21BUEkoaW1hZ2VDb3B5VGV4dHVyZS50ZXh0dXJl
KS5kZXNjcmlwdG9yKCkuZm9ybWF0KQogICAgICAgICB8fCBmcm9tQVBJKGltYWdlQ29weVRleHR1
cmUudGV4dHVyZSkuZGVzY3JpcHRvcigpLnNhbXBsZUNvdW50ID4gMSkgewotICAgICAgICAvLyAi
VGhlIGltYWdlQ29weVRleHR1cmUgc3VicmVzb3VyY2Ugc2l6ZSBvZiBpbWFnZUNvcHlUZXh0dXJl
IGlzIGVxdWFsIHRvIGNvcHlTaXplIgogICAgICAgICBhdXRvIHN1YnJlc291cmNlU2l6ZSA9IGlt
YWdlQ29weVRleHR1cmVTdWJyZXNvdXJjZVNpemUoaW1hZ2VDb3B5VGV4dHVyZSk7CiAgICAgICAg
IGlmIChzdWJyZXNvdXJjZVNpemUud2lkdGggIT0gY29weVNpemUud2lkdGgKICAgICAgICAgICAg
IHx8IHN1YnJlc291cmNlU2l6ZS5oZWlnaHQgIT0gY29weVNpemUuaGVpZ2h0CkBAIC0yODQ1LDM1
ICsyNzA4LDI3IEBAIGJvb2wgVGV4dHVyZTo6dmFsaWRhdGVUZXh0dXJlQ29weVJhbmdlKGNvbnN0
IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBpbWFnZUNvcHlUZXh0CiB7CiAgICAgLy8gaHR0cHM6Ly9n
cHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jdmFsaWRhdGluZy10ZXh0dXJlLWNvcHktcmFuZ2UKIAot
ICAgIC8vICJMZXQgYmxvY2tXaWR0aCBiZSB0aGUgdGV4ZWwgYmxvY2sgd2lkdGggb2YgaW1hZ2VD
b3B5VGV4dHVyZS50ZXh0dXJlLltbZGVzY3JpcHRvcl1dLmZvcm1hdC4iCiAgICAgYXV0byBibG9j
a1dpZHRoID0gVGV4dHVyZTo6dGV4ZWxCbG9ja1dpZHRoKGZyb21BUEkoaW1hZ2VDb3B5VGV4dHVy
ZS50ZXh0dXJlKS5kZXNjcmlwdG9yKCkuZm9ybWF0KTsKIAotICAgIC8vICJMZXQgYmxvY2tIZWln
aHQgYmUgdGhlIHRleGVsIGJsb2NrIGhlaWdodCBvZiBpbWFnZUNvcHlUZXh0dXJlLnRleHR1cmUu
W1tkZXNjcmlwdG9yXV0uZm9ybWF0LiIKICAgICBhdXRvIGJsb2NrSGVpZ2h0ID0gVGV4dHVyZTo6
dGV4ZWxCbG9ja0hlaWdodChmcm9tQVBJKGltYWdlQ29weVRleHR1cmUudGV4dHVyZSkuZGVzY3Jp
cHRvcigpLmZvcm1hdCk7CiAKLSAgICAvLyAiTGV0IHN1YnJlc291cmNlU2l6ZSBiZSB0aGUgaW1h
Z2VDb3B5VGV4dHVyZSBzdWJyZXNvdXJjZSBzaXplIG9mIGltYWdlQ29weVRleHR1cmUuIgogICAg
IGF1dG8gc3VicmVzb3VyY2VTaXplID0gaW1hZ2VDb3B5VGV4dHVyZVN1YnJlc291cmNlU2l6ZShp
bWFnZUNvcHlUZXh0dXJlKTsKIAotICAgIC8vICIoaW1hZ2VDb3B5VGV4dHVyZS5vcmlnaW4ueCAr
IGNvcHlTaXplLndpZHRoKSDiiaQgc3VicmVzb3VyY2VTaXplLndpZHRoIgogICAgIC8vIEZJWE1F
OiBVc2VkIGNoZWNrZWQgYXJpdGhtZXRpYwogICAgIGlmIChpbWFnZUNvcHlUZXh0dXJlLm9yaWdp
bi54ICsgY29weVNpemUud2lkdGggPiBzdWJyZXNvdXJjZVNpemUud2lkdGgpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIC8vICIoaW1hZ2VDb3B5VGV4dHVyZS5vcmlnaW4ueSArIGNvcHlT
aXplLmhlaWdodCkg4omkIHN1YnJlc291cmNlU2l6ZS5oZWlnaHQiCiAgICAgLy8gRklYTUU6IFVz
ZWQgY2hlY2tlZCBhcml0aG1ldGljCiAgICAgaWYgKChpbWFnZUNvcHlUZXh0dXJlLm9yaWdpbi55
ICsgY29weVNpemUuaGVpZ2h0KSA+IHN1YnJlc291cmNlU2l6ZS5oZWlnaHQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIC8vICIoaW1hZ2VDb3B5VGV4dHVyZS5vcmlnaW4ueiArIGNvcHlT
aXplLmRlcHRoT3JBcnJheUxheWVycykg4omkIHN1YnJlc291cmNlU2l6ZS5kZXB0aE9yQXJyYXlM
YXllcnMiCiAgICAgLy8gRklYTUU6IFVzZWQgY2hlY2tlZCBhcml0aG1ldGljCiAgICAgaWYgKChp
bWFnZUNvcHlUZXh0dXJlLm9yaWdpbi56ICsgY29weVNpemUuZGVwdGhPckFycmF5TGF5ZXJzKSA+
IHN1YnJlc291cmNlU2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIC8vICJjb3B5U2l6ZS53aWR0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgYmxvY2tX
aWR0aC4iCiAgICAgaWYgKGNvcHlTaXplLndpZHRoICUgYmxvY2tXaWR0aCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgLy8gImNvcHlTaXplLmhlaWdodCBtdXN0IGJlIGEgbXVsdGlwbGUg
b2YgYmxvY2tIZWlnaHQuIgogICAgIGlmIChjb3B5U2l6ZS5oZWlnaHQgJSBibG9ja0hlaWdodCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yODg0LDg4ICsyNzM5LDYyIEBAIGJvb2wgVGV4
dHVyZTo6dmFsaWRhdGVMaW5lYXJUZXh0dXJlRGF0YShjb25zdCBXR1BVVGV4dHVyZURhdGFMYXlv
dXQmIGxheW91dCwgdWluCiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdl
Yi8jYWJzdHJhY3Qtb3BkZWYtdmFsaWRhdGluZy1saW5lYXItdGV4dHVyZS1kYXRhCiAKLSAgICAv
LyAiTGV0IGJsb2NrV2lkdGgsIGJsb2NrSGVpZ2h0LCBhbmQgYmxvY2tTaXplIGJlIHRoZSB0ZXhl
bCBibG9jayB3aWR0aCwgaGVpZ2h0LCBhbmQgc2l6ZSBvZiBmb3JtYXQuIgogICAgIHVpbnQzMl90
IGJsb2NrV2lkdGggPSBUZXh0dXJlOjp0ZXhlbEJsb2NrV2lkdGgoZm9ybWF0KTsKICAgICB1aW50
MzJfdCBibG9ja0hlaWdodCA9IFRleHR1cmU6OnRleGVsQmxvY2tIZWlnaHQoZm9ybWF0KTsKICAg
ICB1aW50MzJfdCBibG9ja1NpemUgPSBUZXh0dXJlOjp0ZXhlbEJsb2NrU2l6ZShmb3JtYXQpOwog
Ci0gICAgLy8gIkl0IGlzIGFzc3VtZWQgdGhhdCBjb3B5RXh0ZW50LndpZHRoIGlzIGEgbXVsdGlw
bGUgb2YgYmxvY2tXaWR0aCBhbmQgY29weUV4dGVudC5oZWlnaHQgaXMgYSBtdWx0aXBsZSBvZiBi
bG9ja0hlaWdodC4iCi0KLSAgICAvLyAid2lkdGhJbkJsb2NrcyBiZSBjb3B5RXh0ZW50LndpZHRo
IMO3IGJsb2NrV2lkdGguIgogICAgIGF1dG8gd2lkdGhJbkJsb2NrcyA9IGNvcHlFeHRlbnQud2lk
dGggLyBibG9ja1dpZHRoOwogCi0gICAgLy8gImhlaWdodEluQmxvY2tzIGJlIGNvcHlFeHRlbnQu
aGVpZ2h0IMO3IGJsb2NrSGVpZ2h0LiIKICAgICBhdXRvIGhlaWdodEluQmxvY2tzID0gY29weUV4
dGVudC5oZWlnaHQgLyBibG9ja0hlaWdodDsKIAotICAgIC8vICJieXRlc0luTGFzdFJvdyBiZSBi
bG9ja1NpemUgw5cgd2lkdGhJbkJsb2Nrcy4iCiAgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFy
aXRobWV0aWMuCiAgICAgYXV0byBieXRlc0luTGFzdFJvdyA9IGJsb2NrU2l6ZSAqIHdpZHRoSW5C
bG9ja3M7CiAKLSAgICAvLyAiSWYgaGVpZ2h0SW5CbG9ja3MgPiAxIgogICAgIGlmIChoZWlnaHRJ
bkJsb2NrcyA+IDEpIHsKLSAgICAgICAgLy8gImxheW91dC5ieXRlc1BlclJvdyBtdXN0IGJlIHNw
ZWNpZmllZC4iCiAgICAgICAgIGlmIChsYXlvdXQuYnl0ZXNQZXJSb3cgPT0gV0dQVV9DT1BZX1NU
UklERV9VTkRFRklORUQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
Ly8gIklmIGNvcHlFeHRlbnQuZGVwdGhPckFycmF5TGF5ZXJzID4gMSIKICAgICBpZiAoY29weUV4
dGVudC5kZXB0aE9yQXJyYXlMYXllcnMgPiAxKSB7Ci0gICAgICAgIC8vICJsYXlvdXQuYnl0ZXNQ
ZXJSb3cgYW5kIGxheW91dC5yb3dzUGVySW1hZ2UgbXVzdCBiZSBzcGVjaWZpZWQuIgogICAgICAg
ICBpZiAobGF5b3V0LmJ5dGVzUGVyUm93ID09IFdHUFVfQ09QWV9TVFJJREVfVU5ERUZJTkVEIHx8
IGxheW91dC5yb3dzUGVySW1hZ2UgPT0gV0dQVV9DT1BZX1NUUklERV9VTkRFRklORUQpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gIklmIHNwZWNpZmllZCIKICAg
ICBpZiAobGF5b3V0LmJ5dGVzUGVyUm93ICE9IFdHUFVfQ09QWV9TVFJJREVfVU5ERUZJTkVEKSB7
Ci0gICAgICAgIC8vICJsYXlvdXQuYnl0ZXNQZXJSb3cgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3Ig
ZXF1YWwgdG8gYnl0ZXNJbkxhc3RSb3cuIgogICAgICAgICBpZiAobGF5b3V0LmJ5dGVzUGVyUm93
IDwgYnl0ZXNJbkxhc3RSb3cpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgLy8gIklmIHNwZWNpZmllZCIKICAgICBpZiAobGF5b3V0LnJvd3NQZXJJbWFnZSAhPSBXR1BV
X0NPUFlfU1RSSURFX1VOREVGSU5FRCkgewotICAgICAgICAvLyAibGF5b3V0LnJvd3NQZXJJbWFn
ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBoZWlnaHRJbkJsb2Nrcy4iCiAgICAg
ICAgIGlmIChsYXlvdXQucm93c1BlckltYWdlIDwgaGVpZ2h0SW5CbG9ja3MpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gIkxldCByZXF1aXJlZEJ5dGVzSW5Db3B5
IGJlIDAuIgogICAgIHVpbnQ2NF90IHJlcXVpcmVkQnl0ZXNJbkNvcHkgPSAwOwogCi0gICAgLy8g
IklmIGNvcHlFeHRlbnQuZGVwdGhPckFycmF5TGF5ZXJzID4gMToiCiAgICAgaWYgKGNvcHlFeHRl
bnQuZGVwdGhPckFycmF5TGF5ZXJzID4gMSkgewotICAgICAgICAvLyAiTGV0IGJ5dGVzUGVySW1h
Z2UgYmUgbGF5b3V0LmJ5dGVzUGVyUm93IMOXIGxheW91dC5yb3dzUGVySW1hZ2UuIgogICAgICAg
ICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICAgICAgYXV0byBieXRlc1Bl
ckltYWdlID0gbGF5b3V0LmJ5dGVzUGVyUm93ICogbGF5b3V0LnJvd3NQZXJJbWFnZTsKIAotICAg
ICAgICAvLyAiTGV0IGJ5dGVzQmVmb3JlTGFzdEltYWdlIGJlIGJ5dGVzUGVySW1hZ2Ugw5cgKGNv
cHlFeHRlbnQuZGVwdGhPckFycmF5TGF5ZXJzIOKIkiAxKS4iCiAgICAgICAgIC8vIEZJWE1FOiBV
c2UgY2hlY2tlZCBhcml0aG1ldGljLgogICAgICAgICBhdXRvIGJ5dGVzQmVmb3JlTGFzdEltYWdl
ID0gYnl0ZXNQZXJJbWFnZSAqIChjb3B5RXh0ZW50LmRlcHRoT3JBcnJheUxheWVycyAtIDEpOwog
Ci0gICAgICAgIC8vICJBZGQgYnl0ZXNCZWZvcmVMYXN0SW1hZ2UgdG8gcmVxdWlyZWRCeXRlc0lu
Q29weS4iCiAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgogICAgICAg
ICByZXF1aXJlZEJ5dGVzSW5Db3B5ICs9IGJ5dGVzQmVmb3JlTGFzdEltYWdlOwogICAgIH0KIAot
ICAgIC8vICJJZiBjb3B5RXh0ZW50LmRlcHRoT3JBcnJheUxheWVycyA+IDA6IgogICAgIGlmIChj
b3B5RXh0ZW50LmRlcHRoT3JBcnJheUxheWVycyA+IDApIHsKLSAgICAgICAgLy8gIklmIGhlaWdo
dEluQmxvY2tzID4gMSIKICAgICAgICAgaWYgKGhlaWdodEluQmxvY2tzID4gMSkgewotICAgICAg
ICAgICAgLy8gImFkZCBsYXlvdXQuYnl0ZXNQZXJSb3cgw5cgKGhlaWdodEluQmxvY2tzIOKIkiAx
KSB0byByZXF1aXJlZEJ5dGVzSW5Db3B5LiIKICAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hl
Y2tlZCBhcml0aG1ldGljLgogICAgICAgICAgICAgcmVxdWlyZWRCeXRlc0luQ29weSArPSBsYXlv
dXQuYnl0ZXNQZXJSb3cgKiAoaGVpZ2h0SW5CbG9ja3MgLSAxKTsKICAgICAgICAgfQogCi0gICAg
ICAgIC8vICJJZiBoZWlnaHRJbkJsb2NrcyA+IDAiCiAgICAgICAgIGlmIChoZWlnaHRJbkJsb2Nr
cyA+IDApIHsKLSAgICAgICAgICAgIC8vICJhZGQgYnl0ZXNJbkxhc3RSb3cgdG8gcmVxdWlyZWRC
eXRlc0luQ29weS4iCiAgICAgICAgICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRp
Yy4KICAgICAgICAgICAgIHJlcXVpcmVkQnl0ZXNJbkNvcHkgKz0gYnl0ZXNJbkxhc3RSb3c7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICAvLyAiRmFpbCBpZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG5vdCBzYXRpc2ZpZWQ6IgotICAgIC8vICJsYXlvdXQub2Zmc2V0ICsgcmVxdWlyZWRC
eXRlc0luQ29weSDiiaQgYnl0ZVNpemUuIgogICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0
aG1ldGljLgogICAgIGlmIChsYXlvdXQub2Zmc2V0ICsgcmVxdWlyZWRCeXRlc0luQ29weSA+IGJ5
dGVTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7Cg==
</data>
<flag name="review"
          id="484857"
          type_id="1"
          status="+"
          setter="kkinnunen"
    />
          </attachment>
      

    </bug>

</bugzilla>